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

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

Создает именованную политику для защищаемого объекта. Политики могут быть фильтрами строк или масками столбцов, применяемыми к каталогам, схемам или таблицам. Имя политики распространяется на защищаемую политику.

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

Синтаксис

CREATE [ OR REPLACE ] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_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 [, ...] ) ]

Параметры

  • 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, используемого для фильтра строк или маски столбцов.

  • 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);