Tutorial: governar o acesso a modelos com políticas GRANT
Use políticas GRANT ABAC para governar o acesso a modelos, serviços de modelo, serviços de provedor de modelos e serviços MCP no esquema system.ai. Em vez de manter uma concessão direta em cada objeto, crie uma política para cada tipo protegível suportado e corresponda os ativos por suas tags controladas.
Ao final deste tutorial, você poderá:
- Conceda acesso dinamicamente a modelos, serviços de modelo, serviços de provedor de modelos e serviços MCP usando tags governadas.
- Remova o acesso a uma família de modelos selecionada enquanto mantém outros modelos e serviços de modelo marcados com tag disponíveis, juntamente com serviços de provedor de modelos aprovados e serviços MCP.
O passo a passo usa a tag de sistema ai.model_family que o Databricks aplica a modelos e serviços de modelo em system.ai. Para serviços de provedor de modelos e serviços MCP, ele usa uma tag governada definida pelo usuário, access_status = approved.
Políticas de GRANT não suportam funções do Unity Catalog. Remover o privilégio default EXECUTE de system.ai também remove o acesso a AI Functions. Este tutorial mostra como conceder acesso às funções necessárias com concessões diretas.
Antes de começar
As políticas neste tutorial aplicam-se ao grupo account users, que contém todos os usuários da conta e Service Principal.
Você deve ter:
MANAGEemsystem.ai, ou propriedade do esquema.- Privilégios de administrador de account ou administrador de metastore para remover a permissão default
EXECUTEdesystem.ai. - Para criar uma política GRANT com SQL, um recurso de compute clássico executando o Databricks Runtime 18 LTS ou acima. Consulte Requisitos de compute.
- A permissão
CREATEem tags controladas,ASSIGNna tag controlada eAPPLY_TAGnos ativos que você marcar. Consulte Gerenciar permissões em tags controladas.
Etapa 1: Criar políticas de GRANT
Escolha uma família de modelos para excluir
Modelos e serviços de modelo em system.ai possuem tags de sistema como ai.model_family e ai.model_creator que são aplicadas automaticamente. Você pode referenciar essas tags diretamente em uma política sem criá-las ou atribuí-las por conta própria.
Para criar condições de política com base em tags adicionais, você pode criar e atribuir suas próprias tags governadas e referenciar essas tags em políticas GRANT.
No Explorador de Catálogos, inspecione os modelos e serviços de modelo que você deseja governar e escolha um valor ai.model_family para excluir. Nas políticas a seguir, substitua <excluded-model-family> por esse valor.
As políticas GRANT concedem acesso apenas quando um ativo corresponde à condição baseada em tags da política. Nas políticas a seguir, um modelo ou serviço de modelo corresponde apenas quando possui uma tag ai.model_family cujo valor não é <excluded-model-family>.
Criar uma tag governada para serviços
Para governar o acesso aos serviços de provedor de modelo e serviços MCP, crie e atribua uma tag governada que identifique os serviços que os usuários da account podem acessar. Este tutorial usa access_status = approved como exemplo.
- Crie uma tag controlada chamada
access_statuscom o valor permitidoapproved. Consulte Gerenciar tags controladas. - Aplique
access_status = approveda cada serviço de provedor de modelos e serviço MCP que os usuários da account podem usar. Você pode atribuir tags no Catalog Explorer ou por meio da API de atribuições de tag de entidade do Unity Catalog.
Criar políticas para modelos e serviços
Uma política GRANT tem como alvo um tipo de objeto protegível. Crie políticas separadas para modelos e serviços de modelo, utilizando a mesma condição.
CREATE POLICY grant_allowed_models
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on models outside the excluded family'
TO `account users`
GRANT EXECUTE FOR MODELS
WHEN has_tag('ai.model_family')
AND NOT has_tag_value('ai.model_family', '<excluded-model-family>');
CREATE POLICY grant_allowed_model_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on model services outside the excluded family'
TO `account users`
GRANT EXECUTE FOR MODEL SERVICES
WHEN has_tag('ai.model_family')
AND NOT has_tag_value('ai.model_family', '<excluded-model-family>');
As políticas concedem automaticamente privilégios EXECUTE em novos modelos e serviços de modelo quando eles possuem uma tag ai.model_family que não corresponde ao valor excluído. Os usuários não recebem privilégios EXECUTE em ativos sem essa tag por meio dessas políticas.
As políticas anteriores concedem automaticamente EXECUTE a modelos e serviços de modelo cujo valor de ai.model_family corresponde à condição. Se você preferir controlar explicitamente quais modelos e serviços de modelo os usuários da account podem acessar, use sua própria tag governada. Por exemplo, aplique access_status = approved a cada modelo ou serviço de modelo aprovado e, em seguida, use has_tag_value('access_status', 'approved') como a condição de política.
Para serviços de provedor de modelos e serviços MCP, as políticas abaixo concedem EXECUTE quando um administrador aplica access_status = approved.
CREATE POLICY grant_allowed_model_provider_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on approved model provider services'
TO `account users`
GRANT EXECUTE FOR MODEL PROVIDER SERVICES
WHEN has_tag_value('access_status', 'approved');
CREATE POLICY grant_allowed_mcp_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on approved MCP services'
TO `account users`
GRANT EXECUTE FOR MCP SERVICES
WHEN has_tag_value('access_status', 'approved');
O passo 2: Conceder acesso a AI Functions
Para conceder acesso a uma AI Function em system.ai, conceda EXECUTE diretamente na função. Por exemplo, a instrução a seguir concede acesso à função python_exec integrada:
GRANT EXECUTE ON FUNCTION system.ai.python_exec TO `account users`;
Repita essa concessão direta para cada AI Function que os usuários precisam acessar. Para obter mais informações, consulte Permissões do Unity Catalog para AI Functions.
Etapa 3: remover a concessão do esquema default
Após criar as políticas de GRANT, remova o GRANT EXECUTE default no nível de esquema.
Antes de revogar EXECUTE, certifique-se de que account users ainda possa usar o catálogo e o esquema:
GRANT USE CATALOG ON CATALOG system TO `account users`;
GRANT USE SCHEMA ON SCHEMA system.ai TO `account users`;
Revogue a concessão default:
REVOKE EXECUTE ON SCHEMA system.ai FROM `account users`;
Esta alteração afeta todos os usuários da account e todos os ativos executáveis em system.ai, incluindo modelos, serviços de modelo, serviços de provedor de modelos, serviços MCP e AI Functions.
Passo 4: Verificar acesso
Confirme se as políticas estão anexadas a system.ai:
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;
Teste como um usuário da account que não possui outras concessões EXECUTE para confirmar o seguinte:
- O usuário tem privilégios
EXECUTEem um modelo ou serviço de modelo com um valorai.model_familynão excluído. - Os usuários não têm privilégios
EXECUTEem um modelo ou serviço de modelo com o valor excluído. - Os usuários não têm privilégios
EXECUTEem um ativo sem a tagai.model_family. - Os usuários possuem privilégios de
EXECUTEem um serviço de provedor de modelos ou serviço MCP com a tagaccess_status = approved. - Os usuários não têm privilégios de
EXECUTEem um serviço de provedor de modelos ou serviço MCP sem tag por meio destas políticas. - Os usuários têm privilégios
EXECUTEem uma AI Function apenas se você os concedeu diretamente.
Para excluir uma família de modelos diferente, use CREATE OR REPLACE POLICY para atualizar <excluded-model-family> nas condições WHEN de ambos grant_allowed_models e grant_allowed_model_services. As políticas atualizadas concedem EXECUTE apenas a modelos e serviços de modelo cujo valor de ai.model_family difere do valor excluído.
Para serviços de provedor de modelos e serviços MCP, aplique ou remova access_status = approved para alterar quais serviços recebem EXECUTE.