Aller au contenu principal

Exemples de politiques de service

info

Bêta

Cette fonctionnalité est en bêta. Les administrateurs de compte peuvent contrôler l'accès à cette fonctionnalité depuis la page **Previews** de la console de compte. Voir Gérer les prévisualisations Databricks.

Ces exemples de politiques de service personnalisées couvrent des scénarios de gouvernance courants pour les modèles d'IA et les services MCP. Elles se répartissent en deux types de politiques personnalisées :

  • Politiques SQL déterministes : une fonction SQL qui prend une décision exacte basée sur des règles (un nom d'outil, une valeur d'argument, un mot-clé, une longueur). Utilisez-les lorsque la règle est précise et reproductible.
  • Politiques LLM-as-a-judge : un classificateur en langage naturel qu’un modèle d’évaluation applique à la requête ou à la réponse. Utilisez-les lorsque la vérification est sémantique (intention, sujet, ton) et qu’aucune règle exacte ne la couvre.

Pour connaître la procédure complète de création et d'association d'une politique, consultez Créer et associer une politique de service. Pour les champs event, la valeur de retour et le sous-ensemble SQL pris en charge, consultez Référence des fonctions de politique de service. Pour les garde-fous intégrés couvrant les IPI, le contenu dangereux, le jailbreak et les hallucinations sans code personnalisé, consultez Politiques de service intégrées.

Exemples de politiques SQL déterministes

Chaque exemple est une fonction définie par l'utilisateur (UDF) SQL que vous enregistrez dans Unity Catalog et attachez à un service. La politique s'exécute aux deux points d'évaluation ; ainsi, chaque fonction Branch sur event:type::string ('request' pour ON CALL, 'response' pour ON RESULT) et renvoie un ALLOW explicite pour chaque chemin qu'elle ne bloque pas.

remarque

Les politiques de service sont fail-closed (échec par fermeture) : un champ manquant, une fonction non prise en charge ou toute erreur d’évaluation entraîne DENY. Effectuez toujours un cast d’un chemin VARIANT avant de le comparer à une valeur littérale (par exemple, event:type::string = 'request'), et terminez chaque fonction par une Branch ALLOW explicite. Le corps de la politique prend uniquement en charge un sous-ensemble restreint de SQL. Voir SQL pris en charge.

Bloquer les requêtes contenant des mots-clés spécifiques

Cette politique bloque les requêtes adressées à un Model Service ou à un Model Provider Service dont le message contient un terme figurant sur une liste de blocage, tel qu’un nom de code de projet interne. Il met le message en minuscules avec LOWER afin que la correspondance ne soit pas sensible à la casse.

