View a markdown version of this page

Gemeinsame politische Muster - Amazon Grundgestein AgentCore

Gemeinsame politische Muster

Diese Beispiele zeigen häufig verwendete politische Muster von Cedar. Die Muster funktionieren sowohl bei der OAuth- als auch bei der IAM-Authentifizierung. Wählen Sie den entsprechenden Prinzipaltyp für Ihre Gateway-Konfiguration aus. AgentCore Einzelheiten zu Hauptattributen finden Sie unter Hauptattribute.

Diese Muster gelten unabhängig vom Authentifizierungstyp.

Notabschaltung

Deaktivieren Sie alle Tool-Aufrufe im gesamten Gateway:

forbid( principal, action, resource );

Anwendungsfall: Notabschaltung, Wartungsmodus oder Reaktion auf Vorfälle.

Auswirkung: Setzt alle Genehmigungsrichtlinien aufgrund der Semantik „Verbotene Gewinne“ außer Kraft.

Spezifisches Tool deaktivieren

Deaktivieren Sie ein bestimmtes Tool, während andere funktionsfähig bleiben:

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

Anwendungsfall: Deaktivieren Sie vorübergehend ein problematisches Tool, ohne andere Funktionen zu beeinträchtigen.

Benutzerzugriff blockieren

Verhindern Sie, dass bestimmte Benutzer oder Konten Aktionen ausführen:

OAuth: Blockiere einen bestimmten Benutzer

Blockiere einen Benutzer, indem du seinen Benutzernamen-Tag abgleichst:

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

Anwendungsfall: Widerrufen Sie sofort den Zugriff für ein kompromittiertes oder gesperrtes Benutzerkonto.

IAM: Sperrt ein bestimmtes Konto

Anrufer von einem bestimmten AWS Konto aus blockieren:

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

Anwendungsfall: Sperren Sie Testkonten oder nicht autorisierte Konten für den Zugriff auf Produktionstools. Das Muster :444455556666: entspricht jedem ARN-Format (angenommene Rolle, IAM-Benutzer oder IAM-Rolle), das diese Konto-ID enthält.

Role-based Zugriffskontrolle

Beschränken Sie den Zugriff auf der Grundlage von Rollen. OAuth verwendet Rollentags; IAM verwendet Rollen-ARN-Muster.

OAuth: Rollentags verwenden

Erlauben Sie den Zugriff nur Benutzern mit bestimmten Rollen:

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") };

Anwendungsfall: Erlauben Sie Administratorvorgänge nur für Benutzer mit Administrator- oder Managerrollen.

IAM: ARNs mit IAM-Rollen verwenden

Erlauben Sie den Zugriff nur für Anrufer, die bestimmte IAM-Rollen verwenden. Sie können Exact principal == Matching oder principal.id like Pattern Matching verwenden:

// 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" );

Anwendungsfall: Erlauben Sie Verwaltungsvorgänge nur für Anrufer, die die AdminRole IAM-Rolle übernehmen. Die Cedar-Entitäts-ID für angenommene Rollen verwendet das Format. arn:aws:sts::<account>:assumed-role/<role-name>

Variationen, die Musterabgleich verwenden:

// 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/*"

Operationen vom Datentyp

Cedar unterstützt verschiedene Datentypen unter bestimmten Bedingungen. In diesen Beispielen werden OAuth-Prinzipale () verwendet. AgentCore::OAuthUser Verwenden Sie für IAM-authenticated Gateways AgentCore::IamEntity stattdessen - die Logik zur Eingabevalidierung bleibt identisch.

Ganzzahlen (lang)

// 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 };

Zeichenfolgen

// 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" };

Listen (Sätze)

// 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) };

Suche nach optionalen Feldern

// 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 };