Aller au contenu principal

Gouverner les modèles et les MCP avec des politiques GRANT

Utilisez les politiques GRANT ABAC pour régir l’accès aux modèles, aux services de modèle, aux services de fournisseur de modèle et aux services MCP dans le schéma system.ai. Au lieu de maintenir un octroi direct sur chaque objet, créez une politique pour chaque type sécurisable pris en charge et faites correspondre les assets par leurs tags gouvernés.

The examples use Databricks-provided MCP Services in system.ai, such as system.ai.github. The same tag and GRANT policy steps apply to an MCP Service you register in another schema. Replace system.ai with that schema and review its existing grants before changing them.

À la fin de ce didacticiel, vous serez en mesure de :

  • Accordez dynamiquement l'accès aux modèles, aux services de modèle, aux services de fournisseur de modèle et aux services MCP en utilisant des tags gouvernés.
  • Supprimez l’accès à une famille de modèles sélectionnée tout en conservant les autres modèles étiquetés et services de modèles disponibles, ainsi que les services de fournisseur de modèles et les services MCP approuvés.

Le guide utilise le tag système ai.model_family que Databricks applique aux modèles et aux services de modèle dans system.ai. Pour les services de fournisseur de modèle et les services MCP, il utilise un tag gouverné défini par l'utilisateur, access_status = approved.

important

Les politiques GRANT ne prennent pas en charge les fonctions Unity Catalog. La suppression du privilège default EXECUTE de system.ai supprime également l’accès aux AI Functions. Ce tutoriel montre comment accorder l’accès aux fonctions requises avec des attributions directes.

Avant de commencer​

Les politiques de ce tutoriel s’appliquent au groupe account users, qui contient tous les utilisateurs et Service Principal du compte.

Vous devez disposer de :

Étape 1 : Créer des politiques GRANT​

Choisir une famille de modèles à exclure​

Les modèles et les services de modèle dans system.ai possèdent des tags système tels que ai.model_family et ai.model_creator qui sont appliqués automatiquement. Vous pouvez référencer ces tags directement dans une politique sans avoir à les créer ou à les assigner vous-même.

Pour créer des conditions de politique basées sur des tags supplémentaires, vous pouvez créer et assigner vos propres tags gouvernés et référencer ces tags dans les politiques GRANT.

Dans l’Explorateur de catalogues, inspectez les modèles et les services de modèle que vous souhaitez gouverner et choisissez une valeur ai.model_family à exclure. Dans les politiques suivantes, remplacez <excluded-model-family> par cette valeur.

Les politiques GRANT n’accordent l’accès que lorsqu’un asset correspond à la condition basée sur les tags de la politique. Dans les politiques suivantes, un modèle ou un service de modèle ne correspond que s’il possède un tag ai.model_family dont la valeur n’est pas <excluded-model-family>.

Créer un tag gouverné pour les services​

Pour gouverner l’accès aux services de fournisseur de modèle et aux services MCP, créez et attribuez un tag gouverné qui identifie les services auxquels les utilisateurs du compte peuvent accéder. Ce didacticiel utilise access_status = approved comme exemple.

  1. Créez un tag gouverné nommé access_status avec la valeur autorisée approved. Consultez Gérer les tags gouvernés.
  2. Appliquez access_status = approved à chaque service de fournisseur de modèle et service MCP que les utilisateurs du compte peuvent utiliser. Par exemple, ajoutez le tag system.ai.github si les utilisateurs du compte doivent pouvoir l’invoquer. Dans Catalog Explorer, ouvrez le service et ajoutez le tag gouverné sous l’onglet Tags de sa page Overview . Vous pouvez également utiliser l'élément Unity Catalog entity tag assignments API. Consultez la section Ajouter et mettre à jour des tags.

Créer des politiques pour les modèles et les services​

Une politique GRANT cible un type sécurisable. Créez des politiques distinctes pour les modèles et les services de modèle, en utilisant la même condition.

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

Les politiques accordent automatiquement des privilèges EXECUTE sur les nouveaux modèles et services de modèles lorsqu’ils possèdent un tag ai.model_family qui ne correspond pas à la valeur exclue. Les utilisateurs ne reçoivent pas de privilèges EXECUTE sur les ressources sans ce tag via ces politiques.

remarque

