Tutoriel : Gouverner l'accès aux modèles 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.
À 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.
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 :
MANAGEsursystem.ai, ou la propriété du schéma.- Privilèges d’administrateur de compte ou de métastore pour supprimer l’autorisation
EXECUTEdefault desystem.ai. - Pour créer une politique GRANT avec SQL, une ressource de compute classique exécutant Databricks Runtime 18 LTS ou une version ultérieure. Consultez Configuration requise pour le compute.
- L’autorisation
CREATEsur les tags gouvernés,ASSIGNsur le tag gouverné, etAPPLY_TAGsur les assets que vous taguez. Voir Gérer les permissions sur les tags gouvernés.
É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.
- Créez un tag gouverné nommé
access_statusavec la valeur autoriséeapproved. Consultez Gérer les tags gouvernés. - Appliquez
access_status = approvedà chaque service de fournisseur de modèle et service MCP que les utilisateurs du compte peuvent utiliser. Vous pouvez attribuer des tags dans Catalog Explorer ou via l'API d'attribution de tags d'entité Unity Catalog.
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.
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>');
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.
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.
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');
É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 :
GRANT EXECUTE ON FUNCTION system.ai.python_exec TO `account users`;
Répétez cet octroi direct pour chaque AI Function à laquelle les utilisateurs doivent accéder. Pour plus d’informations, reportez-vous à la rubrique Autorisations AI Functions 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.
Avant de révoquer EXECUTE, assurez-vous que account users peut toujours utiliser le catalogue et le schéma :
GRANT USE CATALOG ON CATALOG system TO `account users`;
GRANT USE SCHEMA ON SCHEMA system.ai TO `account users`;
Révoquer l’octroi default :
REVOKE EXECUTE ON SCHEMA system.ai FROM `account users`;
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:
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
EXECUTEsur un modèle ou un service de modèle avec une valeurai.model_familynon exclue. - Les utilisateurs ne disposent pas des privilèges
EXECUTEsur un modèle ou un service de modèle avec la valeur exclue. - Les utilisateurs ne disposent pas des privilèges
EXECUTEsur un asset sans le tagai.model_family. - Les utilisateurs disposent des privilèges
EXECUTEsur un service de fournisseur de modèles ou un service MCP taguéaccess_status = approved. - Les utilisateurs ne disposent pas des privilèges
EXECUTEsur un service de fournisseur de modèle non tagué ou un service MCP via ces politiques. - Les utilisateurs disposent des privilèges
EXECUTEsur une fonction d’IA uniquement si vous les leur avez accordés directement.
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.