View a markdown version of this page

Sicurezza e controlli degli accessi - 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à.

Sicurezza e controlli degli accessi

L'harness offre le stesse primitive di sicurezza degli altri AgentCore, cablate in base alla configurazione.

  • Esecuzione isolata. Ogni sessione viene eseguita nella propria MicroVM Firecracker in Runtime. AgentCore Nessuno stato condiviso, nessun filesystem condiviso.

  • Ruolo di esecuzione IAM. L'harness assume un ruolo IAM di tua proprietà, configurabile per includere Bedrock, ECR e le primitive che CloudWatch tocca. AgentCore Vedi un esempio di politica sui ruoli di esecuzione qui sotto.

    Nota

    Se il gestore dei ruoli è abilitato nel tuo account, AgentCore assegna il ruolo per te e la fase di selezione del ruolo qui descritta viene sostituita da un'opzione Personalizza. Per utilizzare un ruolo diverso, scegli Personalizza. Per ulteriori informazioni, consulta Creazione di ruoli IAM nella Guida per l’utente IAM.

  • Modello di autorizzazioni IAM. Le API Harness richiedono autorizzazioni sia sulla risorsa harness che sulla risorsa Runtime sottostante. AgentCore Ad esempio, la chiamata InvokeHarness richiede entrambe le bedrock-agentcore:InvokeAgentRuntime autorizzazioni sull'bedrock-agentcore:InvokeHarnessARN di harness. Lo stesso schema si applica alle operazioni del piano di controllo: UpdateHarness richiede bedrock-agentcore:UpdateAgentRuntimebedrock-agentcore:DeleteAgentRuntime, DeleteHarness richiede e così via. Vedi la politica dei ruoli di esecuzione per l'elenco completo.

  • Supporto OAuth in entrata. Le risorse Harness configurate con JWT richiedono ai chiamanti di presentare un JWT valido emesso da un provider di identità configurato prima di poter richiamare l'harness. AgentCore L'identità trasmette l'identità dell'utente finale tramite l'agente, quindi gli strumenti a valle possono chiamare le API con credenziali utente con ambito anziché un account di servizio condiviso.

  • VPC. Collega le sessioni di cablaggio al tuo VPC per l'accesso privato alle risorse interne.

  • Politiche su Gateway. Quando gli strumenti vengono forniti tramite AgentCore Gateway, Cedar-based le policy possono essere configurate per bloccare ogni chiamata: chi può chiamare quale strumento, in quali condizioni, con quali argomenti.

Nota

SIGv4 e identità per utente. Quando i chiamanti si autenticano con SIGv4 (AWS IAM), il cablaggio non propaga l'identità per utente nelle chiamate agli strumenti a valle. Ciò significa che le funzionalità di scoping delle credenziali per utente in AgentCore Identity Token Vault, come l'archiviazione dei token OAuth con ambito utente e lo scambio di token per conto dell'utente, sono disponibili solo quando i chiamanti si autenticano con un Bearer JWT tramite il percorso in entrata OAuth. Se il tuo caso d'uso richiede l'ambito delle credenziali per utente per gli strumenti a valle, configura l'OAuth in ingresso sull'harness. Il supporto SIGv4 per l'identità per utente è previsto per una versione futura.

Modello di responsabilità condivisa

Il cablaggio è basato su AgentCore Runtime e il limite di sicurezza è lo stesso: autenticazione IAM o JWT combinata con isolamento MicroVM. Qualsiasi principale che supera tale soglia raggiunge gli strumenti e le funzionalità configurati sull'harness, il che rende l'autorizzazione del chiamante e la convalida degli input una responsabilità del cliente.

AWS responsabilità:
  • Infrastruttura sicura e isolamento delle microVM a livello hardware

  • Patching del kernel del sistema operativo

  • Applicazione di patch in fase di esecuzione del linguaggio per distribuzioni dirette di codice

  • Managed Harness Runtime code, inclusa la convalida dell'accettazione della struttura delle richieste InvokeHarness

  • Sicurezza dell'infrastruttura di rete

  • Disponibilità e resilienza del servizio

