Pular para o conteúdo principal

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.

importante

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:

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.

  1. Crie uma tag controlada chamada access_status com o valor permitido approved. Consulte Gerenciar tags controladas.
  2. Aplique access_status = approved a cada serviço de provedor de modelos e serviço MCP que os usuários da account possam usar. Por exemplo, marque system.ai.github se 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.

SQL
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>');
SQL
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.

nota

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.

SQL
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');
SQL
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:

SQL
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:

SQL
GRANT USE CATALOG ON CATALOG system TO `account users`;
GRANT USE SCHEMA ON SCHEMA system.ai TO `account users`;

Revogue a concessão default:

SQL
REVOKE EXECUTE ON SCHEMA system.ai FROM `account users`;
atenção

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:

SQL
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 EXECUTE em um modelo ou serviço de modelo com um valor ai.model_family não excluído.
  • Os usuários não têm privilégios EXECUTE em um modelo ou serviço de modelo com o valor excluído.
  • Os usuários não têm privilégios EXECUTE em um ativo sem a tag ai.model_family.
  • Os usuários possuem privilégios de EXECUTE em um serviço de provedor de modelos ou serviço MCP com a tag access_status = approved.
  • Os usuários não têm privilégios de EXECUTE em 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 EXECUTE em 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.

Outros recursos​