View a markdown version of this page

Resource-based politiche per Amazon Bedrock AgentCore - Amazon Bedrock AgentCore

Resource-based politiche per Amazon Bedrock AgentCore

Resource-based le politiche di Amazon Bedrock ti AgentCore consentono di controllare quali principali (AWS account, utenti IAM o ruoli IAM) possono richiamare e gestire le tue AgentCore risorse Amazon Bedrock (attualmente supportate per Runtime, Gateway e Memory). Puoi collegare IAM-style le policy direttamente alle tue risorse per definire regole su chi può avviare sessioni di runtime, richiamare un gateway, accedere alla memoria o eseguire altre azioni di gestione e invocazione.

Resource-based le policy funzionano in combinazione con le policy IAM basate sull'identità per fornire il controllo degli accessi alle tue risorse Amazon Bedrock. AgentCore Mentre le policy basate sull'identità sono collegate alle identità IAM e specificano quali azioni possono eseguire, le policy basate sulle risorse sono collegate direttamente alle risorse e specificano chi può accedervi.

Risorse supportate

Amazon Bedrock AgentCore supporta politiche basate sulle risorse per le seguenti risorse:

  • Agent Runtime e Agent Endpoints: controlla l'accesso alle operazioni di invocazione e gestione degli agenti

  • Gateway: controlla l'accesso alle operazioni di invocazione del gateway

  • Memoria: controlla l'accesso alle operazioni di memoria

Come funzionano le politiche basate sulle risorse

Identity-based rispetto alle politiche basate sulle risorse

Aspetto Identity-Based Politica Resource-Based Politica

Allegato

Allegato a utenti, ruoli o gruppi IAM

Collegato direttamente alle risorse di Amazon Bedrock AgentCore

Gestione

Gestito tramite AWS IAM

Gestito tramite le API Amazon Bedrock AgentCore

Specifichi

Azioni e risorse (il Principal è implicito)

Principi, azioni e condizioni (la risorsa è implicita)

Caso d'uso

Definisci cosa può fare un'identità

Definisci chi può accedere a una risorsa

Valutazione delle politiche

Quando viene effettuata una richiesta a una AgentCore risorsa Amazon Bedrock, AWS valuta sia le politiche basate sull'identità che quelle basate sulle risorse. La tabella seguente mostra come le diverse combinazioni di policy influiscono sull'accesso:

Politica IAM Policy delle risorse Risultato

Garantisce l'accesso

Silent

Consentito

Concede l'accesso

Concede l'accesso

Consentito

Concede l'accesso

Nega l'accesso

Negato

Silent

Silent

Negato

Silent

Concede l'accesso

Consentito

Silent

Nega l'accesso

Negato

Nega l'accesso

Silent

Negato

Nega l'accesso

Consente l'accesso

Negato

Nega l'accesso

Nega l'accesso

Negato

Principi chiave:

  • La negazione esplicita vince sempre: se una politica nega esplicitamente l'azione, l'accesso viene negato indipendentemente dalle altre politiche

  • Entrambe le politiche possono consentire: se una politica basata sull'identità o quella basata sulle risorse consente l'azione (e nessuna politica la nega), l'accesso viene concesso

  • Negazione predefinita: se nessuna politica consente esplicitamente un'azione, l'accesso viene negato

Autorizzazione gerarchica per il runtime e l'endpoint dell'agente

Gli endpoint degli agenti sono punti di accesso indirizzabili a versioni specifiche di un runtime dell'agente. Ogni endpoint punta a una particolare versione della configurazione di runtime, con un endpoint DEFAULT che viene indirizzato automaticamente alla versione più recente. Quando autorizza operazioni API di runtime come InvokeAgentRuntime eInvokeAgentRuntimeCommand, AWS valuta sia le politiche basate sull'identità che quelle basate sulle risorse sia per il runtime dell'agente che viene richiamato.

Affinché una richiesta sia autorizzata, devono essere soddisfatte le seguenti condizioni:

  • Le politiche basate sull'identità allegate al principale chiamante devono consentire l'azione sia sul runtime dell'agente che sulle risorse dell'endpoint dell'agente

  • La politica basata sulle risorse sul runtime dell'agente deve consentire l'azione (se esiste una politica)

  • La policy basata sulle risorse sull'endpoint dell'agente deve consentire l'azione (se esiste una policy)

Importante

Per fornire l'accesso tra più account a un principale, è necessario creare politiche basate sulle risorse che garantiscano l'accesso sia al runtime dell'agente che all'endpoint dell'agente. Se una delle risorse nega l'accesso o manca una dichiarazione esplicita di autorizzazione, la richiesta verrà rifiutata.

