View a markdown version of this page

Guardrail nelle politiche - Amazon Bedrock AgentCore

Guardrail nelle politiche

Questa sezione spiega come definire Bedrock Guardrails nelle politiche. Bedrock Guardrails fornisce protezioni configurabili che possono essere eseguite sia sulle richieste che sulle risposte per proteggere le applicazioni AI. Attualmente è possibile definire nelle policy attacchi rapidi, filtri dei contenuti e protezioni relative alle informazioni sensibili. Ogni guardrail deve essere configurato con una categoria e una soglia comprese tra 0 e 1.

Quando un guardrail valuta il contesto, restituisce un punteggio di confidenza compreso tra 0 e 1, che indica il grado di confidenza che il contenuto valutato presenta la proprietà definita (ad es.). PROMPT_INJECTION

Disponibilità regionale di Guardrails

La tabella seguente mostra quali AWS regioni sostengono i guardrail nella loro politica:

Stati Uniti orientali (Virginia settentrionale) Stati Uniti orientali (Ohio) Stati Uniti occidentali (Oregon) Europa (Francoforte) Europa (Irlanda) Europa (Londra) Europe (Paris) Europa (Stoccolma) Asia Pacifico (Mumbai) Asia Pacifico (Singapore) Asia Pacifico (Sydney) Asia Pacifico (Tokyo) Asia Pacifico (Seul) Canada (Centrale) Sud America (San Paolo) AWS GovCloud (US-West)

Supporto Guardrails

Prima di iniziare

Prima di iniziare, devi configurare correttamente il tuo ruolo IAM.

Permissions

Il AgentCore Gateway Execution Role configurato sul gateway associato al tuo policy engine deve disporre delle autorizzazioni sia per le AgentCore operazioni Bedrock che per Bedrock Guardrails. L'bedrock:InvokeGuardrailChecksautorizzazione è richiesta perché il piano dati Policy utilizza le credenziali FAS (Forward Access Session) derivate dal ruolo di esecuzione del gateway per chiamare l'API Bedrock Guardrails per conto dell'utente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock-agentcore:*", "Resource": "*" }, { "Effect": "Allow", "Action": "bedrock:InvokeGuardrailChecks", "Resource": "*" } ] }

Guardrail supportati

Nome Safeguard Tipo di entità Categorie di salvaguardia

Filtro dei contenuti

ContentFilter

VIOLENCE, HATE, SEXUAL, MISCONDUCT, INSULTS

Rilevamento tempestivo degli attacchi

PromptAttack

JAILBREAK, PROMPT_INJECTION, PROMPT_LEAKAGE

Informazioni sensibili

SensitiveInformation

CREDIT_DEBIT_CARD_NUMBER,US_SOCIAL_SECURITY_NUMBER,EMAIL,PHONE,ADDRESS,AWS_ACCESS_KEY,AWS_SECRET_KEY,PASSWORD, IP_ADDRESS NAMEUSERNAME, e più di 20 altri

Definizione dei limiti nelle politiche

Per definire i guardrail nelle politiche, è possibile scrivere una politica sotto forma di codice o descrivere la politica in linguaggio naturale. Analogamente a qualsiasi politica esistente che potresti aver già creato, devi specificare un effetto (ad esempiopermit) con una condizione (when guardrails). Nella condizione, è necessario fornire la protezione specifica del guardrail che si desidera abilitare, la categoria di protezione da utilizzare, il contesto che si desidera che venga valutato dal guardrail e la soglia del punteggio di confidenza.

Esempio di definizione del guardrail

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

Specificazione di un parapetto

Per scegliere un tipo di entità di salvaguardia specifico, usa il namespace: BedrockGuardrails

Salvaguardia Nome della funzione Guardrail

Filtro dei contenuti

BedrockGuardrails::ContentFilter

Attacco rapido

BedrockGuardrails::PromptAttack

Informazioni sensibili

BedrockGuardrails::SensitiveInformation

Selezione di una categoria di protezione

Seleziona una categoria per la protezione specificata (vediGuardrail supportati).

ad esempio BedrockGuardrails::ContentFilter(["HATE"],[context.output.message])

Effetti per i guardrail

Per creare guardrail da utilizzare nelle richieste di autorizzazione, usa gli effetti and. permit forbid Questi continuano a regolare l'autorizzazione delle richieste.

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

Per creare guardrail da utilizzare per sopprimere gli output di strumenti, agenti o modelli, utilizzate l'effetto. suppressOutput suppressOutputè un nuovo effetto che agisce sui dati restituiti da un'azione. Una volta completata un'azione autorizzata, valuta le uscite rispetto al guardrail e sopprime l'output quando il guardrail viene violato.

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

Passare il contesto al guardrail

Quando si definiscono i guardrail nella policy, è necessario specificare percorsi di dati (ad esempiocontext.input.message) che identifichino i valori da estrarre dal payload dell'azione. Il guardrail valuta i valori estratti. Puoi specificare uno o più percorsi verso i dati in base alla tua richiesta o allo schema di risposta.

ad esempio [context.input.message, context.input.systemPrompt]

Soglie per i guardrail

Grazie ai filtri di contenuto e al rilevamento tempestivo degli attacchi, il guardrail restituisce un punteggio di confidenza, che è un valore numerico compreso nell'intervallo [0, 1], dove 0 è bassa confidenza e 1 è alta. Il punteggio indica la sicurezza con cui il guardrail ha rilevato una violazione. I punteggi attualmente possibili sono valori discreti {0, 0.2, 0.4, 0.6, 0.8 e 1.0}.

Per impostare una soglia, è necessario fornire il valore decimale all'operatore di confronto (ad es.). greaterThan(decimal("0.4"))

Operatori di confronto dei punteggi

