View a markdown version of this page

Schémas politiques communs - Amazon Bedrock AgentCore

Schémas politiques communs

Ces exemples illustrent les modèles de politique fréquemment utilisés par Cedar. Les modèles fonctionnent à la fois avec l'authentification OAuth et IAM. Sélectionnez le type principal approprié pour la configuration de votre passerelle. AgentCore Pour plus de détails sur les attributs principaux, voir Attributs principaux.

Ces modèles s'appliquent quel que soit le type d'authentification.

Arrêt d'urgence

Désactivez tous les appels d'outils sur l'ensemble de la passerelle :

forbid( principal, action, resource );

Cas d'utilisation : arrêt d'urgence, mode maintenance ou réponse à un incident.

Effet : remplace toutes les politiques d'autorisation en raison de la sémantique prohibid-wins.

Désactiver un outil spécifique

Désactivez un outil spécifique tout en préservant le fonctionnement des autres :

forbid( principal, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" );

Cas d'utilisation : désactivez temporairement un outil problématique sans affecter les autres fonctionnalités.

Bloquer l'accès des utilisateurs

Empêchez des utilisateurs ou des comptes spécifiques d'effectuer des actions :

OAuth : bloquer un utilisateur spécifique

Bloquez un utilisateur en faisant correspondre son nom d'utilisateur :

forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };

Cas d'utilisation : révoquez immédiatement l'accès d'un compte utilisateur compromis ou suspendu.

IAM : Bloquer un compte spécifique

Bloquer les appels provenant d'un AWS compte spécifique :

forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };

Cas d'utilisation : empêcher les comptes de test ou non autorisés d'accéder aux outils de production. Le modèle :444455556666: correspond à n'importe quel format ARN (rôle assumé, utilisateur IAM ou rôle IAM) contenant cet ID de compte.

Role-based contrôle d'accès

Limitez l'accès en fonction des rôles. OAuth utilise des balises de rôle ; IAM utilise des modèles d'ARN de rôle.

OAuth : utilisation de balises de rôle

N'autorisez l'accès qu'aux utilisateurs ayant des rôles spécifiques :

permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" ) when { principal.hasTag("role") && (principal.getTag("role") == "admin" || principal.getTag("role") == "manager") };

Cas d'utilisation : autorisez les opérations administratives uniquement pour les utilisateurs ayant des rôles d'administrateur ou de responsable.

IAM : utilisation des ARN des rôles IAM

N'autorisez l'accès qu'aux appelants utilisant des rôles IAM spécifiques. Vous pouvez utiliser la principal == correspondance exacte ou la principal.id like correspondance des modèles :

// Exact match (recommended for single-role policies) permit( principal == AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/AdminRole", action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" );

Cas d'utilisation : autorisez les opérations administratives uniquement pour les appelants assumant le rôle AdminRole IAM. L'ID d'entité Cedar pour les rôles assumés utilise le formatarn:aws:sts::<account>:assumed-role/<role-name>.

Variations utilisant la correspondance de motifs :

// Match a specific role from any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole" // Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*"

Opérations relatives aux types de données

Cedar prend en charge différents types de données en fonction des conditions. Ces exemples utilisent les principes OAuth (). AgentCore::OAuthUser Pour les IAM-authenticated passerelles, utilisez AgentCore::IamEntity plutôt : la logique de validation des entrées reste identique.

Entiers (longs)

// Check if passenger count is exactly 2 permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"TravelAPI___search_flights", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/travel" ) when { context.input.passengers == 2 };

Chaînes

// Check if payment method is credit card permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"PaymentAPI___process_payment", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/payment" ) when { context.input.paymentMethod == "credit-card" };

Listes (ensembles)

// Check if country is in allowed list permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"ShippingAPI___calculate_rate", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/shipping" ) when { ["US", "CA", "MX"].contains(context.input.country) };

Vérification des champs facultatifs

// Require optional field to be present permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"OrderAPI___create_order", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/order" ) when { context.input has shippingAddress };