СОЗДАТЬ ПОЛИТИКУ

Применяется к:отмечено да Databricks SQL отмечено да Databricks Runtime 16.4 и выше только каталог Unity отмечен.

Создает именованную политику для защищаемого объекта. Политики могут быть фильтрами строк, столбцовыми масками или ABAC-политикамиGRANT. Фильтры строк и маски столбцов применяются к каталогам, схемам или таблицам и доступны в Databricks Runtime 16.4 и выше. Политики ABAC GRANT применяются к каталогам или схемам и динамически предоставляют привилегии на защищённые объекты, на которые они нацелены. Вы также можете добавить политику к метамагазину, чтобы она применялась ко всем каталогам в метамагазине. См. политики ABAC уровня Metastore (бета). Имя политики распространяется на защищаемую политику.

Для выполнения этой инструкции необходимо иметь MANAGE привилегии для защищаемого целевого объекта или быть его владельцем. Чтобы создать политику ON METASTORE (бета), вы должны быть администратором метамагазина.

Создание, изменение или отказ от политики ABAC GRANT ( DENY Beta) с SQL требует Databricks Runtime 18 LTS и выше. В SQL-складах поддержка зависит от канала релиза склада. Смотрите требования к вычислению дляGRANT политик и DENY политик.

Для создания, изменения или отказа от политики на уровне метамагазина (Beta) с SQL требуется Databricks Runtime 19 и выше. См. требования к вычислениям.

Замечание

Databricks Runtime 18 является более новым, чем Databricks Runtime 18.0, 18.1 и 18.2. Функции, которые раньше выпускались бы в более поздних номерных версиях, теперь вместо этого выпускаются в виде датированных обновлений для Databricks Runtime 18. Дополнительные сведения см. в статье Об унифицированных примечаниях к выпуску.

Синтаксис

CREATE [ OR REPLACE ] POLICY policy_name
ON { METASTORE | CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_body | grant_policy_body }