È possibile applicare gli operatori di confronto seguenti a uno qualsiasi dei confidenceScoremaxConfidenceScore(), oppureminConfidenceScore():

Operatore Utilizzo

.greaterThan(decimal("X.X"))

Punteggio > soglia

.greaterThanOrEqual(decimal("X.X"))

Punteggio ≥ soglia

.lessThan(decimal("X.X"))

Punteggio < soglia

.lessThanOrEqual(decimal("X.X"))

Punteggio ≤ soglia

Puoi utilizzare un'aggregazione nella tua politica per estrarre e confrontare i punteggi restituiti dai guardrail:

Aggregazioni

Aggregazione Description Esempio

[<category>].confidenceScore

Accedi al punteggio di confidenza per una categoria specifica (decimale)

["HATE"].confidenceScore

maxConfidenceScore()

Massima affidabilità in tutte le categorie scansionate (decimale)

.maxConfidenceScore()

minConfidenceScore()

Confidenza minima in tutte le categorie scansionate (decimale)

.minConfidenceScore()

count()

Numero di risultati rilevati (lungo)

.count()

Come scegliere una soglia

Se non si specifica una soglia quando si richiede il servizio di creazione, AgentCore imposta un valore predefinito. Se si scrivono le politiche senza l'aiuto del servizio di creazione, è necessario fornire il valore di soglia.

Le seguenti impostazioni predefinite sono calibrate per fornire un'ampia copertura con una precisione accettabile per la maggior parte dei carichi di lavoro:

Salvaguardare Soglia predefinita

Filtro dei contenuti

0.2

Rilevamento tempestivo degli attacchi

0.4

Informazioni sensibili

0.2

Scelta di una soglia personalizzata

Se le soglie predefinite non soddisfano i tuoi requisiti, puoi determinare la soglia ottimale per il tuo carico di lavoro utilizzando uno dei seguenti approcci.

Opzione 1: valuta in base a un set di test aureo

Usa questo approccio quando disponi di una serie curata di input di test con risultati attesi chiari.

  1. Crea le tue politiche e imposta la modalità del motore delle politiche su LOG_ONLY.

  2. Esegui il set di test tramite il gateway a cui è collegato il tuo policy engine.

  3. Esamina i log per ogni valutazione. Ogni voce di registro include il contenuto valutato e il punteggio di confidenza restituito dal guardrail.

  4. Per ogni risultato, indica se il guardrail avrebbe dovuto contrassegnare il contenuto o non fare nulla (rispettivamente vero e falso).

  5. Utilizzando queste etichette, combinate con i punteggi di confidenza disponibili nei registri, create una matrice di confusione con più valori di soglia. Confrontate la precisione e il richiamo a ciascuna soglia per selezionare il valore in linea con la vostra tolleranza per i falsi positivi rispetto ai rilevamenti mancati.

Opzione 2: valutazione in base al traffico di produzione

Utilizzate questo approccio quando non disponete di un set di test predefinito e desiderate eseguire la calibrazione utilizzando modelli di traffico reali.

  1. Crea le tue politiche e imposta la modalità del motore delle politiche su LOG_ONLY.

  2. Consenti al motore delle politiche di valutare il traffico di produzione. Ogni voce di registro include il contenuto valutato e il punteggio di confidenza restituito dal guardrail.

  3. Usa an LLM-as-a-judge per etichettare ogni risultato registrato come vero (il guardrail avrebbe dovuto contrassegnare il contenuto) o false (il guardrail non avrebbe dovuto contrassegnare il contenuto).

  4. Usando queste etichette, crea una matrice di confusione con più valori di soglia. Confrontate la precisione e il richiamo a ciascuna soglia per selezionare il valore in linea con la vostra tolleranza per i falsi positivi rispetto ai rilevamenti non rilevati.

Metti alla prova i guardrail nella politica

AgentCore fornisce diversi meccanismi per testare le politiche di guardrail prima di applicarle al traffico di produzione. È possibile controllare l'applicazione a livello di policy engine, a livello di policy individuale o entrambi, in modo da convalidare il comportamento del guardrail in modo incrementale. Per ulteriori informazioni, consulta Testare una policy.

Come funziona guardrails con la politica

Le policy di Guardrail possono essere applicate a qualsiasi target del gateway. I guardrail funzionano su: * obiettivi MCP — POST /mcp (JSON-RPC tools/call) * obiettivi di runtime HTTP — * obiettivi di inferenza HTTP — POST /<target>/invocations POST /inference

Quando una chiamata arriva al gateway, il Policy Evaluator esegue le seguenti operazioni:

  1. Corrisponde all'ambito: identifica quali politiche di guardrail si applicano a questa richiesta

  2. Estrae il contenuto: estrae il campo specificato da dataPath (ad esempiocontext.input.message) dal corpo della richiesta

  3. Richiama l' InvokeGuardrailChecks API Bedrock: valuta il contenuto e inserisce i punteggi di confidenza restituiti nel contesto di valutazione delle politiche

  4. Valuta la politica utilizzando i punteggi di guardrail: confronta i punteggi di confidenza restituiti con la soglia definita nella politica

  5. Restituisce una decisione, ALLOW o DENY con annotazioni sulla politica, al gateway

Nota: i guardrail non sono deterministici. Lo stesso input può generare uscite diverse. Le politiche, tuttavia, sono deterministiche, lo stesso input produrrà sempre lo stesso risultato.

Limiti delle barriere politiche

  • Nessun supporto per regex o pattern matching: i guardrail usano il punteggio ML, non le espressioni regolari

  • Non è possibile combinare le politiche Cedar standard con i guardrail: sostituisce when guardrails {…​} when {…​}

  • In un blocco è necessario un guardrail: i when guardrails {…​} blocchi di guardrail devono avere almeno un guardrail definito all'interno