Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Les garde-fous dans les politiques
Cette section explique comment définir les garde-corps Bedrock dans une politique. Bedrock Guardrails fournit des garanties configurables qui peuvent être exécutées à la fois sur les demandes et les réponses afin de garantir la sécurité des applications d'IA. Vous pouvez actuellement définir une attaque rapide, un filtre de contenu et des mesures de protection contre les informations sensibles dans une politique. Chaque garde-corps doit être configuré avec une catégorie et un seuil compris entre 0 et 1.
Lorsqu'un garde-fou évalue le contexte, il renvoie un score de confiance compris entre 0 et 1, indiquant le degré de confiance que le contenu évalué présente la propriété définie (par exemple). PROMPT_INJECTION
Disponibilité régionale des garde-corps
Le tableau suivant indique AWS les régions qui soutiennent les garde-fous dans leurs politiques :
| USA Est (Virginie du Nord) | USA Est (Ohio) | USA Ouest (Californie du Nord) | US West (Oregon) | Asie-Pacifique (Hyderabad) | Asie-Pacifique (Malaisie) | Asie-Pacifique (Mumbai) | Asie-Pacifique (Séoul) | Asie-Pacifique (Singapour) | Asie-Pacifique (Sydney) | Asie-Pacifique (Thaïlande) | Asie-Pacifique (Tokyo) | Canada (Centre) | Europe (Francfort) | Europe (Irlande) | Europe (Londres) | Europe (Milan) | Europe (Paris) | Europe (Espagne) | Europe (Stockholm) | Amérique du Sud (São Paulo) | AWS GovCloud (US-West) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Support de garde-corps |
✓ Oui |
✓ Oui |
Non |
✓ Oui |
Non |
Non |
Non |
Non |
Non |
✓ Oui |
Non |
✓ Oui |
Non |
Non |
Non |
✓ Oui |
Non |
Non |
Non |
✓ Oui |
Non |
Non |
Avant de commencer
Avant de commencer, vous devez configurer correctement votre rôle IAM.
Permissions
Le rôle d'exécution de la AgentCore passerelle configuré sur la passerelle associée à votre moteur de politiques doit disposer d'autorisations à la fois pour les AgentCore opérations Bedrock et pour Bedrock Guardrails. L'bedrock:InvokeGuardrailChecksautorisation est requise car le plan de données Policy utilise les informations d'identification FAS (Forward Access Session) dérivées du rôle d'exécution de la passerelle pour appeler l'API Bedrock Guardrails en votre nom.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock-agentcore:*", "Resource": "*" }, { "Effect": "Allow", "Action": "bedrock:InvokeGuardrailChecks", "Resource": "*" } ] }
Garde-corps supportés
| Nom de la sauvegarde | Type d'entité | Catégories de sauvegarde |
|---|---|---|
|
Filtre de contenu |
|
|
|
Détection rapide des attaques |
|
|
|
Informations sensibles |
|
|
Définition de garde-fous dans les politiques
Pour définir des barrières dans une politique, vous pouvez écrire la politique sous forme de code ou la décrire en langage naturel. Comme pour toutes les politiques existantes que vous avez peut-être déjà créées, vous devez spécifier un effet (par exemplepermit) avec une condition (when guardrails). Dans cette condition, vous devez fournir la protection de garde-corps spécifique que vous souhaitez activer, la catégorie de protection à utiliser, le contexte que vous souhaitez que la protection de garde-corps évalue et le seuil de score de confiance.
Exemple de définition d'un garde-corps
suppressOutput (principal, action == AgentCore::Action::"<TARGET_NAME>_<METHOD>:<URI>", resource == AgentCore::Gateway::"<GATEWAY_ARN>") when guardrails { BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])["HATE"] .confidenceScore .greaterThan(decimal("0.2")) };
Spécifier une protection de garde-corps
Pour choisir un type d'entité de sauvegarde spécifique, utilisez l' BedrockGuardrails espace de noms :
| Sauvegarde | Nom de la fonction Guardrail |
|---|---|
|
Filtre de contenu |
|
|
Attaque rapide |
|
|
Informations sensibles |
|
Sélection d'une catégorie de sauvegarde
Sélectionnez une catégorie pour la sauvegarde donnée (voirGarde-corps supportés).
p. ex. BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])
Effets pour les garde-corps
Pour créer des barrières à utiliser dans les demandes d'autorisation, utilisez les effets permit etforbid. Elles continuent de régir l'autorisation des demandes.
forbid (principal, action == AgentCore::Action::"<TargetName>___POST:/invocations", resource) when guardrails { BedrockGuardrails::PromptAttack(["PROMPT_INJECTION"], [context.input.prompt])["PROMPT_INJECTION"].confidenceScore.greaterThan(decimal("0.6")) };
Pour créer des barrières destinées à supprimer les sorties d'outils, d'agents ou de modèles, utilisez cet effet. suppressOutput suppressOutputest un nouvel effet qui agit sur les données renvoyées par une action. Une fois qu'une action autorisée est terminée, il évalue les sorties par rapport au garde-corps et supprime la sortie lorsque le garde-corps est violé.
suppressOutput (principal, action == AgentCore::Action::"<TargetName>___POST:/invocations", resource) when guardrails { BedrockGuardrails::SensitiveInformation(["US_SOCIAL_SECURITY_NUMBER"], [context.output.text])["US_SOCIAL_SECURITY_NUMBER"] .confidenceScore .greaterThan(decimal("0.5")) };
Note
suppressOutputn'est pris en charge que pour les politiques de garde-corps. Son état doit consister uniquement en des contrôles de garde-corps, écrits soit en bloc, soit en when guardrails {…} bloc brutwhen {…}. suppressOutputne prend pas en charge le Cedar ou temporal {…} les conditions standard.
Transmettre le contexte à votre garde-corps
Lorsque vous définissez des garde-fous dans une politique, vous devez spécifier des chemins de données (par exemplecontext.input.message) qui identifient les valeurs à extraire de la charge utile de l'action. Le garde-corps évalue les valeurs extraites. Vous pouvez spécifier un ou plusieurs chemins d'accès aux données en fonction de votre schéma de demande ou de réponse.
p. ex. [context.input.message, context.input.systemPrompt]
Seuils pour les garde-corps
Grâce aux filtres de contenu et à la détection rapide des attaques, le garde-fou renvoie un score de confiance, qui est une valeur numérique comprise dans la plage [0, 1], où 0 correspond à un niveau de confiance faible et 1 à un niveau de confiance élevé. Le score représente le degré de confiance avec lequel le garde-corps a détecté une violation. Les scores possibles actuels sont des valeurs discrètes {0, 0,2, 0,4, 0,6, 0,8 et 1,0}.
Pour définir un seuil, vous devez fournir la valeur décimale à l'opérateur de comparaison (par exemplegreaterThan(decimal("0.4"))).
Opérateurs de comparaison de scores
Vous pouvez appliquer les opérateurs de comparaison ci-dessous à l'un confidenceScore maxConfidenceScore() des opérateurs minConfidenceScore() suivants :
| Opérateur | Usage |
|---|---|
|
|
Score > seuil |
|
|
Score ≥ seuil |
|
|
Score < seuil |
|
|
Score ≤ seuil |
Vous pouvez utiliser une agrégation dans votre politique pour extraire et comparer les scores renvoyés par les garde-corps :
Agrégations
| Agrégation | Description | Exemple |
|---|---|---|
|
|
Accédez au score de confiance pour une catégorie spécifique (décimal |
|
|
|
Confiance maximale pour toutes les catégories scannées (décimal |
|
|
|
Confiance minimale pour toutes les catégories scannées (décimal |
|
|
|
Nombre de résultats détectés (long |
|
Comment choisir un seuil
Si vous ne spécifiez pas de seuil lorsque vous demandez au service de création, AgentCore définissez une valeur par défaut. Si vous rédigez vos politiques sans l'aide du service de création, vous devez fournir la valeur de seuil.
Les valeurs par défaut ci-dessous sont calibrées pour fournir une couverture étendue avec une précision acceptable pour la plupart des charges de travail :
| Sauvegarde | Seuil par défaut |
|---|---|
|
Filtre de contenu |
0.2 |
|
Détection rapide des attaques |
0.4 |
|
Informations sensibles |
0.2 |
Choix d'un seuil personnalisé
Si les seuils par défaut ne répondent pas à vos exigences, vous pouvez déterminer le seuil optimal pour votre charge de travail en utilisant l'une des approches suivantes.
Option 1 : évaluer par rapport à un ensemble de tests en or
Utilisez cette approche lorsque vous disposez d'un ensemble organisé d'entrées de test avec des résultats attendus clairs.
-
Créez vos politiques et définissez le mode de votre moteur de politiques sur LOG_ONLY.
-
Exécutez votre ensemble de tests via la passerelle à laquelle votre moteur de politique est connecté.
-
Consultez les journaux de chaque évaluation. Chaque entrée du journal inclut le contenu évalué et le score de confiance renvoyé par le garde-corps.
-
Pour chaque résultat, indiquez si le garde-corps aurait dû signaler le contenu ou ne rien faire (vrai et faux respectivement).
-
À l'aide de ces étiquettes, combinées aux scores de confiance disponibles dans vos journaux, créez une matrice de confusion à plusieurs valeurs de seuil. Comparez la précision et le rappel à chaque seuil pour sélectionner la valeur qui correspond à votre tolérance aux faux positifs par rapport aux détections manquées.
Option 2 : évaluer par rapport au trafic de production
Utilisez cette approche lorsque vous ne disposez pas d'un ensemble de tests prédéfini et que vous souhaitez calibrer à l'aide de modèles de trafic réels.
-
Créez vos politiques et définissez le mode de votre moteur de politiques sur LOG_ONLY.
-
Autorisez le moteur de politiques à évaluer le trafic de production. Chaque entrée du journal inclut le contenu évalué et le score de confiance renvoyé par le garde-corps.
-
Utilisez un LLM-as-a-judge pour étiqueter chaque résultat enregistré comme vrai (le garde-corps aurait dû signaler le contenu) ou faux (le garde-corps n'aurait pas dû signaler le contenu).
-
À l'aide de ces étiquettes, créez une matrice de confusion à plusieurs valeurs de seuil. Comparez la précision et le rappel à chaque seuil pour sélectionner la valeur qui correspond à votre tolérance aux faux positifs par rapport aux détections manquées.
Tester les garde-fous dans les politiques
AgentCore fournit plusieurs mécanismes pour tester les politiques de protection avant de les appliquer au trafic de production. Vous pouvez contrôler l'application au niveau du moteur de politiques, au niveau de chaque stratégie, ou les deux, ce qui vous permet de valider le comportement des garde-corps de manière incrémentielle. Consultez la section Tester une politique pour plus d'informations.
Comment les garde-corps fonctionnent avec les politiques
Les politiques de garde-corps peuvent être appliquées à n'importe quelle cible de passerelle. Les garde-corps s'exécutent sur : * Cibles MCP — POST /mcp (JSON-RPC tools/call) * Cibles d'exécution HTTP — * Cibles d'POST /<target>/invocationsinférence HTTP — POST /inference
Lorsqu'un appel arrive sur votre passerelle, l'évaluateur de politiques effectue les opérations suivantes :
-
Correspond à la portée : identifie les politiques de protection qui s'appliquent à cette demande
-
Extrait le contenu — Extrait le champ spécifié par
dataPath(par exemple,context.input.message) du corps de la requête -
InvokeGuardrailChecks API Calls Bedrock : évalue le contenu et injecte les scores de confiance renvoyés dans le contexte de l'évaluation des politiques
-
Évalue la politique à l'aide de scores de sécurité — Compare les scores de confiance renvoyés par rapport au seuil défini dans la politique
-
Renvoie une décision —
ALLOWouDENYavec des annotations de politique — à la passerelle
Remarque : Les garde-corps ne sont pas déterministes. La même entrée peut donner lieu à des sorties différentes. Cependant, les politiques sont déterministes, la même entrée produira toujours le même résultat.
Limites des garde-corps dans la politique
-
Aucune prise en charge des expressions régulières ou de la correspondance de modèles : les garde-corps utilisent la notation ML, pas des expressions régulières
-
Vous ne pouvez pas mélanger les polices d'assurance Cedar standard avec des garde-corps : elles remplacent
when guardrails {…}when {…} -
Un garde-corps est obligatoire dans un
when guardrails {…}bloc — les blocs de garde-corps doivent comporter au moins un garde-corps défini à l'intérieur -
suppressOutputest pris en charge uniquement pour les politiques de garde-corps. Son état doit consister uniquement en des contrôles de garde-corps et ne prend pas en charge les conditions Cedar ou les conditions standardtemporal {…}