Compartilhar via


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 (por exemplo, condições de marca no nível da tabela). Para MATCH COLUMNS: uma expressão booliana que corresponde a colunas (por exemplo, has_tag('tag_name')). 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(), , has_tag_value()e has_column_tag()has_column_tag_value(). Os formulários camelCase mais antigos (hasTag, , hasTagValue, hasColumnTag, hasColumnTagValue) continuam a funcionar 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);