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

    WHEN é uma expressão booleana que determina se a política se aplica, com base nas etiquetas do securável, nos atributos de identidade do utilizador que faz a consulta e/ou no contexto do pedido.

    MATCH COLUMNS é uma expressão booleana que corresponde a colunas com base nas suas etiquetas (por exemplo, has_tag('pii')).

    As condições são avaliadas pelo plano de controlo. As seguintes funções são suportadas em condições:

    • Funções de etiquetas (has_tag() e has_tag_value()): suportadas tanto WHEN em como MATCH COLUMNSem . Quando usados em WHEN, 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.
    • Funções de atributos identidade (has_identity_attribute_value() e has_identity_attribute_tag_match()): suportadas na WHEN cláusula das políticas de máscara de coluna, onde avaliam os atributos de identidade do utilizador que executa a consulta. Não são suportados em GRANT políticas DENY ou em MATCH COLUMNS. Veja Mascarar uma coluna baseada nos atributos do utilizador que faz a consulta.
    • Funções de atributo de contexto (has_context_attribute() e has_context_attribute_value()): suportadas na WHEN cláusula de filtro de linha e políticas de máscara de coluna, onde avaliam o contexto do pedido, como a aplicação que chama. Não são suportados em MATCH COLUMNS. Ver Restrição de acesso para agentes externos que atuam em nome de um utilizador.

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