row_filter_body
  ROW FILTER function_name
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  FOR TABLES
  [ WHEN condition ]
  [ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
  [ USING COLUMNS ( function_arg [, ...] ) ]

column_mask_body
  COLUMN MASK function_name
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  FOR TABLES
  [ WHEN condition ]
  [ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
  ON COLUMN alias
  [ USING COLUMNS ( function_arg [, ...] ) ]

grant_policy_body
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  GRANT privilege [, ...]
  FOR grant_target_type
  [ WHEN condition ]

Политики фильтрации строк и маски столбцов могут быть определены в метамагазине (Beta), каталоге, схеме или таблице. GRANT Политики могут быть определены в метамагазине, каталоге или схеме. ON METASTORE Без названия и нацелено на тот Metastore, в котором вы сейчас работаете.

Параметры

  • policy_name

    Имя политики. Имя определяется защищаемой политикой. Если политика с тем же именем уже существует и OR REPLACE не указана, Azure Databricks вызывает POLICY_ALREADY_EXISTS.

  • catalog_name

    Имя каталога, в котором определена политика. Если защищаемый тип не поддерживается для политик, Azure Databricks вызывает POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    Имя схемы, в которой определена политика.

  • table_name

    Имя таблицы, в которой определена политика.

  • описание

    Необязательный строковый комментарий для политики.

  • function_name

    Имя UDF, используемого для фильтра строк или маски столбцов.

  • привилегия

    В grant_policy_body, привилегия предоставлять по каждому обеспеченному платежу, соответствующему полису. Действительные привилегии зависят от grant_target_type. См. раздел Поддерживаемые защищённые типы и привилегии.

  • grant_target_type

    В , тип гарантируемых объектов, к grant_policy_bodyкоторому применяются предоставленные привилегии. Используйте форму множественного числа: MODELS, MODEL SERVICES, MODEL PROVIDER SERVICESMCP SERVICESAGENT SERVICES , , (Beta) или SKILLS (Beta). Подчёркнутая форма, такая MODEL_SERVICESкак , также принимается. Формы единственного числа не принимаются.

  • principal

    Имя пользователя, группы или субъекта-службы. После этого можно указать TOнесколько субъектов. Субъекты, перечисленные после EXCEPT исключения из политики.

  • Состояние

    WHEN — это булевое выражение, которое определяет, применима ли политика, исходя из тегов защищённого устройства, атрибутов идентификации пользователя, использующего запрос, и/или контекста запроса.

    MATCH COLUMNS — булево выражение, которое совпадает с столбцами на основе их тегов (например, has_tag('pii')).

    Условия оцениваются управляющей плоскостью. Следующие функции поддерживаются в условиях:

    • Функции тегов (has_tag() и has_tag_value()): поддерживаются в обоих WHEN и MATCH COLUMNS. При использовании в WHEN, они проверяют теги, установленные непосредственно на таблице или унаследованные из родительского каталога или схемы. При использовании MATCH COLUMNSони проверяют теги, заданные только в столбце. Старые формы верблюжьего регистра (hasTag, hasTagValue) продолжают работать для обратной совместимости.
    • Функции атрибутов идентичности (has_identity_attribute_value() и has_identity_attribute_tag_match()): поддерживаются WHEN в клаузе политики столбцов маски, где они оценивают атрибуты идентичности пользователя, выполняющего запрос. Они не поддерживаются в GRANT или DENY политиках, или в MATCH COLUMNS. См. Маскировать столбец на основе атрибутов пользователя, отправляющего запрос.
    • Функции атрибутов контекста (has_context_attribute() и has_context_attribute_value()): поддерживаются WHEN в клаузуле фильтра строк и политик маски столбцов, где они оценивают контекст запроса, например, вызывающее приложение. Они не поддерживаются в MATCH COLUMNS. См. Ограничение доступа для внешних агентов, действующих от имени пользователя.

    Если условие недопустимо, Azure Databricks вызывает UC_INVALID_POLICY_CONDITION.

  • alias

    В MATCH COLUMNS, необязательный идентификатор для соответствующего столбца. Псевдоним можно ссылаться на USING COLUMNS (фильтр строк) или в ON COLUMN и USING COLUMNS (маску столбца).

  • function_arg

    В USING COLUMNSкаждом аргументе является либо константное выражение , либо псевдоним из MATCH COLUMNS. Аргументы передаются в функцию политики в порядке. Если параметры не соответствуют типу политики, Azure Databricks вызывает UC_POLICY_TYPE_OPTIONS_MISMATCH.

Примеры

В следующем примере создается политика маски столбцов:

> CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
    RETURN right(ssn, nr);

> CREATE POLICY ssn_mask
    ON CATALOG employees
    COLUMN MASK ssn_to_last_nr
    TO 'All Users' EXCEPT 'HR admins'
    FOR TABLES
    MATCH COLUMNS has_tag('ssn') AS ssn
    ON COLUMN ssn
    USING COLUMNS (4);

В следующем примере создается политика фильтрации строк:

> CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
    RETURN geo_region <> 'eu';

> CREATE POLICY hide_eu_customers
    ON SCHEMA prod.customers
    COMMENT 'Hide European customers from sensitive tables'
    ROW FILTER non_eu_region
    TO analysts
    FOR TABLES
    WHEN has_tag_value('sensitivity', 'high')
    MATCH COLUMNS has_tag('geo_region') AS region
    USING COLUMNS (region);

Следующий пример создаёт политику ABACGRANT, которая предоставляет EXECUTE гранты на каждую модельную услугу, созданную Anthropic:

> CREATE POLICY grant_anthropic_model_services
    ON SCHEMA system.ai
    COMMENT 'Grant EXECUTE on Anthropic model services'
    TO data_scientists
    EXCEPT contractors
    GRANT EXECUTE FOR MODEL SERVICES
    WHEN has_tag_value('ai.model_creator', 'anthropic');