Pular para o conteúdo principal

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.

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.

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:

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 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.

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

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

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