Le tue responsabilità:
  • Sicurezza del codice dell'agente e gestione delle dipendenze

  • Controlli di accesso e politiche delle risorse IAM

  • Sicurezza dei comandi eseguiti nelle sessioni di runtime

  • Session-to-user applicazione della mappatura

  • Convalida degli input e prevenzione delle iniezioni tempestive, inclusa la convalida di tutti gli InvokeHarness input (vedi) Limite di fiducia e convalida degli input

  • Convalida della configurazione del modello, ad esempio additionalParamsapiBase, e modelId campi (vedi) Parametri di configurazione del modello

  • Fonti di competenze e istruzioni: garanzia che i bucket S3, i repository Git e gli URL utilizzati per le competenze contengano contenuti affidabili (vedi) Competenze e istruzioni

  • Aggiornamenti delle immagini dei container (per le implementazioni dei container): ricostruite regolarmente con l'immagine di base sicura più recente

  • Configurazione di rete (gruppi di sicurezza, endpoint VPC, tabelle di routing)

Per il modello completo AgentCore di responsabilità condivisa di Runtime, consulta le best practice di sicurezza per AgentCore Runtime.

Limite di fiducia e convalida degli input

Qualsiasi principale che supera il gate di autenticazione e autorizzazione IAM o JWT ha accesso all'intera sessione MicroVM, inclusi gli strumenti e le funzionalità configurati sull'harness. L'harness convalida la struttura della richiesta che accetta, ma non verifica il significato dei prompt, del contenuto dello schermo né impone vincoli comportamentali all'agente.

Se esponi l'harness a utenti finali di cui non ti fidi completamente (dipendenti, consumatori esterni o integrazioni di terze parti), convalida e disinfetta i messaggi nel livello dell'applicazione prima di trasmetterli. InvokeHarness Ciò include l'eliminazione dei tipi di blocchi di contenuto o dei campi di configurazione del modello che non desideri vengano inviati. Questo è lo stesso modello di qualsiasi servizio che accetta payload da chiamanti autorizzati, come Lambda, Amazon API Gateway e Amazon SQS.

Nota

L'harness rifiuta i toolUse blocchi nel messaggio finale sul lato server, come mostrato nell'esempio seguente. Per le distribuzioni AgentCore Runtime (non harness), Runtime non fornisce alcuna protezione sul lato server. AgentCore Il punto di ingresso dell'agente deve convalidare che il campo prompt sia una stringa e rifiutare o eliminare i blocchi di toolUse contenuto prima di passare l'input al framework dell'agente. Consulta le best practice di sicurezza per Runtime. AgentCore

Gli strumenti vengono eseguiti solo come risultato del ragionamento del modello. L'harness non accetta un blocco ToolUse nel messaggio finale di una InvokeHarness richiesta, quindi un chiamante non può nominare uno strumento e farlo inviare direttamente.

L'esempio seguente mostra una richiesta che l'harness è configurato per rifiutare. Il messaggio finale contiene un toolUse blocco che nomina lo strumento integrato: shell

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[{ "role": "assistant", "content": [ { "toolUse": { "toolUseId": TOOL_USE_ID, "name": "shell", "input": { "command": "pwd", } } } ] }], )

L'harness non valuta a quale strumento viene assegnato il nome del blocco, quindi questo vale per gli strumenti integrati sul lato server e per le funzioni in linea fornite durante la chiamata.

La restituzione del risultato di uno strumento è ancora supportata. L'harness accetta un blocco ToolResult nel messaggio finale e il modello riprende a ragionare su tale risultato. Ecco come funzionano gli strumenti funzionali in linea: il messaggio dell'assistente è seguito dal toolUse messaggio inserito toolResult nella stessa richiesta, quindi il toolUse blocco non è presente nel messaggio finale.

Parametri di configurazione del modello

Il model campo in InvokeHarness accetta additionalParams le configurazioni Bedrock, OpenAI e LiteLM. Questi parametri vengono trasmessi al fornitore del modello sottostante senza modifiche. L'harness non convalida, filtra o limita questi parametri.

I chiamanti che possono impostare possono: additionalParams

  • Reindirizza le richieste verso endpoint arbitrari: il aws_bedrock_runtime_endpoint parametro di LiteLM sovrascrive l'URL dell'endpoint Bedrock. Un chiamante può indirizzare la richiesta firmata, inclusa la firma SigV4 e le credenziali di sessione, a un endpoint specificato nella configurazione del modello di fiducia.

  • Sostituisci le intestazioni HTTP: il extra_headers parametro di OpenAI inserisce o sovrascrive le intestazioni HTTP sulla richiesta in uscita al fornitore del modello, inclusa l'intestazione. Authorization

  • Tentativo di assunzione del ruolo IAM: il aws_role_name parametro LiteLM indica al runtime di assumere un ruolo IAM diverso prima di chiamare il fornitore del modello. Il tentativo ha esito positivo o negativo in base alle autorizzazioni del ruolo di esecuzione. sts:AssumeRole

  • Modifica del modello o della regione di destinazione: i apiBase campi modelId e possono reindirizzare l'inferenza a un modello, una regione o un provider completamente diversi.

