CRIAR POLÍTICA

Aplica-se a:marcar marcado sim Databricks SQL verificação marcada sim Databricks Runtime 16.4 e superior marcar sim Unity Catalog apenas

Cria uma apólice nomeada sobre um segurável. As políticas podem ser filtros de linha ou máscaras de coluna aplicadas a catálogos, esquemas ou tabelas. O nome da apólice é atribuído ao seguro onde a apólice está definida.

Para executar esta declaração, deve ter o MANAGE privilégio sobre o seguro alvo ou ser o 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

    Nome da política. O nome é atribuído ao seguro sobre o qual a apólice está definida. Se uma política com o mesmo nome já existir e OR REPLACE não for especificada, o Azure Databricks levanta POLICY_ALREADY_EXISTS.

  • catalog_name

    O nome do catálogo em que a política está definida. Se o tipo securable não for suportado para políticas, o Azure Databricks levanta POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    O nome do esquema em que a política está definida.

  • table_name

    O nome da tabela onde a apólice está definida.

  • descrição

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

  • function_name

    O nome do UDF usado para o filtro de linha ou máscara de coluna.

  • principal

    Um nome de utilizador, grupo ou principal de serviço. Podem ser listados múltiplos princípios após TO. Os principais indicados a seguir EXCEPT estão excluídos da apólice.

  • condição

    Para WHEN: uma expressão booleana que corresponde aos securables com base nas suas etiquetas (por exemplo, has_tag('sensitivity')). Para MATCH COLUMNS: uma expressão booleana que corresponde às colunas com base nas suas etiquetas (por exemplo, has_tag('pii')). As condições são avaliadas pelo plano de controlo sobre metadados securáveis. As únicas funções dirigidas ao utilizador suportadas em condições são has_tag() e has_tag_value(). Quando usadas em WHEN, estas funções verificam etiquetas definidas diretamente na tabela ou herdadas de um catálogo ou esquema pai. Quando usados em MATCH COLUMNS, verificam etiquetas definidas diretamente na coluna apenas. Os antigos formulários camelCase (hasTag, hasTagValue) continuam a funcionar para compatibilidade retroativa. Se a condição for inválida, o Azure Databricks levanta UC_INVALID_POLICY_CONDITION.

  • alias

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

  • function_arg

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

Exemplos

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

> 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 seguinte cria uma política de filtro de linhas:

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