Políticas ABAC GRANT para modelos (Beta)
Beta
As políticas ABAC GRANT estão em Beta. Na versão Beta, as políticas GRANT podem conceder o privilégio EXECUTE em modelos, aplicadas no nível do catálogo ou do esquema. Privilégios adicionais e tipos protegíveis serão suportados em versões futuras.
Esta página descreve as políticas ABAC GRANT, que concedem dinamicamente privilégios do Unity Catalog a objetos protegíveis cujas tags governadas correspondem a uma condição. Abrange como criar, editar, listar e excluir no Catalog Explorer, no SQL e no Databricks SDK, como as políticas GRANT interagem com as concessões diretas, e o escopo e as limitações do Beta atual.
Para uma visão geral do ABAC e de conceitos essenciais, incluindo tags governadas e funções integradas como has_tag e has_tag_value, consulte Conceitos essenciais para controle de acesso baseado em atributo (ABAC).
Compute requirements
Criar, modificar ou descartar políticas GRANT com SQL requer um cluster compute clássico executando o Databricks Runtime 18.3 ou acima.
O que é uma GRANT policy
Uma política GRANT é uma política de controle de acesso baseada em atributos que concede dinamicamente privilégios do Unity Catalog a objetos protegíveis cujas tags governadas correspondem à condição da política. O Unity Catalog avalia a WHEN condição da política em relação às tags governadas em cada objeto seguro no escopo da política sempre que o acesso é verificado e concede o privilégio em cada objeto seguro que corresponde.
Em comparação, instruções diretas GRANT atribuem privilégios a objetos protegíveis identificados pelo seu namespace de três níveis (catalog.schema.object).
Na versão Beta, as políticas de GRANT suportam um privilégio em um tipo de recurso protegível: EXECUTE em modelos. Tanto os modelos MLflow registrados pelo cliente quanto os modelos de base hospedados pelo Databricks em system.ai são cobertos. Consulte gerenciar o ciclo de vida do modelo no Unity Catalog para saber como os modelos MLflow são registrados no Unity Catalog, e acessar modelos de IA generativa e LLM do Unity Catalog para modelos de base hospedados no Databricks.
As políticas GRANT podem fazer referência a tags controladas que você cria ou tags do sistema predefinidas pela Databricks em suas condições.
Por exemplo, a política a seguir usa a lifecycle tag controlada aplicada a modelos MLflow registrados pelo cliente em production.ml_models. A política concede EXECUTE apenas a modelos marcados com lifecycle = 'production':
CREATE POLICY grant_production_model_access
ON SCHEMA production.ml_models
COMMENT 'Grant EXECUTE on production MLflow models'
TO `analysts`
GRANT EXECUTE FOR MODELS
WHEN has_tag_value('lifecycle', 'production');
A seguinte política concede EXECUTE em modelos de base hospedados pela Anthropic em system.ai a data_scientists, exceto contractors, ao corresponder à tag de sistema ai.model_creator. Todo modelo que carrega ai.model_creator = 'anthropic' é coberto, sem uma concessão separada por modelo:
CREATE POLICY grant_anthropic_foundation_models
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on Anthropic foundation models'
TO `data_scientists`
EXCEPT `contractors`
GRANT EXECUTE FOR MODELS
WHEN has_tag_value('ai.model_creator', 'anthropic');
O acesso equivalente usando concessões diretas requer uma instrução por modelo em system.ai, reemitida à medida que a Databricks adiciona novos modelos da Anthropic:
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-sonnet-4-6` TO `data_scientists`;
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-opus-4-7` TO `data_scientists`;
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-haiku-4-5` TO `data_scientists`;
As políticas GRANT diferem das políticas de filtro de linha e de máscara de coluna de duas maneiras:
- As políticas de filtros de linha e máscaras de coluna restringem o conteúdo de dados ao qual um usuário já tem acesso. GRANT políticas determinam se o usuário pode acessar o objeto.
- As políticas de filtro de linha e de máscara de coluna exigem uma função definida pelo usuário (UDF) para implementar o filtro ou a máscara. As políticas GRANT não utilizam UDFs. A condição é expressa em linha na definição de política.
Como as políticas GRANT interagem com as concessões diretas
Os privilégios efetivos em um objeto são a união de concessões diretas e quaisquer políticas de GRANT aplicáveis. Um principal possui EXECUTE em um modelo quando o seguinte for verdadeiro:
- Uma política GRANT anexada ao catálogo ou esquema do modelo lista o principal em
TO(e não emEXCEPT), e a condiçãoWHENda política corresponde às tags no modelo. - Um
GRANT EXECUTEdireto no modelo, em seu esquema ou em seu catálogo está em vigor para esse principal, seja concedido diretamente, por meio de associação a grupos ou por meio de outros privilégios administrativos.
Como o acesso é a união dessas fontes, uma política GRANT mais seletiva não significa que um principal excluído não tenha EXECUTE. O principal ainda pode deter o privilégio por meio de uma concessão direta no modelo, ou em seu esquema pai ou catálogo pai. Caso se pretenda utilizar políticas GRANT como a principal forma de controlar EXECUTE em modelos, primeiramente, determine se quaisquer concessões diretas já existentes possam sobrepor a política:
- Use
SHOW EFFECTIVE POLICIES ON SCHEMA <parent_schema>(ouON CATALOG <parent_catalog>) para listar cada política GRANT cujo escopo abrange os modelos nesse esquema ou catálogo.SHOW EFFECTIVE POLICIESnão oferece suporte direto aON MODEL. A REST API equivalente éGET /api/2.1/unity-catalog/policies/{on_securable_type}/{on_securable_fullname}?include_inherited=true(Python SDK:w.policies.list_policies(..., include_inherited=True)). - Use
SHOW GRANTSno modelo e em seus ancestrais para enumerar concessões diretas. A API REST equivalente para concessões diretas em um objeto seguro éGET /api/2.1/unity-catalog/permissions/{securable_type}/{full_name}(SDK Python:w.grants.get(...)); para a união de concessões diretas e herdadas, useGET /api/2.1/unity-catalog/effective-permissions/{securable_type}/{full_name}(SDK Python:w.grants.get_effective(...)).
Criar uma política GRANT
É possível criar uma política GRANT pela interface de usuário do Explorador de Catálogos, com a instrução SQL CREATE POLICY, ou com o Databricks SDK.
Para criar uma política GRANT, é necessário ter MANAGE no catálogo ou esquema onde a política está anexada, ou ser o proprietário desse objeto protegível.
- Catalog Explorer
- SQL
- Python SDK
-
No seu Databricks workspace, clique em
Catálogo .
-
Selecione o catálogo ou esquema no qual deseja vincular a política. As políticas GRANT em versão Beta só podem ser anexadas no nível de catálogo ou esquema.
-
Clique na guia Políticas .
-
Clique em Nova política .
-
Em **Identificação da Política**, insira um **Nome da política** e uma **Descrição** opcional.
-
Em Entidades e escopo :
- Em Aplicado a , selecione as entidades (usuários, grupos ou entidades de serviço) às quais a política se aplica.
- Em **Exceto por**, selecione opcionalmente os principais a serem excluídos da política.
- Em **Escopo**, confirme o catálogo ou esquema onde a política está vinculada.
-
Em **Tipo de política**, selecione **Conceder acesso**.
-
Em objetos protegíveis , selecione modelo . Na versão Beta, o Modelo é o único tipo securitizável compatível com políticas GRANT. Os outros tipos na lista (tabela, volume, esquema, catálogo) não podem ser combinados com conceder acesso.
-
Em Condição , escolha como definir o escopo da política para modelos no catálogo ou esquema selecionado:
- Nenhuma condição aplica a política a todos os modelos no catálogo ou esquema selecionado.
- Recursos protegíveis que correspondem a qualquer uma dessas tags aplica a política somente a modelos que contêm pelo menos uma das tags controladas selecionadas.
- Recursos que correspondem a uma expressão personalizada permitem escrever uma expressão baseada em tags para determinar a quais modelos a política se aplica. Consulte Condições e funções integradas para as funções de condição disponíveis.
-
Em **Privilégios**, selecione **EXECUTAR**. EXECUTE é o único privilégio suportado para modelos em Beta.
-
Clique em Mostrar código para revisar a instrução SQL equivalente antes de salvar e, depois, clique em Criar política .
A sintaxe SQL para uma política GRANT usa um corpo GRANT ... FOR ... WHEN ... em vez de ROW FILTER ou COLUMN MASK.
CREATE [OR REPLACE] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name }
[COMMENT description]
TO principal [, ...]
[EXCEPT principal [, ...]]
GRANT EXECUTE FOR MODELS
[WHEN condition]
Parâmetros:
policy_name: Um nome para a política. Deve ser único entre todas as políticas definidas no mesmo objeto seguro.ON { CATALOG | SCHEMA }: O escopo em que a política está anexada. Na versão Beta, as políticas de GRANT podem ser aplicadas a nível de catálogo ou de esquema, e não a um modelo individual.TO principal [, ...]: Os usuários, grupos ou entidades de serviço aos quais a política se aplica.EXCEPT principal [, ...]Diretores estão isentos da política.GRANT EXECUTE FOR MODELS: Especifica o tipo de privilégio e seguro. Em Beta,EXECUTEemMODELSé a única combinação suportada.WHEN condition: Uma expressão booleana baseada em tag que determina a quais modelos a política se aplica dentro do escopo. Utiliza funções integradashas_tag('tag_name')ehas_tag_value('tag_name', 'tag_value'). Se omitido, o padrão éTRUE(aplica-se a todos os modelos no escopo). Veja Condições e Funções Integradas para as funções de condição disponíveis.
Para obter a documentação completa, consulte a documentação do Databricks SDK para Python.
Este exemplo cria uma política de GRANT que concede EXECUTE em modelos de fundação hospedados pela Anthropic em system.ai tag ai.model_creator = 'anthropic', para data_scientists, exceto contratados:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
GrantOptions,
PolicyInfo,
PolicyType,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="grant_anthropic_foundation_models",
comment="Grant EXECUTE on Anthropic foundation models",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="system.ai",
for_securable_type=SecurableType.MODEL,
policy_type=PolicyType.POLICY_TYPE_GRANT,
to_principals=["data_scientists"],
except_principals=["contractors"],
grant=GrantOptions(privileges=["EXECUTE"]),
when_condition="has_tag_value('ai.model_creator', 'anthropic')",
))
Editar uma política GRANT
- Catalog Explorer
- SQL
- Python SDK
- No seu Databricks workspace, clique em
Catálogo .
- Selecione o catálogo ou o esquema ao qual a política está vinculada.
- Clique na guia Políticas .
- Selecione a política que deseja editar.
- Atualize os campos que deseja modificar.
- Clique na **Política de Atualização**.
Para editar uma política de GRANT com SQL, execute CREATE OR REPLACE POLICY com o mesmo nome e destino. Consulte Criar uma política GRANT.
Ao contrário de CREATE OR REPLACE POLICY no SQL, update_policy oferece suporte a atualizações parciais. Use o parâmetro update_mask para especificar quais campos devem ser alterados. Apenas esses campos são atualizados. Se update_mask estiver "*" 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="system.ai",
name="grant_anthropic_foundation_models",
policy_info=PolicyInfo(
except_principals=["contractors", "interns"],
),
update_mask="except_principals",
)
Excluir política de GRANT
- Catalog Explorer
- SQL
- Python SDK
- No seu Databricks workspace, clique em
Catálogo .
- Selecione o catálogo ou o esquema ao qual a política está vinculada.
- Clique na guia Políticas .
- Selecione a política.
- Clique em Excluir política .
Para excluir uma política GRANT com SQL, execute DROP POLICY:
DROP POLICY IF EXISTS grant_anthropic_foundation_models ON SCHEMA system.ai;
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.policies.delete_policy(
on_securable_type="SCHEMA",
on_securable_fullname="system.ai",
name="grant_anthropic_foundation_models",
)
Mostrar políticas
Use SHOW POLICIES para listar as políticas definidas em um objeto protegível. Use o SHOW EFFECTIVE POLICIES para incluir também políticas herdadas de escopos pai, como políticas de nível de catálogo que afetam um esquema.
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA } securable_name
O resultado inclui o nome da política, o tipo de política e o catálogo ou esquema onde cada política é definida. As políticas GRANT são retornadas com o tipo de política GRANT juntamente com quaisquer políticas de filtro de linha e máscara de coluna anexadas no mesmo escopo. A coluna table é preenchida apenas para políticas no escopo da tabela (filtro de linha e máscara de coluna); para políticas GRANT anexadas a um catálogo ou esquema, é NULL.
Exemplo:
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;
nome da política | tipo de política | catálogo | esquema | tabela | Comentário |
|---|---|---|---|---|---|
Conceder Modelos de Base da Anthropic | Conceder | Sistema | AI | null | Conceder permissão de execução sobre modelos básicos da Anthropic |
SHOW GRANTS não inclui privilégios concedidos por meio de uma política de GRANT. Para ver todo o acesso EXECUTE a um modelo, combine a saída SHOW GRANTS para o modelo com as políticas GRANT retornadas por SHOW EFFECTIVE POLICIES em seu esquema ou catálogo principal.
Descrever uma política
Utilize DESCRIBE POLICY para visualizar os detalhes de uma política GRANT específica. Requer MANAGE no objeto protegível de destino ou propriedade do objeto.
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA } securable_name
O resultado mostra as propriedades da política como pares key-value, incluindo nome, tipo de objeto protegível, nome do objeto protegível, entidades, privilégios e a condição WHEN.
Exemplo:
DESCRIBE POLICY grant_anthropic_foundation_models ON SCHEMA system.ai;
info_name | valor da informação |
|---|---|
Nome | Conceder Modelos de Base da Anthropic |
Tipo Protegível | Esquema |
No Securable | system.ai |
Para principals | cientistas de dados |
Exceto principals | prestadores de serviço |
Para o Tipo Seguro | Modelo |
Tipo de política | Conceder |
Privilégios Concedidos | Executar |
Quando Condição | has_tag_value('ai.model_creator', 'anthropic') |
Cotas de política
Recursos | Limite |
|---|---|
Políticas por metastore | 10.000 |
Políticas por catálogo ou esquema | 100 |
Essas cotas são separadas das cotas para políticas de filtro de linha e de máscara de coluna.
Registro de auditoria
As operações GRANT de criação, alteração e descarte de políticas são registradas sob as mesmas ações createPolicy, deletePolicy, getPolicy e listPolicies que as políticas de filtro de linha e de máscara de coluna. Consulte Registro de auditoria para obter exemplos de consultas de log de auditoria.
Práticas recomendadas
As seguintes recomendações ajudam a projetar políticas GRANT que são mais fáceis de manter, auditar e justificar.
- Use grupos em
TOeEXCEPT, não usuários individuais. Adicionar ou remover usuários de um grupo nomeado em uma política muda a quem a política se aplica, sem editar a política. - Anexe as políticas no menor escopo que abranja os alvos. Utilize o escopo mais restrito que contém os recursos aos quais a política deve ser aplicada. Um escopo mais amplo incorpora recursos protegíveis não relacionados à correspondência de tags da política e pode conceder acesso onde não se pretendia.
- Utilize a herança de tags para defaults seguros. Os valores de tag padrão devem ser aplicados no catálogo ou esquema pai para que os descendentes os herdem. A tag herdada deve ser sobrescrita apenas nos objetos específicos que precisam de um valor diferente. Combine isso com
EXCEPTpara lidar com exceções controladas a uma política. - Não misture políticas GRANT e concessões diretas para o mesmo privilégio. Para um determinado privilégio em um securable, escolha políticas GRANT ou concessões diretas, não ambos. As políticas de GRANT se unem às concessões diretas; portanto, misturá-las no mesmo recurso protegível dificulta a compreensão de quem tem acesso e a auditoria das alterações.
- Use concessões diretas para
USE CATALOGeUSE SCHEMA, políticas GRANT paraEXECUTE. Políticas GRANT não concedem os pré-requisitosUSE CATALOGeUSE SCHEMAnecessários para acessar um modelo. Conceda-os diretamente e use uma política GRANT para definir o escopo deEXECUTEem modelos individuais por tag.
Limitações
- Apenas o privilégio
EXECUTEem modelos é suportado.CREATE MODEL,CREATE MODEL VERSIONeAPPLY TAGnão são suportados por políticas GRANT e devem ser concedidos diretamente. - As permissões de pré-requisito
USE SCHEMAeUSE CATALOG, que um usuário precisa para acessar um modelo, não são suportadas pelas políticas GRANT e devem ser concedidas diretamente. - Uma política pode ser anexada ao catálogo ou ao esquema, e não ao modelo.
SHOW GRANTSnão retorna privilégios concedidos por uma política GRANT.INFORMATION_SCHEMAnão inclui políticas GRANT.- A exclusão de um modelo ou de uma versão do modelo não é contemplada pelas políticas GRANT. Consulte Gerenciar o ciclo de vida do modelo no Unity Catalog para saber como excluir versões e modelos de modelo.
- Não é possível usar Delta Sharing para compartilhar modelos que têm políticas GRANT definidas neles.
Mais informações
Consulte também Gerenciar privilégios no Unity Catalog.