Esempio: la concessione dell'accesso a più account richiede politiche su entrambe le risorse:

// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }

Considerazioni sul tipo di autenticazione

Il modo in cui si scrivono politiche basate sulle risorse dipende dal tipo di autenticazione configurato per Agent Runtime o Gateway:

Autenticazione SIGV4

Utilizza AWS principi specifici (utenti, ruoli o account IAM) nell'elemento. Principal Ad esempio: "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. La policy viene valutata insieme alle autorizzazioni IAM del chiamante. Per un esempio che limita l'invocazione di un runtime solo da parte di un AgentCore gateway, consulta Limita la chiamata in entrata di IAM (SigV4) al gateway.

Autenticazione OAuth

È necessario utilizzare wildcard principal («Principal»: «*») nelle dichiarazioni politiche. I token OAuth vengono convalidati da AWS Identity Service prima della valutazione delle politiche. Solo gli utenti OAuth autenticati con token JWT validi dell'Identity Provider (IdP) registrato possono richiamare la risorsa. Le richieste anonime o non autenticate vengono rifiutate prima della valutazione delle politiche. Utilizza i tasti condizionali per limitare l'accesso (ad esempioaws:SourceVpc,aws:SourceVpce).

Importante

Un Agent Runtime o un Gateway possono essere configurati solo con l'autenticazione SigV4 O OAuth al momento della creazione, non entrambe contemporaneamente. Ciò significa che una singola politica basata sulle risorse si applica a un solo tipo di autenticazione.

Struttura delle policy

Una policy basata sulle risorse è un documento JSON con la seguente struttura:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
Importante

Il Resource campo del documento di policy deve contenere l'ARN esatto della risorsa a cui è allegata la policy. L'utilizzo di «Resource»: «*» non è supportato e genererà un errore di convalida.

Azioni supportate

Azioni Agent Runtime

  • bedrock-agentcore:InvokeAgentRuntime- Richiama un runtime dell'agente

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Richiama un endpoint di runtime dell'agente con intestazione X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:InvokeAgentRuntimeCommand- Esegue un comando shell in una sessione di runtime attiva

  • bedrock-agentcore:InvokeAgentRuntimeCommandShell- Aprire una sessione di WebSocket shell interattiva in una sessione di runtime attiva

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Richiama un runtime dell'agente con stream WebSocket

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Richiama un runtime dell'agente con WebSocket stream con header X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:StopRuntimeSession- Interrompe una sessione di runtime attiva

  • bedrock-agentcore:GetAgentCard- Recupera le informazioni sulla carta dell'agente

Azioni del gateway

  • bedrock-agentcore:InvokeGateway- Richiama un gateway

Azioni di memoria

  • bedrock-agentcore:GetMemory- Recupera una risorsa di memoria

  • bedrock-agentcore:UpdateMemory- Aggiorna una risorsa di memoria

  • bedrock-agentcore:DeleteMemory- Eliminare una risorsa di memoria

  • bedrock-agentcore:CreateEvent- Crea un evento in una risorsa di memoria

  • bedrock-agentcore:GetEvent- Recupera un evento da una risorsa di memoria

  • bedrock-agentcore:DeleteEvent- Eliminare un evento da una risorsa di memoria

  • bedrock-agentcore:ListEvents- Elenca gli eventi da una risorsa di memoria

  • bedrock-agentcore:ListActors- Elenca gli attori da una risorsa di memoria

  • bedrock-agentcore:ListSessions- Elenca le sessioni da una risorsa di memoria

  • bedrock-agentcore:GetMemoryRecord- Ottieni un record di memoria da una risorsa di memoria

  • bedrock-agentcore:ListMemoryRecords- Elenca i record di memoria da una risorsa di memoria

  • bedrock-agentcore:RetrieveMemoryRecords- Cerca i record di memoria da una risorsa di memoria

  • bedrock-agentcore:DeleteMemoryRecord- Eliminare un record di memoria da una risorsa di memoria

  • bedrock-agentcore:BatchCreateMemoryRecords- Creazione in batch di record di memoria in una risorsa di memoria

  • bedrock-agentcore:BatchUpdateMemoryRecords- Aggiornamento in batch dei record di memoria in una risorsa di memoria

  • bedrock-agentcore:BatchDeleteMemoryRecords- Eliminazione in batch dei record di memoria in una risorsa di memoria

  • bedrock-agentcore:StartMemoryExtractionJob- Avvia un processo di estrazione all'interno di una risorsa di memoria

  • bedrock-agentcore:ListMemoryExtractionJobs- Elenca i lavori di estrazione all'interno di una risorsa di memoria

