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.
Esta página descreve como criar, editar, visualizar e eliminar políticas ABAC no Catálogo Unity. Para uma visão geral dos conceitos de políticas, veja Conceitos Centrais para ABAC.
Requirements
Todas as operações de política (criar, editar, eliminar, mostrar, descrever) requerem MANAGE sobre o objeto seguro ou sua posse. Criar uma apólice também exige:
- Databricks Runtime 16.4 ou superior, ou computação sem servidor. Ver Requisitos de computação.
- Para a lógica de filtragem ou máscara, uma função definida pelo utilizador (UDF) no Unity Catalog que tens
EXECUTEativada, ou uma função SQL que defines inline ao criar a política. - Etiquetas governadas aplicadas a objetos-alvo. Consulte Etiquetas geridas.
Criar uma política
Pode criar uma política usando a interface do Catalog Explorer, a instrução SQL CREATE POLICY, ou as APIs Azure Databricks REST, SDKs e Terraform.
Para criar uma política, deve ter MANAGE no securable onde a política está anexada (catálogo, esquema ou tabela) ou possuir o securable, e EXECUTE no UDF que implementa a lógica de filtragem ou mascaramento.
Explorador de Catálogos
No seu espaço de trabalho Azure Databricks, clique em
Catalog.
Selecione o objeto que determina o escopo da política, como um catálogo, esquema ou tabela.
Clique na guia Políticas .
Clique em Nova política.
Preencha a secção de identificação da política . A tabela seguinte resume cada campo:
Campo Description Exemplo Nome Um nome para a apólice. Deve ser único entre todas as apólices definidas no mesmo seguro. hide_eu_customers,mask_ssnDescrição Opcional. Uma descrição da apólice. Aparece nos registos de auditoria e ajuda os administradores a compreender a intenção da política. Restrict EU customer rows from US analysts,Mask SSN for all account usersComplete a secção de Princípios e Âmbito . A tabela seguinte resume cada campo:
Campo Description Exemplo Aplicado a... Os utilizadores, grupos ou principais de serviço sujeitos à política. Quando estes principais consultam tabelas no seu âmbito, aplica-se o filtro de linha ou máscara de coluna. Para aplicar a política a todos os principais da conta, selecione All account users.us_analysts,All account usersExceto por Os diretores estão isentos da apólice. As entidades isentas não estão sujeitas a filtragem ou mascaramento e vêem os dados completos e não modificados. admins,compliance_teamScope O seguro onde a apólice está anexada. A política avalia todas as tabelas no âmbito selecionado. Selecione um catálogo, esquema ou tabela. O Azure Databricks recomenda anexar políticas ao nível mais alto aplicável. Selecione catálogo prod, depois selecione esquemacustomers.Condição da tabela Determina a que tabelas dentro do âmbito a política se aplica. Sem condição: Aplica a política a todas as tabelas do âmbito. Tabelas que correspondam a qualquer uma destas etiquetas: Aplica a política à lista especificada de chaves de etiquetas ou pares chave-valor de etiqueta. As tabelas que têm qualquer uma destas correspondem à política. Tabelas que correspondem a uma expressão personalizada: Pode construir uma expressão booleana usando has_tagehas_tag_value, combinadas comAND,OR, eNOTpara uma lógica de correspondência mais complexa. Aplica a política a tabelas onde a expressão é avaliada comoTRUEe corresponde à política. Se uma tabela no âmbito não corresponder à condição, a política não se aplica a essa tabela.Selecione Tabelas que correspondam a qualquer uma destas etiquetas, depois escolha a chave sensitivityde etiquetas com valorhighpara restringir a política apenas a tabelas sensíveis.
Para o tipo de Política, escolha o tipo de controlo de acesso a aplicar:
Option Description Utilizar quando Filtro de linha Cria uma política de filtro de linhas. A UDF avalia cada linha e devolve um booleano. As linhas onde o UDF devolve FALSEsão excluídas dos resultados das consultas.O acesso depende dos valores em cada linha, como filtrar pelos valores numa coluna que contém regiões geográficas. Máscara de coluna Cria uma política de máscara de coluna. O UDF recebe o valor da coluna como entrada e devolve o original ou uma versão mascarada. O tipo de retorno deve ser convertível para o tipo de dados da coluna de destino. É necessário anonimizar campos sensíveis, como números de segurança social, números de telefone ou endereços de email, permitindo que o principal consulte a tabela. As secções seguintes dependem do tipo de apólice que escolher. Expanda a secção que corresponda à sua escolha:
Filtro de linha
Na secção da função de filtro de linha , escolha como especificar a função de filtro de linha:
-
Selecione o existente: Selecione um UDF já definido no Catálogo Unity. A UDF avalia cada linha e devolve um booleano. As linhas onde a função devolve
FALSEsão excluídas dos resultados da consulta. Deve terEXECUTEna UDF. - Criar: Defina uma função SQL para usar como lógica de filtro de linha.
Na secção de entradas de função , forneça um valor para cada parâmetro da função. Cada entrada pode ser uma coluna correspondida por etiquetas, uma coluna correspondida por uma expressão personalizada ou um valor constante.
Máscara de coluna
Na secção Condições da coluna , escolha como identificar as colunas a mascarar:
- Colunas que correspondem a qualquer uma destas etiquetas: Especifique uma lista de chaves de etiquetas ou pares chave-valor de etiquetas. As colunas que tenham algum destes elementos estão mascaradas pela política.
-
Colunas que correspondem a uma expressão personalizada: Construa uma expressão booleana usando
has_tagehas_tag_value, combinado comAND,OR, eNOTpara uma lógica de correspondência mais complexa. As colunas em que a expressão resulta emTRUEsão mascaradas.
Depois, escolha a função Mascaração para aplicar às colunas correspondentes:
-
Selecione o existente: Selecione um UDF já definido no Catálogo Unity. A função UDF devolve o valor original ou o valor ocultado. O tipo de retorno deve ser compatível com o tipo de dados da coluna de destino. Deve ter
EXECUTEna UDF. - Criar: Defina uma função SQL para usar como lógica de mascaramento de colunas.
Exemplo de definições da política de máscara da coluna ABAC para a secção da função de Mascaramento.
Na secção de entradas de funções , forneça um valor para cada parâmetro adicional da função. Cada entrada pode ser uma coluna correspondida por etiquetas, uma coluna correspondida por uma expressão personalizada ou um valor constante.
Este exemplo utiliza um valor constante de
4para mostrar os últimos 4 caracteres do SSN.
-
Selecione o existente: Selecione um UDF já definido no Catálogo Unity. A UDF avalia cada linha e devolve um booleano. As linhas onde a função devolve
Clique em Criar política.
SQL
Para documentação completa, consulte CRIAR POLÍTICA.
CREATE [OR REPLACE] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[COMMENT description]
{ row_filter_body | column_mask_body }
Corpo do filtro de linha:
ROW FILTER function_name
TO principal [, ...]
[EXCEPT principal [, ...]]
FOR TABLES
[WHEN condition]
[MATCH COLUMNS condition [[AS] alias] [, ...]]
[USING COLUMNS (function_arg [, ...])]
Corpo da máscara de coluna:
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: Um nome para a apólice. Deve ser único entre todas as apólices definidas no mesmo seguro. -
ON { CATALOG | SCHEMA | TABLE }: O âmbito onde a apólice está anexada. A política avalia todas as tabelas que são descendentes deste elemento seguro. -
function_name: O nome totalmente qualificado da UDF que implementa a lógica de filtragem ou mascaramento. -
TO principal [, ...]: Os utilizadores, grupos ou principais de serviço a que a política se aplica. -
EXCEPT principal [, ...]: Os principais responsáveis estão isentos da política. Os diretores isentos não estão sujeitos a filtragem ou mascaramento. -
FOR TABLES: Especifica que a política tem como alvo tabelas. Atualmente, as tabelas são o único tipo seguro suportado, incluindo tabelas de streaming e visualizações materializadas. -
WHEN condition: Uma expressão booleana que determina a que tabelas a política se aplica, com base nas suas etiquetas. Utiliza funçõeshas_tag('tag_name')incorporadas ehas_tag_value('tag_name', 'tag_value'). Se for omitido, define-se porTRUE(aplica-se a todas as tabelas no âmbito). -
MATCH COLUMNS condition [[AS] alias] [, ...]: Condições de coluna que identificam quais as colunas que a política tem como alvo. Cada condição é uma expressão booleana construída a partir dehas_tag('tag_name')ehas_tag_value('tag_name', 'tag_value'), opcionalmente combinadas comAND,OR, eNOT. Cada condição pode ser atribuída a um alias para uso emON COLUMNeUSING COLUMNS. Uma política pode incluir até 3MATCH COLUMNSexpressões, e todas devem coincidir para que a política se aplique. -
ON COLUMN alias: Para políticas de máscara de coluna, especifica a coluna correspondente à mascarar, referenciada pelo alias deMATCH COLUMNS. -
USING COLUMNS (function_arg [, ...]): Os argumentos passaram para a UDF. Cada argumento pode ser um alias deMATCH COLUMNSou um literal constante.
Exemplo: política de máscara de coluna. Mascarar todas as colunas marcadas com pii:ssn no prod.customers esquema, mostrando apenas os últimos 4 caracteres. A política aplica-se a us_analysts exceto admins.
CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
RETURN right(ssn, nr);
CREATE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
Exemplo: política de filtro de linhas. Exclua linhas com clientes europeus das tabelas marcadas com sensitivity:high no prod.customers esquema. A política aplica-se a us_analysts e filtra linhas com base numa coluna geo_region.
CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
RETURN geo_region <> 'eu';
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Exclude rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
WHEN has_tag_value('sensitivity', 'high')
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);
Python SDK
Para documentação completa, consulte a documentação do SDK Databricks para Python.
Este exemplo cria uma política de filtro de linhas que exclui linhas com clientes europeus para analistas sediados nos EUA:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
RowFilterOptions,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="hide_eu_customers",
comment="Exclude rows with European customers from sensitive tables",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_ROW_FILTER,
to_principals=["us_analysts"],
match_columns=[
MatchColumn(condition="has_tag('geo_region')", alias="region"),
],
row_filter=RowFilterOptions(
function_name="prod.customers.non_eu_region",
using=[FunctionArgument(alias="region")],
),
))
Este exemplo cria uma política de máscara de coluna que oculta números de segurança social para analistas dos EUA, exceto para aqueles do grupo admins.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
ColumnMaskOptions,
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="mask_ssn",
comment="Mask social security numbers",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_COLUMN_MASK,
to_principals=["us_analysts"],
except_principals=["admins"],
match_columns=[
MatchColumn(condition="has_tag_value('pii', 'ssn')", alias="ssn"),
],
column_mask=ColumnMaskOptions(
function_name="prod.customers.ssn_to_last_nr",
on_column="ssn",
using=[FunctionArgument(constant="4")],
),
))
Editar uma política
Explorador de Catálogos
- No seu espaço de trabalho Azure Databricks, clique em
Catalog.
- Selecione o objeto ao qual a política está associada.
- Clique na guia Políticas .
- Selecione a política que quer editar.
- Atualize quaisquer campos que queira alterar. Pode modificar a descrição, os princípios, o tipo de política, as condições e os mapeamentos de entrada da função. O nome da apólice e o objeto seguro onde a apólice é aplicada não podem ser editados. Para descrições de campos, consulte Criar uma política.
- Clique em Atualizar política.
SQL
CREATE OR REPLACE POLICY substitui toda a definição da política. Especifique todas as cláusulas, não apenas os campos que quer alterar. A apólice de substituição deve ter o mesmo nome e estar no mesmo seguro garantido.
CREATE OR REPLACE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins, compliance_team
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
Python SDK
Ao contrário do CREATE OR REPLACE POLICY SQL, update_policy suporta atualizações parciais. Use o update_mask parâmetro para especificar quais os campos a alterar. Só esses campos são atualizados. Se update_mask for "*" ou estiver vazio, todos os campos em policy_info são aplicados.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import PolicyInfo
w = WorkspaceClient()
w.policies.update_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
policy_info=PolicyInfo(
except_principals=["admins", "compliance_team"],
),
update_mask="except_principals",
)
Eliminar uma política
Explorador de Catálogos
- No seu espaço de trabalho Azure Databricks, clique em
Catalog.
- Selecione o objeto ao qual a política está associada.
- Clique na guia Políticas .
- Selecione a política.
- Clique em Excluir política.
SQL
Usar DROP POLICY para eliminar uma política.
DROP POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
Exemplos:
DROP POLICY mask_ssn ON SCHEMA prod.customers;
DROP POLICY hide_eu_customers ON SCHEMA prod.customers;
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.policies.delete_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
)
Mostrar políticas
Use SHOW POLICIES para listar as políticas definidas num securável. Utilize SHOW EFFECTIVE POLICIES também para incluir políticas de escopos superiores, como políticas ao nível de catálogo que afetam uma tabela.
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA | TABLE } securable_name
O resultado inclui o nome da política, o tipo de política e o catálogo, esquema ou tabela onde cada política está definida.
Visualizar políticas eficazes para uma tabela não requer permissões no catálogo ou esquema pai. Isto permite que um administrador de tabelas veja as regras aplicáveis sem ter acesso de leitura às políticas das tabelas irmãs.
Exemplo:
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;
| nome_da_política | tipo_de_política | catálogo | esquema | comentário |
|---|---|---|---|---|
| ocultar_clientes_ue | ROW FILTER | PROD | customers | |
| mask_ssn | COLUMN MÁSCARA | PROD | customers |
Descreva uma política
Use DESCRIBE POLICY para consultar os detalhes de uma apólice específica. Requer MANAGE no alvo propriedade segurável ou posse do objeto.
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
O resultado mostra as propriedades da apólice como pares-chave-valor, incluindo nome, tipo de seguro, nome do seguro, principais, condições, nome da função e carimbos temporais.
Exemplo:
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;
| info_name | info_value |
|---|---|
| Name | ocultar_clientes_ue |
| No Tipo Securável | SCHEMA |
| Sobre o Securable | prod.clientes |
| Para os Diretores | us_analysts |
| Para o Tipo Securável | TABLE |
| Colunas de Jogos | has_tag('geo_region') Região AS |
| Tipo de Política | FILTRO_DE_LINHA |
| Nome da função | prod.customers.non_eu_region |
| Utilização de Colunas | região |
Registo de auditoria
Os registos do Azure Databricks regiam as operações de etiquetas e políticas ABAC na tabela do sistema de registos de auditoria. Abaixo estão exemplos de consultas. Para obter mais informações, consulte Registos de auditoria.
-- All tag assignment and deletion events from the audit log
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.workspace_id,
request_params.metastore_id,
request_params.tag_assignment,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN (
'createEntityTagAssignment',
'deleteEntityTagAssignment'
)
ORDER BY event_time DESC;
-- All ABAC policy CRUD operations
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.name AS policy_name,
request_params.on_securable_type,
request_params.on_securable_fullname,
request_params.policy_info,
response.status_code
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createPolicy', 'deletePolicy', 'getPolicy', 'listPolicies')
ORDER BY event_time DESC;