Leitplanken in Richtlinien
In diesem Abschnitt wird erklärt, wie Bedrock Guardrails in Richtlinien definiert werden. Bedrock Guardrails bietet konfigurierbare Sicherheitsvorkehrungen, die sowohl auf Anfragen als auch auf Antworten ausgeführt werden können, um die Sicherheit von KI-Anwendungen zu gewährleisten. Derzeit können Sie in den Richtlinien Schutzmaßnahmen für schnelle Angriffe, Inhaltsfilter und Schutzmaßnahmen für vertrauliche Informationen definieren. Jede Leitplanke muss mit einer Kategorie und einem Schwellenwert zwischen 0 und 1 konfiguriert werden.
Wenn eine Leitplanke den Kontext auswertet, gibt sie einen Konfidenzwert zwischen 0 und 1 zurück, der den Grad der Sicherheit angibt, dass der bewertete Inhalt die definierte Eigenschaft aufweist (z. B.). PROMPT_INJECTION
Guardrails, regionale Verfügbarkeit
Die folgende Tabelle zeigt, welche AWS Regionen die Leitplanken in ihrer Politik unterstützen:
| USA Ost (Nord-Virginia) | USA Ost (Ohio) | USA West (Oregon) | Europe (Frankfurt) | Europa (Irland) | Europa (London) | Europe (Paris) | Europa (Stockholm) | Asien-Pazifik (Mumbai) | Asien-Pazifik (Singapur) | Asien-Pazifik (Sydney) | Asien-Pazifik (Tokio) | Asien-Pazifik (Seoul) | Kanada (Zentral) | Südamerika (São Paulo) | AWS GovCloud (US-West) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Support von Leitplanken |
✅ |
❌ |
❌ |
❌ |
❌ |
✅ |
❌ |
✅ |
❌ |
❌ |
✅ |
✅ |
❌ |
❌ |
❌ |
❌ |
Bevor Sie beginnen
Bevor Sie beginnen, müssen Sie Ihre IAM-Rolle ordnungsgemäß konfigurieren.
Berechtigungen
Die AgentCore Gateway-Ausführungsrolle, die auf dem Gateway konfiguriert ist, das Ihrer Policy-Engine zugeordnet ist, muss über Berechtigungen sowohl für AgentCore Bedrock-Operationen als auch für Bedrock Guardrails verfügen. Die bedrock:InvokeGuardrailChecks Berechtigung ist erforderlich, da die Policy-Datenebene FAS-Anmeldeinformationen (Forward Access Session) verwendet, die aus der Ausführungsrolle des Gateways abgeleitet wurden, um die Bedrock Guardrails-API in Ihrem Namen aufzurufen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock-agentcore:*", "Resource": "*" }, { "Effect": "Allow", "Action": "bedrock:InvokeGuardrailChecks", "Resource": "*" } ] }
Unterstützte Leitplanken
| Name des Schutzes | Entitätstyp | Schutzkategorien |
|---|---|---|
|
Inhaltsfilter |
|
|
|
Sofortige Erkennung von Angriffen |
|
|
|
Sensible Informationen |
|
|
Definition von Leitplanken in Richtlinien
Um Leitplanken in Richtlinien zu definieren, können Sie Richtlinien entweder als Code schreiben oder die Richtlinie in natürlicher Sprache beschreiben. Ähnlich wie bei allen bestehenden Richtlinien, die Sie möglicherweise bereits erstellt haben, müssen Sie einen Effekt (z. B.permit) mit einer Bedingung (when guardrails) angeben. In der Bedingung müssen Sie die spezifische Schutzmaßnahme, die Sie aktivieren möchten, die Schutzkategorie, die verwendet werden soll, den Kontext, den die Guardrail-Securance bewerten soll, und den Schwellenwert für die Vertrauensbewertung angeben.
Beispiel für eine Definition von Leitplanken
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")) };
Spezifizierung einer Schutzplanke
Verwenden Sie den Namespace, um einen bestimmten Safeguard-Entitätstyp auszuwählen: BedrockGuardrails
| Safeguard | Name der Guardrail-Funktion |
|---|---|
|
Inhaltsfilter |
|
|
Sofortiger Angriff |
|
|
Sensible Daten |
|
Auswahl einer Schutzkategorie
Wählen Sie eine Kategorie für die angegebene Schutzmaßnahme aus (sieheUnterstützte Leitplanken).
z. B. BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])
Effekte für Leitplanken
Verwenden Sie die Effekte und, um Leitplanken für Autorisierungsanfragen zu erstellen. permit forbid Diese regeln weiterhin die Autorisierung von Anfragen.
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")) };
Verwenden Sie den Effekt, um Leitplanken für die Unterdrückung von Ausgaben von Tools, Agenten oder Modellen zu erstellen. suppressOutput suppressOutputist ein neuer Effekt, der sich auf die Daten auswirkt, die eine Aktion zurückgibt. Nach Abschluss einer autorisierten Aktion werden die Ausgaben anhand der Leitplanke bewertet und die Ausgabe unterdrückt, wenn die Leitplanke verletzt wird.
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")) };
Der Kontext wird an Ihre Leitplanke weitergegeben
Wenn Sie Leitplanken in einer Richtlinie definieren, müssen Sie Datenpfade angeben (z. B.context.input.message), die die Werte identifizieren, die aus der Payload der Aktion extrahiert werden sollen. Die Leitplanke wertet die extrahierten Werte aus. Sie können einen oder mehrere Pfade zu Daten auf der Grundlage Ihres Anfrage- oder Antwortschemas angeben.
z. B. [context.input.message, context.input.systemPrompt]
Schwellenwerte für Leitplanken
Bei Inhaltsfiltern und sofortiger Angriffserkennung gibt die Guardrail einen Konfidenzwert zurück. Dabei handelt es sich um einen numerischen Wert im Bereich [0, 1], wobei 0 für eine geringe Zuverlässigkeit und 1 für eine hohe Zuverlässigkeit steht. Die Punktzahl gibt an, mit welcher Sicherheit die Leitplanke einen Verstoß erkannt hat. Aktuell mögliche Werte sind diskrete Werte {0, 0.2, 0.4, 0.6, 0.8 und 1.0}.
Um einen Schwellenwert festzulegen, müssen Sie dem Vergleichsoperator den Dezimalwert zur Verfügung stellen (z. B.greaterThan(decimal("0.4"))).
Operatoren für den Punktevergleich
Sie können die folgenden Vergleichsoperatoren auf jeden von confidenceScoremaxConfidenceScore(), oder anwendenminConfidenceScore():
| Operator | Usage |
|---|---|
|
|
Ergebnis > Schwellenwert |
|
|
Ergebnis ≥ Schwellenwert |
|
|
Ergebnis < Schwellenwert |
|
|
Ergebnis ≤ Schwellenwert |
Sie können in Ihrer Richtlinie eine Aggregation verwenden, um die von den Leitplanken zurückgegebenen Punktzahlen zu extrahieren und zu vergleichen:
Aggregationen
| Aggregation | Description | Beispiel |
|---|---|---|
|
|
Greifen Sie auf den Konfidenzwert für eine bestimmte Kategorie (dezimal |
|
|
|
Maximales Konfidenzniveau für alle gescannten Kategorien (dezimal |
|
|
|
Minimale Zuverlässigkeit für alle gescannten Kategorien (dezimal |
|
|
|
Anzahl der erkannten Ergebnisse (Long |
|
Wie wählt man einen Schwellenwert
Wenn Sie bei der Aufforderung durch den Authoring Service keinen Schwellenwert angeben, AgentCore legt er einen Standardwert fest. Wenn Sie Ihre Richtlinien ohne die Hilfe des Autorendienstes schreiben, müssen Sie den Schwellenwert angeben.
Die folgenden Standardwerte sind so kalibriert, dass sie eine breite Abdeckung mit akzeptabler Genauigkeit für die meisten Workloads bieten:
| Schützen | Standardschwellenwert |
|---|---|
|
Inhaltsfilter |
0.2 |
|
Sofortige Erkennung von Angriffen |
0.4 |
|
Sensible Daten |
0.2 |
Auswahl eines benutzerdefinierten Schwellenwerts
Wenn die Standardschwellenwerte Ihren Anforderungen nicht entsprechen, können Sie mit einem der folgenden Ansätze den optimalen Schwellenwert für Ihre Arbeitslast ermitteln.
Option 1: Evaluieren Sie anhand eines goldenen Testsatzes
Verwenden Sie diesen Ansatz, wenn Sie über einen kuratierten Satz von Testeingaben mit klaren erwarteten Ergebnissen verfügen.
-
Erstellen Sie Ihre Richtlinien und setzen Sie Ihren Policy-Engine-Modus auf LOG_ONLY.
-
Führen Sie Ihr Testset über das Gateway aus, an das Ihre Policy-Engine angeschlossen ist.
-
Überprüfen Sie die Protokolle für jede Evaluierung. Jeder Protokolleintrag enthält den bewerteten Inhalt und den von der Leitplanke ausgegebenen Konfidenzwert.
-
Geben Sie für jedes Ergebnis an, ob die Leitplanke den Inhalt hätte kennzeichnen sollen oder ob nichts bewirkt werden sollte (wahr bzw. falsch).
-
Mithilfe dieser Beschriftungen in Kombination mit den in Ihren Protokollen verfügbaren Konfidenzwerten können Sie eine Konfusionsmatrix für mehrere Schwellenwerte erstellen. Vergleichen Sie Genauigkeit und Erinnerungsvermögen für jeden Schwellenwert, um den Wert auszuwählen, der Ihrer Toleranz zwischen falsch positiven Ergebnissen und verpassten Erkennungen entspricht.
Option 2: Vergleich mit dem Produktionsverkehr
Verwenden Sie diesen Ansatz, wenn Sie kein vorgefertigtes Testset haben und die Kalibrierung anhand realer Verkehrsmuster durchführen möchten.
-
Erstellen Sie Ihre Richtlinien und setzen Sie Ihren Policy-Engine-Modus auf LOG_ONLY.
-
Erlauben Sie der Policy-Engine, den Produktionsdatenverkehr auszuwerten. Jeder Protokolleintrag enthält den bewerteten Inhalt und den von der Leitplanke zurückgegebenen Konfidenzwert.
-
Verwenden Sie eine LLM-as-a-judge , um jedes protokollierte Ergebnis als wahr (die Leitplanke hätte den Inhalt kennzeichnen sollen) oder falsch (die Leitplanke hätte den Inhalt nicht kennzeichnen sollen) zu kennzeichnen.
-
Erstellen Sie anhand dieser Beschriftungen eine Konfusionsmatrix mit mehreren Schwellenwerten. Vergleichen Sie Genauigkeit und Erinnerungsvermögen für jeden Schwellenwert, um den Wert auszuwählen, der Ihrer Toleranz zwischen falsch positiven Ergebnissen und verpassten Erkennungen entspricht.
Testen Sie die Leitplanken in der Politik
AgentCore bietet mehrere Mechanismen zum Testen von Guardrail-Richtlinien, bevor sie im Produktionsdatenverkehr durchgesetzt werden. Sie können die Durchsetzung auf der Ebene der Policy-Engine, auf der Ebene einzelner Richtlinien oder auf beiden Ebenen kontrollieren und so das Verhalten von Guardrails schrittweise überprüfen. Weitere Informationen finden Sie unter Testen einer Richtlinie.
So funktioniert Guardrails im Zusammenspiel mit Richtlinien
Guardrail-Richtlinien können auf jedes Gateway-Ziel angewendet werden. Guardrails laufen auf: * MCP-Zielen — POST /mcp (JSON-RPC tools/call) * HTTP-Laufzeitzielen — * HTTP-Inferenzzielen — POST /<target>/invocations POST /inference
Wenn ein Anruf an Ihrem Gateway eingeht, führt der Policy Evaluator Folgendes durch:
-
Entspricht dem Umfang — Identifiziert, welche Guardrail-Richtlinien für diese Anfrage gelten
-
Extrahiert Inhalt — Ruft das durch
dataPath(z. B.context.input.message) angegebene Feld aus dem Anfragetext ab -
Ruft die InvokeGuardrailChecks Bedrock-API auf — Wertet den Inhalt aus und fügt die zurückgegebenen Vertrauenswerte in den Kontext der Richtlinienbewertung ein
-
Wertet die Richtlinie anhand von Leitplankenwerten aus — Vergleicht die zurückgegebenen Konfidenzwerte mit dem in der Richtlinie definierten Schwellenwert
-
Gibt eine Entscheidung —
ALLOWoderDENYmit Anmerkungen zur Richtlinie — zurück an das Gateway
Hinweis: Leitplanken sind nicht deterministisch. Dieselbe Eingabe kann zu unterschiedlichen Ausgaben führen. Richtlinien sind jedoch deterministisch, d. h. dieselbe Eingabe führt immer zu demselben Ergebnis.
Die Grenzen der Leitplanken in der Politik
-
Keine Unterstützung für Regex oder Musterabgleich — Guardrails verwenden ML-Scoring, keine regulären Ausdrücke
-
Sie können die Standardrichtlinien von Cedar nicht mit Guardrails kombinieren — ersetzt
when guardrails {…}when {…} -
In einem
when guardrails {…}Block ist eine Leitplanke erforderlich. In Leitplankenblöcken muss mindestens eine Leitplanke definiert sein