Chiavi di condizione

È possibile utilizzare i tasti condizionali per perfezionare ulteriormente il controllo degli accessi nelle politiche. Per un elenco completo delle chiavi di condizione disponibili, consulta Bedrock AgentCore Condition Keys e AWS Global Condition Context Keys.

Casi d'uso ed esempi comuni

Questa sezione fornisce esempi pratici di politiche basate sulle risorse per scenari comuni. Il Resource campo in ogni esempio deve contenere l'ARN esatto della risorsa a cui è allegata la policy. Sostituisci gli ARN di esempio con gli ARN delle tue risorse effettive.

Consenti ruoli in un altro AWS account

Concedi l'accesso all'API a ruoli specifici in un AWS account diverso:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Nega il traffico in base all'indirizzo IP di origine

Blocca il traffico in entrata da intervalli di indirizzi IP specifici:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Consenti il traffico solo da un VPC specifico

Limita l'accesso alle richieste provenienti da un VPC specifico:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

Autenticazione OAuth con restrizione VPC

Quando l'Agent Runtime o il Gateway sono configurati con l'autenticazione OAuth, è necessario utilizzare un principio wildcard. Questo esempio limita OAuth-authenticated le richieste a un VPC specifico:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
Importante

Il jolly principal («Principal»: «*») è necessario per l'autenticazione OAuth. I token OAuth vengono convalidati da Identity Service prima della valutazione delle politiche. AWS Solo gli utenti con token JWT validi del tuo Identity Provider registrato possono accedere alla risorsa. Le richieste anonime o non autenticate vengono rifiutate prima di passare alla valutazione della politica. Usa i tasti condizionali (comeaws:SourceVpc,aws:SourceVpce) per limitare ulteriormente l'accesso

Gestione delle politiche relative alle risorse

Seleziona uno dei seguenti metodi:

Esempio
AWS CLI
  1. ====== Creare o aggiornare una politica delle risorse

    Utilizza il comando put-resource-policy:

    aws bedrock-agentcore-control put-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID \ --policy file://policy.json

    Ottieni una politica delle risorse

    Utilizza il comando get-resource-policy:

    aws bedrock-agentcore-control get-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID

    Eliminare una politica delle risorse

    Utilizza il comando delete-resource-policy:

    aws bedrock-agentcore-control delete-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID
Python (Boto3)
  1. I seguenti esempi mostrano come gestire le politiche delle risorse utilizzando AWS Python SDK (Boto3):

    import boto3 import json client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') # Define the resource ARN resource_arn = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' # Put resource policy # Note: The Resource field must match the resource ARN to which the policy is attached policy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": resource_arn } ] } response = client.put_resource_policy( resourceArn=resource_arn, policy=json.dumps(policy) ) # Get resource policy response = client.get_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' ) print(response['policy']) # Delete resource policy response = client.delete_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' )

Best practice di sicurezza

Grant least privilege

Concedi solo le autorizzazioni minime necessarie per il tuo caso d'uso:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Evita un deputato confuso

Usa sempre i tasti condizionali per concedere l'accesso ai AWS servizi:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }

Usa la negazione esplicita per i controlli critici

Usa dichiarazioni di negazione esplicite per le restrizioni critiche per la sicurezza:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }

Risoluzione dei problemi

Errori di accesso negato

Se ricevi un errore «Accesso negato»:

  • Controlla entrambe le politiche: verifica sia le politiche basate sull'identità che quelle basate sulle risorse

  • Cerca negazioni esplicite: una negazione esplicita in qualsiasi politica ha la priorità su tutte le autorizzazioni consentite

  • Verifica l'ARN principale: assicurati che l'ARN principale nella politica corrisponda al chiamante

  • Verifica le condizioni: verifica che tutte le chiavi di condizione siano valide

  • Rivedi gli SCP: le politiche di controllo dei servizi dell'organizzazione possono prevalere sulle politiche delle risorse

Errori di convalida delle politiche

Errori comuni di convalida delle politiche:

  • JSON non valido: assicurati che la tua policy sia JSON valida

  • Formato ARN non valido: verifica che tutti gli ARN seguano il formato corretto

  • Azioni non supportate: verifica che tutte le azioni siano supportate per il tipo di risorsa

  • Elementi obbligatori mancanti: assicurati che siano presenti Version, Statement, Effect, Principal e Action