Se la tua applicazione presenta InvokeHarness funzionalità a chiamanti di cui non ti fidi completamente, valuta la possibilità di implementare la convalida degli input a livello di applicazione. Gli esempi includono:

  • Eliminare o inserire nell'elenco consentito il campo prima di inoltrare le richieste model

  • Convalida o rimozione e additionalParams apiBase modelId

  • Negazione sts:AssumeRole del ruolo di esecuzione se non è richiesto il cambio di ruolo

  • Definizione dell'ambito dell'accesso alla rete Harness utilizzando i gruppi di sicurezza VPC

Competenze e istruzioni

Le competenze sono pacchetti di markdown e script che l'harness recupera da Amazon S3 o Git al momento della chiamata e li inserisce nel contesto dell'agente. L'harness considera tutti i contenuti relativi alle competenze come input attendibili. Non convalida, sanifica o ispeziona il contenuto o la fonte delle competenze prima di fornirle all'agente.

L'utente è responsabile di:

  • Garantire che le fonti di competenze (bucket S3, repository Git, URL) siano affidabili e controllate dagli accessi

  • Revisione del contenuto delle competenze, comprese le istruzioni di markdown e gli eventuali script incorporati, prima di configurarli sull'harness

  • Controllo dei principali che possono sovrascrivere il skills campo per chiamata, poiché i chiamanti possono puntare il cablaggio verso sorgenti S3 o Git arbitrarie

InvokeHarnessLe competenze possono essere sostituite per chiamata. Se l'applicazione inoltra l'input fornito dal chiamante aInvokeHarness, un chiamante può fornire le proprie fonti di competenze contenenti istruzioni o script arbitrari. Esempi di mitigazioni includono:

  • Eliminare o ignorare il skills campo dalle richieste fornite dal chiamante

  • Consenti l'elenco dei prefissi S3 o dei repository Git consentiti

Osservabilità e correlazione delle tracce

L'harness propaga automaticamente gli identificatori di correlazione alle AgentCore primitive downstream (Gateway, Memory, Code Interpreter, Browser) per consentire visualizzazioni di traccia unificate in ingresso. CloudWatch Questi identificatori vengono utilizzati solo per l'osservabilità e non vengono mai utilizzati per decisioni di autorizzazione o accesso ai dati.

Configurazione della rete

Per impostazione predefinita, le sessioni di Harness vengono eseguite sulla rete pubblica. Per accedere alle risorse private (database, API interne, sottoreti private), implementa l'harness nel tuo VPC.

Esempio
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "VpcHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --environment '{"agentCoreRuntimeEnvironment": {"networkConfiguration": {"networkMode": "VPC", "vpcConfig": {"securityGroupIds": ["sg-0abc1234def56789a"], "subnetIds": ["subnet-0abc1234def56789a"]}}}}'
AgentCore CLI
agentcore add harness --name internal-agent \ --network-mode VPC \ --subnets subnet-0abc1234def56789a \ --security-groups sg-0abc1234def56789a agentcore deploy
Importante

In modalità VPC, l'harness estrae il contenitore di applicazioni gestite da un repository Amazon ECR privato nella regione harness all'inizio di ogni sessione. Il tuo VPC non ha bisogno di un gateway NAT o di un accesso a Internet per questo pull. Invece, crea endpoint VPC di interfaccia per com.amazonaws.<region>.ecr.dkr e e un endpoint VPC gateway percom.amazonaws.<region>.ecr.api, in modo che l'immagine e i com.amazonaws.<region>.s3 suoi livelli si risolvano all'interno del tuo VPC. Se il tuo agente chiama Amazon Bedrock per un'inferenza, crea anche un endpoint di interfaccia per. com.amazonaws.<region>.bedrock-runtime Senza gli endpoint richiesti, le sessioni non vengono avviate a causa dei timeout di estrazione delle immagini. Il ruolo di esecuzione deve consentire l'estrazione dal repository privato. Vedi la politica del ruolo di esecuzione.

Per ulteriori indicazioni sulla configurazione della rete, consulta Configure AgentCore Runtime e la configurazione VPC degli strumenti integrati. Per la connettività API in entrata tramite PrivateLink, consulta gli endpoint dell'interfaccia VPC.

