CRIAR POLÍTICA

Aplica-se a:Marcado como sim Databricks SQL Marcado como sim Databricks Runtime 16.4 e acima Marcado como sim Somente Unity Catalog

Cria uma política nomeada em um protegível. As políticas podem ser filtros de linha ou máscaras de coluna aplicadas a catálogos, esquemas ou tabelas. O nome da política tem como escopo o protegível em que a política está definida.

Para executar essa instrução, você deve ter o MANAGE privilégio no destino protegível ou ser seu proprietário.

Sintaxe

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 [, ...] ) ]

Parâmetros

  • policy_name

    O nome da política. O nome tem como escopo o protegível em que a política está definida. Se uma política com o mesmo nome já existir e OR REPLACE não for especificada, o Azure Databricks gerará POLICY_ALREADY_EXISTS.

  • catalog_name

    O nome do catálogo no qual a política é definida. Se o tipo protegível não tiver suporte para políticas, o Azure Databricks gerará POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    O nome do esquema no qual a política é definida.

  • table_name

    O nome da tabela na qual a política é definida.

  • descrição

    Um comentário de cadeia de caracteres opcional para a política.

  • function_name

    O nome da UDF usada para o filtro de linha ou máscara de coluna.

  • principal

    Um nome de usuário, grupo ou entidade de serviço. Várias entidades de segurança podem ser listadas após TO. As entidades de segurança listadas depois EXCEPT são excluídas da política.

  • Condição

    Para WHEN: uma expressão booliana que corresponde a protegíveis com base em suas marcas (por exemplo, has_tag('sensitivity')). Para MATCH COLUMNS: uma expressão booliana que corresponde a colunas com base em suas marcas (por exemplo, has_tag('pii')). As condições são avaliadas pelo plano de controle em metadados protegíveis. As únicas funções voltadas para o usuário com suporte em condições são has_tag() e has_tag_value(). Quando usadas, WHENessas funções verificam as marcas definidas diretamente na tabela ou herdadas de um catálogo ou esquema pai. Quando usados, MATCH COLUMNSeles verificam as marcas definidas diretamente apenas na coluna. Os formulários camelCase mais antigos (hasTag, hasTagValue) continuam funcionando para compatibilidade com versões anteriores. Se a condição for inválida, o Azure Databricks gerará UC_INVALID_POLICY_CONDITION.

  • alias

    In MATCH COLUMNS, um identificador opcional para a coluna correspondente. O alias pode ser referenciado em USING COLUMNS (filtro de linha) ou dentro ON COLUMN e USING COLUMNS (máscara de coluna).

  • function_arg

    Em USING COLUMNS, cada argumento é uma expressão constante ou um alias de MATCH COLUMNS. Os argumentos são passados para a função de política em ordem. Se as opções não corresponderem ao tipo de política, o Azure Databricks gerará UC_POLICY_TYPE_OPTIONS_MISMATCH.

Exemplos

O exemplo a seguir cria uma política de máscara de coluna:

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

O exemplo a seguir cria uma política de filtro de linha:

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