Les politiques précédentes accordent automatiquement EXECUTE aux modèles et services de modèle dont la valeur ai.model_family correspond à la condition. Si vous préférez contrôler explicitement les modèles et services de modèle auxquels les utilisateurs du compte peuvent accéder, utilisez plutôt votre propre tag gouverné. Par exemple, appliquez access_status = approved à chaque modèle ou service de modèle approuvé, puis utilisez has_tag_value('access_status', 'approved') comme condition de politique.

Pour les services de fournisseur de modèles et les services MCP, les politiques ci-dessous accordent EXECUTE lorsqu’un administrateur applique 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');

Pour créer ces politiques dans Catalog Explorer, ouvrez le schéma system.ai, sélectionnez Policies > New policy , et choisissez Grant access . Créez une politique pour chaque type d'élément sécurisable. Pour la politique MCP, sélectionnez MCP service , accordez EXECUTE à All account users , et définissez une condition personnalisée de has_tag_value('access_status', 'approved'). Consultez Create a GRANT policy pour connaître toutes les étapes de l'interface utilisateur.

Étape 2 : Accorder l’accès aux AI Functions​

Pour accorder l’accès à une fonction d’IA dans system.ai, accordez EXECUTE directement sur la fonction. Par exemple, l’instruction suivante accorde l’accès à la fonction intégrée python_exec :

SQL
GRANT EXECUTE ON FUNCTION system.ai.python_exec TO `account users`;

Répétez cette attribution directe pour chaque AI Function à laquelle les utilisateurs doivent accéder. Consultez la page Autorisations relatives aux AI Functions dans Unity Catalog.

Étape 3 : Supprimer l’octroi de privilèges sur le schéma default​

Après avoir créé les politiques GRANT, supprimez l'autorisation EXECUTE default au niveau du schéma.

Examinez les attributions directes de EXECUTE sur les services MCP et leur schéma parent avant de vous appuyer sur la condition de tag pour restreindre l'accès. Une attribution directe ou héritée peut toujours autoriser l'accès à un service sans tag. Consultez la page How GRANT policies interact with direct grants.

Avant de révoquer EXECUTE, assurez-vous que account users peut toujours utiliser le catalogue et le schéma :

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

Révoquer l’octroi default :

SQL
REVOKE EXECUTE ON SCHEMA system.ai FROM `account users`;
attention

Ce changement affecte chaque utilisateur du compte et chaque asset exécutable dans system.ai, y compris les modèles, les services de modèle, les services de fournisseur de modèle, les services MCP et les AI Functions.

Étape 4 : Vérifier l’accès​

Confirmez que les politiques sont attachées à system.ai:

SQL
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;

Testez en tant qu'utilisateur de compte ne disposant d'aucun autre droit EXECUTE pour confirmer ce qui suit :

  • L’utilisateur dispose des privilèges EXECUTE sur un modèle ou un service de modèle avec une valeur ai.model_family non exclue.
  • Les utilisateurs ne disposent pas des privilèges EXECUTE sur un modèle ou un service de modèle avec la valeur exclue.
  • Les utilisateurs ne disposent pas des privilèges EXECUTE sur un asset sans le tag ai.model_family.
  • Les utilisateurs disposent des privilèges EXECUTE sur un service de fournisseur de modèles ou un service MCP tagué access_status = approved.
  • Les utilisateurs ne disposent pas des privilèges EXECUTE sur un service de fournisseur de modèle non tagué ou un service MCP via ces politiques.
  • Les utilisateurs disposent des privilèges EXECUTE sur une fonction d’IA uniquement si vous les leur avez accordés directement.

Pour la vérification MCP, connectez un client MCP en tant qu'utilisateur de ce compte et appelez un outil sur un service étiqueté, tel que system.ai.github. Essayez ensuite un service MCP non étiqueté dans system.ai et confirmez que l'utilisateur ne peut pas l'invoquer. Le tutoriel GitHub sur l'agent de codage montre comment connecter un client à system.ai.github.

Pour exclure une famille de modèles différente, utilisez CREATE OR REPLACE POLICY pour mettre à jour <excluded-model-family> dans les conditions WHEN de grant_allowed_models et grant_allowed_model_services. Les politiques mises à jour accordent EXECUTE uniquement aux modèles et services de modèle dont la valeur ai.model_family diffère de la valeur exclue.

Pour les services de fournisseur de modèle et les services MCP, appliquez ou supprimez access_status = approved afin de modifier les services qui reçoivent EXECUTE.

Ressources supplémentaires​