Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Databricks SQL
Databricks Runtime 16.4 e superior
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
-
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 REPLACEnão for especificada, o Azure Databricks levanta POLICY_ALREADY_EXISTS. -
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.
-
O nome do esquema em que a política está definida.
-
O nome da tabela onde a apólice está definida.
descrição
Um comentário opcional de string para a política.
-
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 seguirEXCEPTestão excluídos da apólice.-
Para
WHEN: uma expressão booleana que corresponde aos securables com base nas suas etiquetas (por exemplo,has_tag('sensitivity')). ParaMATCH 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ãohas_tag()ehas_tag_value(). Quando usadas emWHEN, estas funções verificam etiquetas definidas diretamente na tabela ou herdadas de um catálogo ou esquema pai. Quando usados emMATCH 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 emUSING COLUMNS(filtro de linha) ou emON COLUMNeUSING COLUMNS(máscara de coluna).function_arg
Em
USING COLUMNS, cada argumento é ou uma expressão constante ou um alias deMATCH 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);