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.
Schémas politiques communs
Ces exemples illustrent les modèles de politique de Cedar fréquemment utilisés. Les modèles fonctionnent à la fois avec les authentifications OAuth et IAM. Sélectionnez le type de principal approprié pour la configuration de votre passerelle. AgentCore Pour plus de détails sur les principaux attributs, 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 aux incidents.
Effet : annule toutes les politiques d'autorisation en raison de la sémantique des gains interdits.
Désactiver un outil spécifique
Désactivez un outil spécifique tout en maintenant les autres opérationnels :
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 le tag de 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 à un compte utilisateur compromis ou suspendu.
IAM : Bloquer un compte spécifique
Bloquez les appelants depuis 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
Restreignez l'accès en fonction des rôles. OAuth utilise des balises de rôle ; IAM utilise des modèles ARN de rôle.
OAuth : utilisation de balises de rôle
Autorisez l'accès uniquement aux utilisateurs dotés de 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
Autorisez l'accès uniquement aux appelants utilisant des rôles IAM spécifiques. Vous pouvez utiliser une principal == correspondance exacte ou une correspondance de principal.id like motifs :
// 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 ce 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 dans certaines conditions. Ces exemples utilisent OAuth principals (). 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 };