Políticas ABAC em nível de metastore (Beta)
Beta
As políticas de controle de acesso baseado em atributos (ABAC) no nível do metastore estão em Beta. Você pode anexar políticas ABAC no metastore, a raiz da hierarquia de objetos do Unity Catalog, para que uma única política seja aplicada a todos os catálogos no metastore.
O metastore é um escopo válido para políticas ABAC. Uma política associada ao metastore é aplicada a todos os catálogos, esquemas e objetos compatíveis com cada tipo de política no metastore, incluindo objetos criados após a definição da política. Isso oferece às equipes de governança um único local para definir regras de proteção de dados para toda a organização, sem precisar configurar ou replicar uma política para cada catálogo. Não é possível aplicar tags diretamente a um metastore, portanto, as políticas baseadas em tags correspondem a objetos pelas tags governadas aplicadas a catálogos e objetos de níveis inferiores.
Todos os quatro tipos de política ABAC são suportados no nível do metastore: filtro de linha, máscara de coluna, GRANT e DENY (Beta). Uma política em nível de metastore usa os mesmos campos, condições e comportamento de avaliação de qualquer outra política ABAC. Apenas o escopo difere.
Você pode criar e gerenciar políticas no nível do metastore com o Catalog Explorer, SQL ou a REST API. Para obter uma visão geral do ABAC e dos conceitos fundamentais, incluindo tags governadas e funções integradas como has_tag e has_tag_value, consulte Conceitos fundamentais para o controle de acesso baseado em atributos (ABAC).
Requisitos
Requisitos de compute
O uso de SQL para criar, modificar ou remover políticas em nível de metastore requer compute executando o Databricks Runtime 19 ou versão posterior.
Requisitos de permissão
- Criar, atualizar e excluir políticas no nível do metastore requer a função de administrador do metastore.
- Listar e visualizar políticas no nível do metastore exige
READ METADATAou a função de administrador do metastore.
Como funcionam as políticas no nível do metastore
Uma política no nível do metastore herda a hierarquia de objetos usando as mesmas regras que outras políticas ABAC:
- Uma única política abrange todo o metastore. Uma política anexada ao metastore é avaliada em relação a cada objeto do tipo nomeado na cláusula
FORem todos os catálogos e esquemas no metastore. - Novos catálogos são cobertos automaticamente. Um catálogo criado após a definição da política é coberto quando corresponde às condições da política, sem nenhuma ação por parte do proprietário ou administrador do catálogo.
- O comportamento corresponde às políticas de nível inferior. As políticas em nível de metastore preservam os recursos padrão e o comportamento de avaliação de cada tipo de política, como precedência de DENY, associações de workspace e composição de filtro de linha. Não há lógica de avaliação exclusiva para o escopo do metastore.
Um metastore não pode receber tags diretamente; portanto, se uma política em nível de metastore usar uma condição de tag, aplique a tag controlada a cada catálogo ou objeto de nível inferior que você deseja que corresponda à política.
Alvos de política com suporte
Uma política no nível do metastore pode se aplicar a (FOR) todos os tipos protegíveis que seu tipo de política oferece suporte no nível do catálogo:
- As políticas de filtro de linha e máscara de coluna se aplicam a
FOR TABLES, o que inclui tabelas de transmissão, visualizações materializadas e views (Beta). - As políticas GRANT se aplicam aos tipos protegíveis listados em Tipos protegíveis e privilégios suportados.
- As políticas DENY se aplicam aos tipos protegíveis listados em Tipos protegíveis e privilégios com suporte.
As políticas GRANT e DENY não podem ser direcionadas a objetos que não sejam catálogos no metastore, como locais externos, credenciais de armazenamento, compartilhamentos, destinatários, provedores e conexões. Consulte Limitations.
Criar uma política em nível de metastore
Você pode criar uma política no nível do metastore usando a interface do usuário do Catalog Explorer, a instrução SQL CREATE POLICY ou a REST API.
- Catalog Explorer
- SQL
- REST API
- No seu Workspace do Databricks, clique em
Catalog .
- Na parte superior do painel Catalog , clique no ícone de
engrenagem e selecione Metastore .
- Clique na guia Políticas .
- Clique em Nova política .
- Preencha os campos de política necessários para o Tipo de política selecionado. O campo Escopo está definido como o metastore atual.
- Clique em Criar política .
Anexe a política com ON METASTORE. A política tem como alvo o metastore em que você está operando no momento. Não especifique um nome de metastore. Consulte Limitações.
A política de máscara de coluna a seguir mascara todas as colunas marcadas com a tag ssn em todas as tabelas no metastore, para todos os usuários da conta, exceto o grupo HR admins:
CREATE POLICY ssn_mask
ON METASTORE
COLUMN MASK ssn_to_last_nr
TO `account users` EXCEPT `HR admins`
FOR TABLES
MATCH COLUMNS has_tag('ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
A seguinte política DENY impede que não administradores gerenciem o controle de acesso em cada tabela com a tag sensitive em todo o metastore. Ela se aplica a todos os usuários da account, exceto ao grupo data_admins:
CREATE POLICY managed_access
ON METASTORE
COMMENT 'Prevent non-admins from managing permissions on sensitive tables'
TO `account users` EXCEPT `data_admins`
DENY MANAGE ACCESS CONTROL
FOR TABLES
WHEN has_tag('sensitive');
Para obter a sintaxe SQL completa, consulte CREATE POLICY.
Defina on_securable_type como METASTORE e on_securable_fullname como o nome do seu metastore atual. O restante da carga útil é idêntico ao de uma política com escopo de catálogo.
O exemplo a seguir cria a política DENY mostrada na tab SQL:
curl -X POST "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/policies" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary @- << 'EOF'
{
"name": "managed_access",
"comment": "Prevent non-admins from managing permissions on sensitive tables",
"on_securable_type": "METASTORE",
"on_securable_fullname": "my_metastore",
"for_securable_type": "TABLE",
"policy_type": "POLICY_TYPE_DENY",
"to_principals": ["account users"],
"except_principals": ["data_admins"],
"deny": {
"privileges": ["MANAGE_ACCESS_CONTROL"]
},
"when_condition": "has_tag('sensitive')"
}
EOF
on_securable_fullname aceita apenas o nome do metastore no qual você está operando atualmente. Um ID de metastore, ou o nome de um metastore diferente, é rejeitado. Para encontrar o nome do metastore, clique no ícone de engrenagem na parte superior do painel Catálogo no Catalog Explorer e selecione Metastore . Para obter detalhes de solicitação e resposta, consulte Criar política na referência da API REST.
Excluir uma política em nível de metastore
- Catalog Explorer
- SQL
- REST API
Gerencie políticas em nível de metastore na tab Policies do metastore.
- No seu Workspace do Databricks, clique em
Catalog .
- Na parte superior do painel Catalog , clique no ícone de
engrenagem e selecione Metastore .
- Clique na guia Políticas .
- Selecione a política.
- Clique em Excluir política .
Para excluir uma política em nível de metastore com SQL, execute DROP POLICY:
DROP POLICY ssn_mask ON METASTORE;
curl -X DELETE "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/policies/METASTORE/my_metastore/ssn_mask" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
Mostrar políticas
Use SHOW POLICIES para listar as políticas definidas em um objeto protegível. Use SHOW EFFECTIVE POLICIES para incluir também políticas herdadas de escopos pai, como políticas em nível de metastore que afetam um catálogo.
SHOW [EFFECTIVE] POLICIES ON METASTORE
O resultado inclui o nome da política, o tipo de política, o catálogo e o esquema do objeto protegível no qual cada política é definida, além do tipo e do nome completo desse objeto protegível. As políticas de nível de metastore são retornadas com on_securable_type definido como METASTORE e on_securable_fullname definido como o nome do metastore. A coluna Table é preenchida somente quando uma política é definida em uma tabela.
Exemplo:
SHOW POLICIES ON METASTORE;
Policy Name Policy Type Catalog Schema Table Comment on_securable_type on_securable_fullname
-------------- ----------- ------- ------ ----- ---------------------------------------------------------------- ----------------- ---------------------
ssn_mask COLUMN_MASK NULL NULL NULL NULL METASTORE my_metastore
managed_access DENY NULL NULL NULL Prevent non-admins from managing permissions on sensitive tables METASTORE my_metastore
Descrever uma política
Use DESCRIBE POLICY para ver os detalhes de uma política específica no nível do metastore. Requer READ METADATA no metastore ou a função de administrador do metastore.
{ DESC | DESCRIBE } POLICY policy_name ON METASTORE
O resultado mostra as propriedades da política como pares key-value, incluindo nome, tipo de objeto protegível, nome de objeto protegível, principais, privilégios e a condição WHEN.
Query definições de política com o Information Schema
Para listar as definições de política de nível de metastore, faça uma query em SYSTEM.INFORMATION_SCHEMA.ABAC_POLICY_DEFINITIONS e filtre por on_securable_type:
SELECT *
FROM system.information_schema.abac_policy_definitions
WHERE on_securable_type = 'METASTORE';
As políticas em nível de metastore retornam METASTORE em on_securable_type, com catalog_name, schema_name e securable_name todos NULL. Para ver as colunas disponíveis e exemplos adicionais, consulte ABAC_POLICY_DEFINITIONS.
Cotas de política
Recursos | Tipo de política | Limite |
|---|---|---|
Políticas por metastore (todos os objetos) | Filtro de linha / máscara de coluna | 10.000 |
Políticas por metastore (todos os objetos) | GRANT / DENY | 10.000 |
Políticas por metastore, anexadas diretamente | Filtro de linha / máscara de coluna | 100 |
Políticas por metastore, anexadas diretamente | GRANT / DENY | 100 |
As políticas de filtro de linha e máscara de coluna compartilham uma cota, e as políticas GRANT e DENY compartilham uma cota separada. Os dois grupos são contados independentemente.
Para obter detalhes sobre as cotas de políticas de filtro de linha e máscara de coluna, consulte Cotas de política. Para obter detalhes sobre as cotas de políticas GRANT, consulte Cotas de política. Para obter detalhes sobre as cotas de políticas DENY, consulte Cotas de política.
Log de auditoria
As operações de criação, alteração e exclusão de políticas no nível do metastore são registradas sob as mesmas ações createPolicy, deletePolicy, getPolicy e listPolicies que outras políticas ABAC, com on_securable_type definido como METASTORE. Consulte Registro em log de auditoria para ver exemplos de queries de log de auditoria.
Limitações
-
O SQL tem como alvo apenas o metastore atual.
ON METASTOREsempre tem como alvo o metastore em que você está operando. Especificar um nome de metastore apósON METASTOREretorna um erro de sintaxe, e você não pode gerenciar políticas em um metastore diferente. -
Alvos de GRANT e DENY. As políticas GRANT e DENY não podem ter como alvo objetos que não sejam catálogos no metastore, como locais externos, credenciais de armazenamento, compartilhamentos, destinatários, provedores e conexões. Para ver a hierarquia de objetos completa, consulte A hierarquia de objetos do Unity Catalog.
-
Esquema de informações. A view
ABAC_POLICY_DEFINITIONSnão tem uma colunametastore_name. Uma política no nível do metastore é identificada poron_securable_type=METASTORE. -
Recuperação de desastres. Recuperação de desastres gerenciada pelo Unity Catalog não replica políticas no nível de metastore ao replicar sua implantação do Databricks para uma região secundária. No caso de uma interrupção, os objetos protegidos anteriormente por uma política ABAC no nível de metastore são replicados sem proteção.