View a markdown version of this page

Richtlinienbedingungen - Amazon Grundgestein AgentCore

Richtlinienbedingungen

Bedingungen fügen Richtlinien mithilfe von UND-Klauseln eine feinkörnige Logik when hinzuunless:

when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }

Arten von Bedingungen

  • when { …​ }— Die Richtlinie gilt nur, wenn die Bedingung erfüllt ist

  • unless { …​ }- Die Richtlinie gilt nur, wenn die Bedingung falsch ist

  • when guardrails { …​ }- Die Richtlinie gilt nur, wenn die Bedingung, die auf den Ausgang (en) einer oder mehrerer Leitplanken zutrifft, als wahr bewertet wird

  • unless guardrails { …​ }- Die Richtlinie gilt nur, wenn die Bedingung, die auf den Ausgang (en) einer oder mehrerer Leitplanken zutrifft, als falsch bewertet wird

Tool-Argumente

context.inputenthält die Argumente, die an den Tool-Aufruf übergeben wurden:

context.input.amount < 500

Wenn ein Benutzer RefundTool___process_refund mit Argumenten aufruft wie:

{ "orderId": "12345", "amount": 450, "reason": "Defective product" }

Die Richtlinie kann auf diese Werte zugreifen:

  • context.input.orderId→ „12345"

  • context.input.amount→ 450

  • context.input.reason→ „Defektes Produkt“

Richtlinien können Entscheidungen auf der Grundlage bestimmter Parameter für den Aufruf von Tools treffen.

Wichtigste Eigenschaften

Die Hauptattribute unterscheiden sich je nach dem für Ihr AgentCore Gateway konfigurierten Authentifizierungstyp.

OAuth-Ansprüche (Tags)

Bei OAuth-authenticated Gateways werden JWT-Ansprüche aus dem OAuth-Token als Tags in der Entität gespeichert. OAuthUser Beispiel für JWT-Behauptungen:

{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }

Diese Ansprüche werden zu Tags auf der Hauptentität. Prüfen Sie, ob ein Tag existiert:

principal.hasTag("username")

Holen Sie sich einen Tag-Wert:

principal.getTag("username") == "refund-agent"

Musterabgleich:

principal.getTag("scope") like "*refund:write*"

IAM-Entitätsattribute

Bei IAM-authenticated Gateways hat der Principal ein id Attribut, das den IAM-ARN des Aufrufers enthält. IAM-Prinzipale unterstützen keine Tags.

Format der Hauptentität

Das Cedar-Prinzip für IAM-authenticated Gateways istAgentCore::IamEntity. Das principal.id Attribut enthält den IAM-ARN des Aufrufers.

Für Anrufer, die sich über eine angenommene IAM-Rolle authentifizieren, verwenden die Entitäts-ID principal.id und die Cedar-Entitäts-ID das folgende Format:

arn:aws:sts::<account-id>:assumed-role/<role-name>

Wenn beispielsweise ein Anrufer die Rolle übernimmt, lautet die MyServiceRole Cedar-Entitäts-ID:

AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"

Dieses Format ist bei allen Aufrufen stabil, sodass Sie es principal == für den exakten Rollenabgleich verwenden können.

Musterabgleich mit wie

Sie können den like Operator auch mit Platzhaltern für einen umfassenderen Abgleich verwenden:

// Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*" // Match specific AWS account (any ARN format) principal.id like "*:123456789012:*" // Match a specific IAM role name across any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole"

Logische Operatoren

Kombinieren Sie mehrere Bedingungen mit logischen Operatoren:

  • &&- UND (alle Bedingungen müssen wahr sein)

  • ||- ODER (mindestens eine Bedingung muss wahr sein)

  • !- NICHT (negiert eine Bedingung)

Beispiel:

principal.hasTag("username") && // User must have username tag principal.getTag("username") == "refund-agent" && // Username must be "refund-agent" context.input.amount < 500 // Amount must be less than $500