OAuth in entrata

Richiedi ai chiamanti di presentare un JWT valido emesso da un provider di identità configurato prima di poter richiamare l'harness. AgentCore L'identità trasmette l'identità dell'utente finale tramite l'agente, in modo che gli strumenti a valle possano chiamare le API con credenziali utente con ambito anziché un account di servizio condiviso.

Esempio
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "OAuthHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --authorizer-configuration '{"customJWTAuthorizer": {"discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/<POOL_ID>/.well-known/openid-configuration", "allowedClients": ["<CLIENT_ID>"]}}'

Invoca con un token Bearer anziché con le credenziali Sigv4:

curl -X POST "https://bedrock-agentcore.us-west-2.amazonaws.com/harnesses/invoke?harnessArn=${HARNESS_ARN}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ID_TOKEN}" \ -H "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: $(uuidgen)" \ -d '{"messages": [{"role": "user", "content": [{"text": "Hi"}]}]}'
AgentCore CLI
agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} agentcore deploy

Invoca con un token al portatore:

agentcore invoke --harness MyNewHarness --bearer-token "{token}" "Hello"

Quando l'endpoint di rilevamento OIDC del tuo provider di identità è raggiungibile solo dopo PrivateLink, aggiungi i flag di endpoint privati all'autorizzatore CUSTOM_JWT. Usa un endpoint VPC gestito dal servizio:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-vpc-id vpc-0abc1234def56789a \ --private-endpoint-subnets subnet-0abc1234def56789a,subnet-0def5678abc12349b \ --private-endpoint-ip-type IPV4 \ --private-endpoint-security-groups sg-0abc1234def56789a agentcore deploy

Oppure punta a una configurazione di risorse VPC Lattice esistente anziché a un endpoint VPC gestito:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-lattice-arn rcfg-0abc1234def56789a agentcore deploy
Nota

I flag degli endpoint privati sono validi solo con. --authorizer-type CUSTOM_JWT --private-endpoint-vpc-ide si --private-endpoint-lattice-arn escludono a vicenda: scegline uno. Con--private-endpoint-vpc-id, sono --private-endpoint-subnets obbligatori entrambi e --private-endpoint-ip-type (IPV4oIPV6).

Vedi l'autorizzatore JWT in entrata per il flusso completo di configurazione OAuth.

Interactive

Esegui agentcore in una directory di progetto, seleziona Aggiungi, scegli Harness e passa alle Impostazioni avanzate. Abilita l'autenticazione (e la rete per l'accesso al VPC) con Space, quindi premi Invio.

  1. Scegli il tipo di autorizzazione: AWS IAM (predefinito) o JWT personalizzato per OIDC bearer-token auth.

    Seleziona il tipo di harness authorizer
  2. Per Custom JWT, inserisci l'URL di rilevamento OIDC.

    Configura JWT personalizzato: URL di scoperta
  3. Seleziona i vincoli dei token da convalidare: segmenti di pubblico consentiti, client consentiti, ambiti consentiti o attestazioni personalizzate.

    Seleziona i vincoli JWT da configurare
  4. Scegli in che modo l'harness raggiunge l'endpoint di rilevamento IdP: Nessuno (raggiungibile pubblicamente), una risorsa VPC Lattice o un endpoint VPC gestito (). PrivateLink

    PrivateLink opzioni per l'endpoint di rilevamento IdP
  5. Per Network, scegli la modalità VPC e fornisci gli ID della sottorete e gli ID dei gruppi di sicurezza.

    Inserisci gli ID della sottorete VPC

Conferma la procedura guidata, quindi esegui per agentcore deploy candidarti.

Per saperne di più: AgentCore Identità · autorizzatore JWT in entrata · credenziali in uscita https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity-outbound-credential-provider.html

Politiche del gateway

Quando gli strumenti vengono forniti tramite AgentCore Gateway, Cedar-based le policy annullano ogni chiamata: chi può chiamare quale strumento, in quali condizioni, con quali argomenti.

Per saperne di più: AgentCore Politica · modelli comuni

Politica del ruolo di esecuzione

L'harness assume un ruolo di esecuzione IAM fornito dall'utente. La politica di fiducia del ruolo deve consentire al responsabile del AgentCore servizio di assumerlo:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

Autorizzazioni IAM richieste per i chiamanti

