View a markdown version of this page

Limita l'accesso ai fornitori di credenziali in base all'identità del carico di lavoro - Amazon Bedrock AgentCore

Limita l'accesso ai fornitori di credenziali in base all'identità del carico di lavoro

Puoi utilizzare le policy IAM per controllare quali identità dei carichi di lavoro hanno accesso a fornitori di credenziali specifici. Ciò consente un controllo granulare degli accessi, garantendo che solo gli agenti autorizzati possano recuperare le credenziali per determinati servizi.

Nota

Il ruolo IAM assegnato a un agente controlla i provider di credenziali che l'agente può chiamare. Il servizio non impone un legame aggiuntivo tra le identità dei carichi di lavoro e i fornitori di credenziali nello stesso account. Per seguire le pratiche che prevedono i privilegi minimi, assegna i Resource blocchi di policy IAM agli ARN di provider di credenziali e identità di carico di lavoro specifici anziché utilizzarli. *

Una chiamata riuscita a un provider di credenziali non significa che le credenziali vengano restituite automaticamente. Le credenziali recuperate da un carico di lavoro rientrano nell'ambito dell'identità dell'utente nel relativo token di accesso al carico di lavoro. Per i provider OAuth2 (3LO), l'utente finale deve aver completato l'autorizzazione prima che esistano credenziali per recuperare l'identità del carico di lavoro e la combinazione di utenti.

Meccanismi di controllo dell'accesso

  • Restrizioni basate sull'identità del carico di lavoro: limita l'accesso dei provider di credenziali a identità specifiche del carico di lavoro

  • Resource-level autorizzazioni: controlla l'accesso ai singoli fornitori di credenziali utilizzando le politiche ARN-based

  • Directory-level controlli: gestisci l'accesso a livello di directory di identità del carico di lavoro

  • Ambito dei provider di credenziali: limita i provider di credenziali a cui può accedere un'identità del carico di lavoro includendo gli ARN dei provider di credenziali nel blocco di policy Resource

Esempi di policy IAM

Gli esempi seguenti mostrano come creare policy IAM che limitino l'accesso ai provider di credenziali in base all'identità del carico di lavoro e al provider di credenziali.

Limita l'accesso a uno specifico provider di credenziali di chiavi API

Questa policy consente a un'identità del carico di lavoro di recuperare le chiavi API solo da uno specifico provider di credenziali. L'ARN del provider di credenziali nel blocco limita Resource l'accesso a tale provider.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }

Limita l'accesso a uno specifico provider di credenziali OAuth2

Questa policy consente a un'identità di carico di lavoro di recuperare i token OAuth2 solo da uno specifico provider di credenziali OAuth2.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>" ] } ] }

Consenti l'accesso a più identità di carichi di lavoro a un provider di credenziali

Questa policy consente a più identità di carichi di lavoro di recuperare le chiavi API dallo stesso provider di credenziali.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKeyMultipleIdentities", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-1", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-2", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-3", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }

Negare l'accesso a un provider di credenziali specifico

È possibile negare in modo esplicito l'accesso all'identità di un carico di lavoro a uno specifico provider di credenziali utilizzando un'istruzione. Deny Le istruzioni Deny hanno la precedenza sulle istruzioni Allow, il che le rende utili per creare guardrail.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToSensitiveProvider", "Effect": "Deny", "Action": [ "bedrock-agentcore:GetResourceApiKey", "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<sensitive-provider-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<sensitive-provider-name>" ] } ] }

Utilizza identità di carico di lavoro separate per diversi fornitori di credenziali

Se hai bisogno di agenti diversi per accedere a diversi provider di credenziali, crea identità di carico di lavoro separate con ruoli IAM separati. Ogni ruolo IAM è riservato solo ai provider di credenziali di cui l'agente ha bisogno.

Ad esempio, se l'Agente A deve accedere solo al Provider X e l'Agente B deve accedere solo al Provider Y:

  1. Crea l'identità del carico di lavoro agent-a e l'identità del carico di lavoro agent-b

  2. Crea un ruolo IAM AgentARole con una policy che consenta l'accesso solo al Provider X

  3. Crea un ruolo IAM AgentBRole con una policy che consenta l'accesso solo al Provider Y

  4. Associa ogni identità del carico di lavoro al ruolo IAM corrispondente

Policy IAM per l'Agente A (accesso solo al Provider X)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentAAccessProviderX", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-a", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-x" ] } ] }

Politica IAM per l'agente B (accesso solo al provider Y)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentBAccessProviderY", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-b", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-y" ] } ] }

Passaggi dell’implementazione

Per implementare il controllo degli accessi basato sull'identità del carico di lavoro per i fornitori di credenziali:

  1. Identifica le identità del carico di lavoro: utilizza per aws bedrock-agentcore-control list-workload-identities elencare tutte le identità dei carichi di lavoro nel tuo account. Per informazioni sulla creazione e la gestione delle identità dei carichi di lavoro, consulta Gestire le identità dei carichi di lavoro con Identity. AgentCore

  2. Determina gli ARN dei provider di credenziali: identifica i provider di credenziali specifici a cui desideri controllare l'accesso. Gli ARN dei provider di credenziali seguono questi formati:

    • arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/api-key/<provider-name>

    • arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>

  3. Crea policy IAM: scrivi policy IAM che specificano a quali identità del carico di lavoro possono accedere a quali provider di credenziali

  4. Associa le policy ai ruoli: collega le policy ai ruoli IAM utilizzati dai tuoi agenti o dalle tue applicazioni

  5. Verifica i controlli di accesso: verifica che solo le identità dei carichi di lavoro autorizzate possano accedere ai provider di credenziali specificati

Best practice

  • Utilizza nomi descrittivi per le identità dei carichi di lavoro per semplificare la gestione delle policy

  • Includi gli ARN dei provider di credenziali nel Resource blocco per definire l'accesso a provider specifici, anziché concedere l'accesso a tutti i provider dell'account

  • Utilizza identità di carico di lavoro e ruoli IAM separati quando agenti diversi devono accedere a diversi provider di credenziali

  • Utilizza Deny dichiarazioni esplicite per creare barriere che impediscano l'accesso a fornitori di credenziali sensibili indipendentemente da altre politiche

  • Controlla e rivedi regolarmente le politiche di accesso per assicurarti che siano in linea con i tuoi requisiti di sicurezza

  • Prendi in considerazione l'utilizzo delle condizioni delle policy IAM per controlli di accesso aggiuntivi in base all'ora, all'indirizzo IP o ad altri fattori

  • Testa le policy in un ambiente di sviluppo prima di applicarle ai carichi di lavoro di produzione