Gerencie modelos e MCPs 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.
Os exemplos usam Serviços MCP fornecidos pela Databricks em system.ai, como system.ai.github. A mesma tag e os mesmos passos da política GRANT se aplicam a um Serviço MCP que você faz o registro em outro esquema. Substitua system.ai por esse esquema e analise suas concessões (grants) existentes antes de alterá-las.
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.
Requisitos
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 possam usar. Por exemplo, marquesystem.ai.githubse os usuários da account puderem invocá-lo. No Catalog Explorer, abra o serviço e adicione a tag controlada em Tags na página Overview dele. Você também pode usar a API de atribuições de tag de entidade do Unity Catalog. Consulte Adicionar e atualizar tags.
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');
Para criar essas políticas no Catalog Explorer, abra o esquema system.ai, selecione Policies > New policy e escolha Grant access . Crie uma política para cada tipo protegível. Para a política de MCP, selecione MCP serviço , conceda EXECUTE a All account users e defina uma condição personalizada de has_tag_value('access_status', 'approved'). Consulte Create a GRANT policy para ver todos os passos na IU.
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 precisarem acessar. Consulte Permissões de AI Functions no Unity Catalog.
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.
Revise as concessões diretas de EXECUTE em serviços do MCP e no esquema pai antes de depender da condição de tag para restringir o acesso. Uma concessão direta ou herdada ainda pode permitir o acesso a um serviço sem tags. Consulte Como as políticas de GRANT interagem com as concessões diretas.
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 a verificação de MCP, conecte um cliente MCP como esse usuário da account e invoque uma ferramenta em um serviço com tags, como system.ai.github. Em seguida, tente usar um serviço MCP sem tags em system.ai e confirme se o usuário não pode invocá-lo. O tutorial do GitHub sobre agentes de codificação mostra como conectar um cliente a system.ai.github.
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.