Поделиться через


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

Применяется к:отмечено да 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('tag_name')). Условия оцениваются уровнем управления на защищаемых метаданных. Единственными пользовательскими функциями, поддерживаемыми в условиях, являются has_tag(), has_tag_value()has_column_tag()и has_column_tag_value(). Старые формы верблюжьего регистра (hasTag, hasTagValue, hasColumnTag, ) hasColumnTagValueпродолжают работать для обратной совместимости. Если условие недопустимо, 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);