SQL
CREATE OR REPLACE FUNCTION main.governance.block_codenames(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND (
CONTAINS(LOWER(event:context.message::string), 'projectfalcon')
OR CONTAINS(LOWER(event:context.message::string), 'bluewidget')
OR CONTAINS(LOWER(event:context.message::string), 'codename-atlas')
)
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Your request references a restricted internal or competitor codename.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Bloquer les demandes concernant des sujets restreints

Cette politique bloque les requêtes adressées à un Model Service ou à un Model Provider Service qui mentionnent des sujets sur lesquels l'assistant ne doit pas s'engager, identifiés par mot-clé. Il s'agit de la forme déterministe d'un bloc de sujet. Lorsque le sujet est nuancé et qu'une liste de mots-clés est trop imprécise, utilisez plutôt une politique LLM-as-a-judge.

SQL
CREATE OR REPLACE FUNCTION main.governance.deny_restricted_topics(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND (
CONTAINS(LOWER(event:context.message::string), 'lawsuit')
OR CONTAINS(LOWER(event:context.message::string), 'legal advice')
OR CONTAINS(LOWER(event:context.message::string), 'investment advice')
)
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'This assistant does not handle legal or investment topics.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;
remarque

Le sous-ensemble SQL de la politique correspond aux sous-chaînes avec CONTAINS, LIKE, STARTSWITH et ENDSWITH; les expressions régulières (regexp_*) ne sont pas prises en charge. La correspondance de sous-chaîne ne peut pas valider un format qui dépend d’une structure ou d’une somme de contrôle, tel qu’un ID national ou un numéro de compte. Pour ces vérifications, utilisez un garde-fou intégré lorsqu'il y en a un. Voir SQL pris en charge.

Limiter la longueur du prompt

Cette politique refuse les requêtes adressées à un Model Service ou à un service de fournisseur de modèle dont le message dépasse une limite de caractères. Les prompts très longs sont souvent des dumps copiés-collés ou des tentatives de « prompt-stuffing », et ils augmentent la latence et les coûts.

SQL
CREATE OR REPLACE FUNCTION main.governance.deny_oversized_prompt(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND LENGTH(event:context.message::string) > 8000
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Your prompt exceeds the 8000-character limit for this service.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Exiger une approbation lorsqu’un agent agit pour le compte d’un utilisateur

Cette politique utilise le contexte d’acteur « on-behalf-of » (OBO) pour suspendre une action d’écriture en attente d’une approbation humaine lorsqu’un agent, plutôt qu’une personne, appelle un outil sensible sur un MCP Service . Le résultat ASK suspend l’appel jusqu’à ce qu’une personne l’approuve.

SQL
CREATE OR REPLACE FUNCTION main.governance.ask_when_agent_writes(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND event:context.actor.context.is_on_behalf_of::boolean = true
AND event:context.tool.name::string IN ('create_issue', 'push_files', 'merge_pull_request')
THEN to_variant_object(named_struct('result', 'ASK', 'reason', 'An agent is attempting a write action on your behalf. Please confirm.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Pour savoir comment Databricks transmet l’invite d’approbation ASK à un agent externe, consultez Rédiger une politique de décision.

Bloquer les réponses qui exposent des URL internes

Cette politique s'exécute sur le résultat (ON RESULT) : elle inspecte la réponse du modèle sur un Model Service ou un Model Provider Service et bloque les réponses qui font référence à un hôte interne uniquement. Comme elle Branch sur event:type::string = 'response', elle évalue la réponse plutôt que la requête.

SQL
CREATE OR REPLACE FUNCTION main.governance.block_internal_links_in_response(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'response'
AND (
CONTAINS(LOWER(event:context.message::string), 'wiki.internal.example.com')
OR CONTAINS(LOWER(event:context.message::string), 'admin.example.com')
)
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'The response was blocked because it referenced an internal-only URL.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Bloquer un appel d’outil par ses arguments

Cette politique inspecte les arguments d’un outil et bloque les appels ciblant une ressource protégée, tout en autorisant tous les autres appels. Il s’applique à un service MCP . L’exemple publié deny a GitHub push bloque un outil par son nom ; celui-ci va un niveau plus loin et vérifie la valeur d’un argument.

SQL
CREATE OR REPLACE FUNCTION main.governance.block_protected_repo(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND event:context.tool.arguments.repo::string = 'prod-infra'
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Actions on the prod-infra repository are not permitted through the agent.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Autoriser uniquement les outils approuvés

Cette politique est une liste d'autorisation avec refus par default pour un Service MCP : elle autorise un ensemble fixe d'outils en lecture seule et bloque tout autre appel d'outil. Le refus par default est le modèle le plus sûr, car un outil ajouté ultérieurement au serveur est bloqué tant que vous ne l'ajoutez pas à la liste.

SQL
CREATE OR REPLACE FUNCTION main.governance.tool_allowlist(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND event:context.tool.name::string NOT IN ('search_issues', 'get_file_contents', 'list_commits')
THEN to_variant_object(named_struct('result', 'DENY', 'reason', CONCAT('Tool is not on the approved allowlist for this service: ', event:context.tool.name::string)))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;

Exemples de politique LLM-as-a-judge

Une politique LLM-as-a-judge utilise un modèle d'évaluation pour classer la requête ou la réponse en fonction de critères que vous décrivez en langage naturel. Utilisez-le pour des vérifications sémantiques qu'une règle déterministe ne peut pas exprimer, comme déterminer si un message est hors sujet ou si une réponse reste professionnelle.

Pour en créer un, suivez la procédure attach a policy, mais dans Guardrail type , sélectionnez Custom , puis définissez Type sur LLM-as-a-judge . Saisissez votre classificateur dans le champ Prompt et sélectionnez un Evaluator model service (vous avez besoin de CAN QUERY sur le modèle que vous choisissez).

Vous écrivez uniquement les critères qui décrivent ce qu'il faut signaler . Databricks ajoute un contrat de sortie structurée à votre invite, afin que l'évaluateur renvoie une décision JSON (un booléen flagged et un score confidence) plutôt que du texte libre. N'écrivez pas ALLOW ou DENY dans l'invite et ne spécifiez pas de format de sortie. Lorsque l'évaluateur signale du contenu, Databricks bloque l'interaction.

remarque

Les exemples de cette section s'exécutent sur des services de modèles et bloquent le contenu signalé. Pour suspendre une interaction en attente d'une approbation humaine au lieu de la bloquer, utilisez le résultat ASK, qui s'applique aux services MCP. Voir Exiger une approbation lorsqu'un agent agit au nom d'un utilisateur.

Maintenir un assistant sur le sujet

Cette politique s'exécute ON CALL sur un service de modèle . Il signale les requêtes qui sortent du champ d'application pris en charge par l'assistant, afin qu'un assistant conçu pour un usage spécifique ne soit pas utilisé comme un chatbot polyvalent.

Invite :

Vous examinez les messages envoyés à un assistant de support client qui ne peut aider qu'avec les produits, les commandes, la facturation et le support de compte de l'entreprise. Signalez le message s'il demande quelque chose en dehors de ce périmètre, comme une aide générale au codage, la rédaction d'essais, des questions triviales sans rapport ou l'utilisation de l'assistant comme chatbot polyvalent. Ne signalez pas une question authentique sur le produit ou le support.

Appliquer un ton professionnel

Cette politique s’exécute ON RESULT sur un Model Service . Il signale les réponses qui ne correspondent pas à l'image de marque ou qui sont non professionnelles, complétant ainsi le garde-fou block_unsafe_content intégré, qui cible les contenus dangereux plutôt que le ton.

Invite :

Vous examinez les réponses rédigées par un assistant accessible au public. Signalez la réponse si elle est impolie, sarcastique, dédaigneuse, condescendante, contient des termes grossiers ou si elle pouvait embarrasser l'entreprise si un client la voyait. Ne signalez pas une réponse qui est professionnelle, respectueuse et conforme à l'image de marque.

Conseils réglementés de Block

Cette politique s’exécute ON RESULT sur un Model Service . Il signale les réponses qui donnent des conseils réglementés individualisés, en les distinguant des informations générales non consultatives, ce qu’une règle de mot-clé ne peut pas faire de manière fiable.

Invite :

Vous examinez les réponses rédigées par un assistant de services financiers. Signalez la réponse si elle fournit des conseils personnalisés en matière d'investissement, de fiscalité ou de droit, ou une recommandation spécifique à une personne. Ne signalez pas une réponse qui fournit uniquement des informations générales sur le produit, des éléments éducatifs ou du contenu sans caractère de conseil.

Cet exemple bloque les réponses signalées. La mise en attente d'une interaction pour approbation humaine au lieu de son blocage utilise le résultat ASK, qui s'applique aux services MCP, comme dans Exiger une approbation lorsqu'un agent agit au nom d'un utilisateur.

Connexes