View a markdown version of this page

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

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Resource-based politiche per Amazon Bedrock AgentCore

Resource-based le policy in 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 allegare 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 richiamo.

Resource-based le policy funzionano insieme alle 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 policy basate sulle risorse per le seguenti risorse:

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

  • Gateway: controlla l'accesso alle operazioni di chiamata 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

Collegato a utenti, ruoli o gruppi IAM

Collegato direttamente alle risorse Amazon Bedrock AgentCore

Gestione

Gestito tramite AWS IAM

Gestito tramite le API Amazon Bedrock AgentCore

Specifica

Azioni e risorse (il principio principale è 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 le politiche basate sull'identità e sulle risorse. La tabella seguente mostra in che modo le diverse combinazioni di policy influiscono sull'accesso:

Politica IAM Policy delle risorse Risultato

Concede 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 sulle risorse consente l'azione (e nessuna politica la nega), l'accesso è concesso

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

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

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

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

  • Le politiche basate sull'identità associate all'entità chiamante devono consentire l'azione sia sul runtime dell'agente che sulle risorse dell'endpoint dell'agente

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

  • 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 concedano l'accesso sia per il runtime dell'agente che per l'endpoint dell'agente. Se una delle risorse nega l'accesso o manca di una dichiarazione di autorizzazione esplicita, la richiesta verrà negata.

Esempio: la concessione dell'accesso tra 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 policy 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 un AgentCore gateway, consulta Restrict IAM (Sigv4) in entrata al gateway.

Autenticazione OAuth

È necessario utilizzare il carattere jolly 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 della politica. Utilizza le chiavi di condizione per limitare l'accesso (ad es.aws: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 policy 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 nel documento della politica deve contenere l'ARN esatto della risorsa a cui è collegata la politica. L'uso di «Resource»: «*» non è supportato e comporterà un errore di convalida.

Azioni supportate

Azioni Agent Runtime

  • bedrock-agentcore:InvokeAgentRuntime- Richiama il runtime di un 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 di 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 il runtime di un agente con stream WebSocket

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

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

  • bedrock-agentcore:GetAgentCard- Recupera i dati della 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- Aggiornare 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 di 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

Puoi utilizzare le chiavi di condizione per perfezionare ulteriormente il controllo degli accessi nelle tue 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 è collegata la policy. Sostituisci gli ARN di esempio con gli ARN effettivi delle risorse.

Consenti ruoli in un altro AWS account

Concedi l'accesso tramite 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 una wildcard principal. 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 carattere jolly principal («Principal»: «*») è richiesto per l'autenticazione OAuth. I token OAuth vengono convalidati da Identity Service prima della valutazione della politica. 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 arrivare alla valutazione della politica. Usa le chiavi di condizione (comeaws:SourceVpc,aws:SourceVpce) per limitare ulteriormente l'accesso

Gestione delle politiche relative alle risorse

Seleziona uno dei seguenti metodi:

Esempio
AWS CLI
  1. ====== Crea o aggiorna una politica sulle 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 sulle 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 sulle 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. Gli esempi seguenti mostrano come gestire le politiche relative alle 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 la confusione del deputato

Usa sempre le chiavi di condizione quando concedi 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 Explicit deny per i controlli critici

Utilizza dichiarazioni di rifiuto esplicite per le restrizioni critiche di 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 messaggio di errore «Accesso negato»:

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

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

  • Verifica l'ARN principale: assicurati che l'ARN principale nella politica corrisponda a quello del chiamante

  • Verifica le condizioni: verifica che tutte le chiavi delle condizioni siano vere

  • Rivedi gli SCP: le politiche di controllo dei servizi dell'organizzazione possono sovrascrivere le politiche relative alle risorse

Errori di convalida delle politiche

Errori comuni di convalida delle politiche:

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

  • 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 versione, dichiarazione, effetto, principio e azione siano presenti