Le API Harness richiedono autorizzazioni sia sulla risorsa Harness che sulle risorse di Runtime e di memoria opzionali sottostanti AgentCore . AgentCore La tabella seguente elenca le azioni richieste per ciascuna API:

"Hello, World!" Azioni IAM richieste

InvokeHarness

bedrock-agentcore:InvokeHarness, bedrock-agentcore:InvokeAgentRuntime

InvokeAgentRuntimeCommand

bedrock-agentcore:InvokeAgentRuntimeCommand, bedrock-agentcore:InvokeAgentRuntime

CreateHarness

bedrock-agentcore:CreateHarness, bedrock-agentcore:CreateAgentRuntime, bedrock-agentcore:CreateMemory

UpdateHarness

bedrock-agentcore:UpdateHarness, bedrock-agentcore:UpdateAgentRuntime, bedrock-agentcore:UpdateMemory

DeleteHarness

bedrock-agentcore:DeleteHarness, bedrock-agentcore:DeleteAgentRuntime, bedrock-agentcore:DeleteMemory

GetHarness

bedrock-agentcore:GetHarness

ListHarnesses

bedrock-agentcore:ListHarnesses

CreateHarnessEndpoint

bedrock-agentcore:CreateHarnessEndpoint, bedrock-agentcore:CreateAgentRuntimeEndpoint

UpdateHarnessEndpoint

bedrock-agentcore:UpdateHarnessEndpoint, bedrock-agentcore:UpdateAgentRuntimeEndpoint

DeleteHarnessEndpoint

bedrock-agentcore:DeleteHarnessEndpoint, bedrock-agentcore:DeleteAgentRuntimeEndpoint

GetHarnessEndpoint

bedrock-agentcore:GetHarnessEndpoint

ListHarnessEndpoints

bedrock-agentcore:ListHarnessEndpoints

ListHarnessVersions

bedrock-agentcore:ListHarnessVersions

La maggior parte delle azioni utilizza Harness ARN come ambito delle risorse:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id> Le azioni sugli endpoint utilizzano anche l'ARN dell'endpoint harness:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>

Le DeleteHarnessEndpoint azioni GetHarnessEndpointUpdateHarnessEndpoint, e richiedono sia l'Harness ARN che l'Endpoint ARN. CreateHarnessEndpointrichiede solo l'arn del cablaggio. L'endpoint non esiste ancora, quindi non è necessario alcun ARN dell'endpoint. Quando si richiama un endpoint personalizzato InvokeHarness e si InvokeAgentRuntimeCommand richiedono sia l'Harness ARN che l'Endpoint ARN.

Esempio di politica relativa ai ruoli di esecuzione

L'esempio seguente riguarda un cablaggio sulla rete pubblica, che estrae l'immagine del contenitore gestito da Amazon ECR Public. Un harness in modalità VPC estrae l'immagine gestita da un repository Amazon ECR privato nella regione harness, quindi il suo ruolo di esecuzione richiede anche autorizzazioni di pull ECR private. Aggiungi le istruzioni in modalità VPC: estrazione dell'immagine gestita da un ECR privato al ruolo di esecuzione di un harness. VPC-mode

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchLogsPutResourcePolicy", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy" ], "Resource": "*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" }, { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/harness_<agentNameAbbrv>_*" } ] }

La AgentCore CLI crea automaticamente un ruolo con queste autorizzazioni quando si crea uno scaffold di un progetto Harness. La politica sopra riportata è valida per i casi in cui il ruolo è stato creato dall'utente.

Nota

L'BedrockModelInvocationesempio riportato sopra consente di richiamare tutti i modelli di base in tutte le regioni e tutte le risorse Bedrock presenti nel tuo account. Per ridefinire l'ambito, sostituisci gli ARN delle risorse con profili di inferenza specifici, che ti consentono di indirizzare le richieste tra modelli e regioni con un unico ARN. Ad esempio: arn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId> abbinato a tutte le regioni consentite. arn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId>

Per i carichi di lavoro di produzione, stabilisci Resource i valori in base agli ARN specifici di cui hai bisogno il cablaggio anziché utilizzarli. "*"

Autorizzazioni aggiuntive per funzionalità opzionali

Di seguito sono riportati alcuni esempi di policy che puoi aggiungere al tuo ruolo di esecuzione in base alle funzionalità utilizzate dal tuo harness. Segui il principio del privilegio minimo: concedi al tuo harness agent solo gli strumenti e le credenziali specifici necessari per l'inferenza. Vedi per le definizioni Riferimento segnaposto dei segnaposto.

Accesso ECR privato (immagini dei contenitori personalizzate)

Aggiungi questa politica quando il cablaggio utilizza un'immagine ECR privata per un contenitore personalizzato.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

Modalità VPC: estrazione dell'immagine gestita da un ECR privato

Aggiungi questa policy quando il cablaggio funziona in modalità VPC. In modalità VPC, l'harness estrae il contenitore di applicazioni gestite da un repository Amazon ECR privato nella regione dell'harness (denominata). harness-<region> Questo pull utilizza un ECR privato anziché Amazon ECR Public, quindi il ruolo di esecuzione richiede autorizzazioni di pull ECR private. Questa policy è separata dalle autorizzazioni personalizzate per le immagini del contenitore: si applica all'immagine AWS gestita anche quando non fornisci il tuo contenitore.

Il repository è di proprietà di un account di AWS servizio, pertanto l'account nell'ARN del repository è contrassegnato come wildcard. Le autorizzazioni pull sono limitate alla regione Harness.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EcrManagedImagePull", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": "arn:aws:ecr:<region>:*:repository/harness-*" }, { "Sid": "EcrManagedImageToken", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

Assicurati che nel tuo VPC siano presenti gli endpoint VPC richiesti (vedi Configurazione di rete): endpoint di interfaccia per com.amazonaws.<region>.ecr.dkr e e com.amazonaws.<region>.ecr.api un endpoint gateway per. com.amazonaws.<region>.s3

AgentCore Memoria

Aggiungi questa policy quando il tuo harness utilizza un'istanza di memoria di proprietà del cliente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }

AgentCore Browser (personalizzato)

Aggiungi questa politica quando Harness utilizza una risorsa browser personalizzata di proprietà del cliente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }

AgentCore Code Interpreter (personalizzato)

Aggiungi questa politica quando il tuo cablaggio utilizza un interprete di codice personalizzato di proprietà del cliente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }

AgentCore Gateway

Aggiungi questa politica quando il cablaggio utilizza un gateway configurato con l'autenticazione in entrata SIGv4.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }

Fonti di competenze in Amazon S3 e Git

Aggiungi questa policy quando il tuo harness recupera una skill da una fonte Amazon S3. Il ruolo di esecuzione elenca e scarica gli oggetti delle abilità con il prefisso bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }

Per recuperare una skill da un repository Git privato, l'harness legge un token di accesso personale da un fornitore di credenziali di chiave API. Concedi la politica del fornitore di credenziali della chiave API mostrata di seguito per il provider di credenziali che detiene il token.

Fornitore di credenziali con chiave API (riferimenti ARN all'intestazione OpenAI, Gemini, LiteLM o MCP)

Aggiungi questa policy quando il tuo harness utilizza un fornitore di credenziali con chiave API per fornitori di modelli come OpenAI, Gemini o LiteLLM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }

Provider di credenziali OAuth2 (Gateway) OAuth-protected

Aggiungi questa policy quando il tuo harness utilizza un provider di credenziali OAuth2 per gli strumenti di gateway. OAuth-protected

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }

Riferimento segnaposto

Sostituisci i seguenti segnaposti nelle politiche precedenti con valori specifici per il tuo ambiente:

Placeholder Description

<region>

La AWS regione in cui è distribuita la risorsa.

<accountId>

L'ID AWS del tuo account.

<agentName>

Il nome del tuo addetto all'imbracatura.

<agentNameAbbrv>

La forma abbreviata del nome del tuo harness agent utilizzato nei nomi predefiniti delle risorse di AgentCore memoria.

<memoryId>

L'ID della risorsa di AgentCore memoria.

<browserCustomId>

L'ID della risorsa del browser personalizzata.

<codeInterpreterCustomId>

L'ID della tua risorsa di interprete di codice personalizzata.

<gatewayId>

L'ID della tua risorsa AgentCore Gateway.

<apiKeyName>

Il nome del tuo fornitore di credenziali per la chiave API.

<skillBucket>

Il nome del bucket S3 che contiene i tuoi file di abilità.

<oauthProviderName>

Il nome del tuo provider di credenziali OAuth2.

<ecrRegion>

La regione in cui è ospitato il tuo repository ECR.

<ecrAccountId>

L'ID AWS dell'account proprietario del repository ECR.

<ecrRepoName>

Il nome del tuo archivio ECR.

Nota

La parte finale delle risorse di -* Secrets Manager rappresenta il suffisso casuale che Secrets Manager aggiunge agli ARN segreti.