Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página descreve como criar, editar, exibir e excluir políticas ABAC no Catálogo do Unity. Para obter uma visão geral dos conceitos de política, consulte os conceitos principais para ABAC.
Requisitos
Todas as operações de política (criar, editar, excluir, mostrar, descrever) exigem MANAGE na propriedade protegível ou de objeto. A criação de uma política também requer:
- Databricks Runtime 16.4 ou superior, ou computação sem servidor. Consulte os requisitos de computação.
- Para a lógica de filtragem ou máscara, utilize uma UDF (função definida pelo usuário) no Catálogo do Unity que já esteja
EXECUTE, ou uma função SQL definida em linha ao criar a política. - Etiquetas governadas aplicadas a objetos alvo. Consulte tags governadas.
Criar uma política
Você pode criar uma política usando a interface do usuário do Catalog Explorer, a instrução SQL CREATE POLICY ou as APIs REST, SDKs e Terraform do Azure Databricks.
Para criar uma política, você deve ter MANAGE no objeto seguro onde a política está anexada (catálogo, esquema ou tabela) ou ser o proprietário do objeto seguro, e EXECUTE na UDF que implementa a lógica de filtragem ou mascaramento.
Gerenciador de Catálogos
No workspace Azure Databricks, clique em
Catalog.
Selecione o objeto que determina o escopo da política, como um catálogo, um esquema ou uma tabela.
Clique na guia Políticas.
Clique em Nova política.
Conclua a seção Identificação da política. A tabela a seguir resume cada campo:
Campo Descrição Exemplo Nome Um nome para a política. Deve ser único entre todas as políticas definidas no mesmo segurável. hide_eu_customers,mask_ssnDescrição Opcional. Uma descrição para a política. Aparece nos logs de auditoria e ajuda os administradores a entender a intenção de política. Restrict EU customer rows from US analysts,Mask SSN for all account usersConclua a seção Principais e escopo. A tabela a seguir resume cada campo:
Campo Descrição Exemplo Aplicado a... Os usuários, grupos ou entidades de serviço sujeitos à política. Quando essas entidades de segurança consultam as tabelas dentro do escopo, o filtro de linha ou máscara de coluna é aplicado. Para aplicar a política a todas as principais na conta, selecione All account users.us_analysts,All account usersExceto por Entidades principais isentas da política. Responsáveis isentos não estão sujeitos a filtragem ou mascaramento e veem os dados completos e sem alterações. admins,compliance_teamÂmbito O elemento securitizável ao qual a política está anexada. A política é avaliada em relação a todas as tabelas dentro do escopo selecionado. Selecione um catálogo, um esquema ou uma tabela. Azure Databricks recomenda anexar políticas no nível mais alto aplicável. Selecione o catálogo prode selecione o esquemacustomers.Condição da tabela Determina a quais tabelas dentro do escopo a política se aplica. Nenhuma condição: Aplica a política a todas as tabelas no escopo. Tabelas que correspondem a qualquer uma destas tags: Aplica a política à lista especificada de chaves de tag ou pares chave-valor de tag. Tabelas que têm qualquer uma delas estão em conformidade com a política. Tabelas que correspondem a uma expressão personalizada: você pode criar uma expressão booliana usando has_tagehas_tag_value, combinada comAND,OReNOTpara 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 escopo não corresponder à condição, a política não se aplicará a essa tabela.Selecione Tabelas que correspondem a qualquer uma dessas tags, em seguida, escolha a chave de tag sensitivitycom valorhighpara restringir a política apenas a tabelas confidenciais.
Para o tipo de política, escolha o tipo de controle de acesso a ser aplicado:
Opção Descrição Usar quando Filtro de linha Cria uma política de filtro de linha. A UDF avalia cada linha e retorna um booliano. As linhas em que a UDF retorna FALSEsão excluídas dos resultados da consulta.O acesso depende dos valores em cada linha, como filtragem pelos valores em uma coluna que contém regiões geográficas. Máscara de coluna Cria uma política de máscara de coluna. A UDF usa o valor da coluna como entrada e retorna a versão original ou mascarada. O tipo de retorno deve ser convertível para o tipo de dados da coluna de destino. Você precisa redigir campos confidenciais, como SSNs, números de telefone ou endereços de email, enquanto ainda permite que o principal consulte a tabela. As próximas seções dependem da seleção de tipo de política . Expanda a seção que corresponde à sua seleção:
Filtro de linha
Na seção Função de filtro de linha, escolha como especificar a função de filtro de linha:
-
Selecione existente: selecione um UDF já definido no Catálogo do Unity. A UDF avalia cada linha e retorna um booliano. As linhas em que a função retorna
FALSEsão excluídas dos resultados da consulta. Você deve terEXECUTEna UDF. - Criar: defina uma função SQL a ser usada como a lógica de filtro de linha.
Na seção Entradas de função , forneça um valor para cada parâmetro de função. Cada entrada pode ser uma coluna correspondente a tags, uma coluna correspondente a uma expressão personalizada ou um valor constante.
Máscara de coluna
Na seção Condições de coluna , escolha como identificar as colunas a serem mascaradas:
- Colunas que correspondem a qualquer uma dessas tags: especifique uma lista de chaves de tags ou pares chave-valor de tags. As colunas que possuem qualquer uma dessas são mascaradas pela política.
-
Colunas que correspondem a uma expressão personalizada: crie uma expressão booliana usando
has_tagehas_tag_value, combinada comAND,OReNOTpara uma lógica de correspondência mais complexa. Colunas nas quais a expressão é avaliada paraTRUEsão mascaradas.
Em seguida, escolha a função Mascaramento para aplicar às colunas correspondentes:
-
Selecione existente: selecione um UDF já definido no Catálogo do Unity. A função UDF retorna o valor original ou mascarado. O tipo de retorno deve ser convertível para o tipo de dados da coluna de destino. Você deve ter
EXECUTEna UDF. - Criar: defina uma função SQL a ser usada como a lógica de mascaramento de coluna.
Exemplo de configurações de política de mascaramento de coluna ABAC para a seção de função de mascaramento.
Na seção de entradas de função , forneça um valor para cada parâmetro de função adicional. Cada entrada pode ser uma coluna correspondente a tags, uma coluna correspondente a uma expressão personalizada ou um valor constante.
Este exemplo usa um valor constante de
4para mostrar os últimos 4 caracteres do Número de Seguro Social (SSN).
-
Selecione existente: selecione um UDF já definido no Catálogo do Unity. A UDF avalia cada linha e retorna um booliano. As linhas em que a função retorna
Clique em Criar política.
SQL
Para obter a documentação completa, consulte CREATE POLICY.
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 política. Deve ser exclusivo entre todas as políticas definidas no mesmo recurso de segurança. -
ON { CATALOG | SCHEMA | TABLE }: o escopo em que a política está anexada. A política é avaliada em relação a todas as tabelas descendentes desse elemento de segurança. -
function_name: o nome totalmente qualificado da UDF que implementa a lógica de filtragem ou mascaramento. -
TO principal [, ...]: os usuários, grupos ou entidades de serviço aos quais a política se aplica. -
EXCEPT principal [, ...]: principais isentos da política. Principais 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 protegível com suporte e isso inclui tabelas de streaming e exibições materializadas. -
WHEN condition: uma expressão booliana que determina a quais tabelas a política se aplica, com base em suas marcas. Usa funções internashas_tag('tag_name')ehas_tag_value('tag_name', 'tag_value'). Caso seja omitido, o padrão seráTRUE(aplica-se a todas as tabelas no escopo). -
MATCH COLUMNS condition [[AS] alias] [, ...]: Condições de coluna que identificam as colunas às quais a política é direcionada. Cada condição é uma expressão booleana criada a partir dehas_tag('tag_name')ehas_tag_value('tag_name', 'tag_value'), opcionalmente combinada comAND,OReNOT. Cada condição pode ser atribuída a um alias para uso dentroON COLUMNeUSING COLUMNS. Uma política pode incluir até trêsMATCH COLUMNSexpressões e todas devem corresponder à política a ser aplicada. -
ON COLUMN alias: Para as políticas de máscara de coluna, especifica a coluna correspondente a ser mascarada, referenciada a partir de seu alias emMATCH COLUMNS. -
USING COLUMNS (function_arg [, ...]): argumentos passados 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 esquema prod.customers, mostrando apenas os últimos 4 caracteres. A política se aplica 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 linha. Exclua linhas de tabelas marcadas com sensitivity:high no esquema prod.customers com clientes europeus. A política se aplica a us_analysts e filtra linhas com base na 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);
SDK do Python
Para obter a documentação completa, consulte a documentação do SDK do Databricks para Python.
Este exemplo cria uma política de filtro de linha que exclui linhas com clientes europeus para analistas baseados 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 mascara os números de segurança social para analistas dos EUA, exceto aqueles no admins grupo:
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
Gerenciador de Catálogos
- No workspace Azure Databricks, clique em
Catalog.
- Selecione o objeto ao qual a política está anexada.
- Clique na guia Políticas.
- Selecione a política que você deseja editar.
- Atualize todos os campos que você deseja alterar. Você pode modificar a descrição, os principais responsáveis, o tipo de política, as condições e os mapeamentos de entrada das funções. O nome da política e o objeto protegível em que a política é aplicada não podem ser editados. Para obter descrições de campo, consulte Criar uma política.
- Clique em Atualizar política.
SQL
CREATE OR REPLACE POLICY substitui toda a definição de política. Especifique todas as cláusulas, não apenas os campos que você deseja alterar. A política de substituição deve ter o mesmo nome e estar no mesmo recurso de segurança.
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);
SDK do Python
Ao contrário CREATE OR REPLACE POLICY do SQL, update_policy dá suporte a atualizações parciais. Use o update_mask parâmetro para especificar quais campos alterar. Somente esses campos são atualizados. Se update_mask está "*" ou 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",
)
Excluir uma política
Gerenciador de Catálogos
- No workspace Azure Databricks, clique em
Catalog.
- Selecione o objeto ao qual a política está anexada.
- Clique na guia Políticas.
- Selecione a política.
- Clique em Excluir política.
SQL
Use DROP POLICY para excluir 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;
SDK do Python
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 em um protegível. Use SHOW EFFECTIVE POLICIES também para incluir políticas de escopos superiores, como políticas de 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, o esquema ou a tabela em que cada política é definida.
Exibir políticas efetivas para uma tabela não requer permissões no catálogo ou esquema pai. Isso permite que um administrador de tabelas veja as regras que se aplicam sem ter acesso de leitura às políticas das tabelas irmãos.
Exemplo:
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;
| policy_name | tipo_de_política | catálogo | esquema | comentário |
|---|---|---|---|---|
| ocultar_clientes_eu | ROW FILTER | prod | clientes | |
| mask_ssn | COLUMN MÁSCARA | prod | clientes |
Descrever uma política
Use DESCRIBE POLICY para exibir os detalhes de uma política específica.
MANAGE Requer no destino protegível ou propriedade do objeto.
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
O resultado mostra as propriedades da política como pares chave-valor, incluindo nome, tipo de segurança, nome de segurança, princípios, condições, nome da função e marca temporal.
Exemplo:
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;
| info_name | info_value |
|---|---|
| Nome | ocultar_clientes_eu |
| Em Tipo Protegível | SCHEMA |
| Em Securable | prod.clientes |
| Para os Responsáveis | us_analysts |
| Para Tipo Securável | TABLE |
| Corresponder colunas | has_tag('geo_region') AS região |
| Tipo de Política | Filtro de linha |
| Nome da função | prod.clientes.nao_regiao_ue |
| Usando colunas | região |
Log de auditoria
Azure Databricks registra operações de tags regulamentadas e de política ABAC na tabela do sistema de log de auditoria. Veja abaixo exemplos de consultas. Para obter mais informações, confira Logs 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;