View a markdown version of this page

Configura l'autorizzazione in uscita per il tuo gateway - Amazon Bedrock AgentCore

Configura l'autorizzazione in uscita per il tuo gateway

L'autorizzazione in uscita consente ai AgentCore gateway Amazon Bedrock di accedere in modo sicuro alle destinazioni del gateway per conto degli utenti che sono stati autenticati e autorizzati durante l'autorizzazione in entrata.

AgentCore Gateway supporta i seguenti tipi di autorizzazione in uscita:

  • Nessuna autorizzazione (non consigliata): alcuni tipi di destinazione offrono la possibilità di ignorare l'autorizzazione in uscita. Questa opzione meno sicura non è consigliata.

  • IAM-based autorizzazione in uscita: utilizza il ruolo del servizio gateway per autenticare l'accesso alla destinazione del gateway con AWS Signature Version 4 (Sig V4).

  • Credenziali IAM del chiamante: il gateway utilizza le credenziali IAM del chiamante per firmare le richieste verso la destinazione. Il gateway assume un ruolo per conto del chiamante utilizzando il Federated Access Service (FAS) e firma la richiesta in uscita con l'identità del chiamante. Ciò è utile quando il servizio di destinazione deve autorizzare in base all'identità del chiamante originale anziché al ruolo del servizio gateway.

  • OAuth: un framework di autorizzazione aperto che consente a un'applicazione client di accedere alle risorse. È possibile utilizzare OAuth con un provider di identità integrato o con uno personalizzato. Per ulteriori informazioni, consulta OAuth 2.0. Puoi utilizzare i seguenti tipi di concessioni di autorizzazione OAuth:

    • Concessione delle credenziali del client: Machine-to-machine autenticazione (nota anche come OAuth a 2 vie). L'applicazione client accede alle risorse per conto dell'applicazione, anziché per conto dell'utente.

    • Concessione del codice di autorizzazione: User-delegated accesso (noto anche come OAuth a 3 vie). L'utente fornisce il consenso all'applicazione client per accedere alle risorse per conto dell'utente.

    • Token exchange grant (On-behalf-of): il gateway scambia il token di accesso dell'utente in entrata con un nuovo token di accesso con ambito destinato a una risorsa a valle. Il token scambiato contiene sia l'identità dell'utente che l'identità dell'agente, consentendo ai servizi a valle di applicare un'autorizzazione granulare in ogni momento senza attivare flussi di consenso aggiuntivi. Per ulteriori informazioni, consulta Token Exchange. On-behalf-of

  • Token passthrough: il gateway trasmette il token di autorizzazione in entrata direttamente alla destinazione senza modifiche. Il servizio di destinazione è responsabile della convalida del token. Ciò richiede che il gateway utilizzi l'autorizzazione AUTHENTICATE_ONLY in entrata in modo che il token venga convalidato ma conservato per l'inoltro.

  • Chiave API: utilizza il AgentCore servizio per generare una chiave API per autenticare l'accesso alla destinazione del gateway.

Il tipo di autorizzazione in uscita che è possibile configurare dipende dal tipo di destinazione del gateway a cui si autorizza l'accesso:

Target type (Tipo di destinazione) Nessuna autorizzazione Ruolo del servizio Gateway Credenziali IAM del chiamante OAuth (credenziali del client) OAuth (codice di autorizzazione) OAuth (scambio di token) Token passthrough Chiave API

Fase API Gateway

No

No

No

No

No

funzione Lambda

No

No

No

No

No

No

No

server MCP

No

No

Schema OpenAPI

No

No

Schema Smithy

No

No

No

No

No

No

AgentCore Runtime (HTTP)

No

No

No

No

Nota

Se utilizzi un modello di provider di integrazione come destinazione, esamina i tipi di autorizzazione supportati per i diversi modelli nella sezione Built-in Modelli dei provider di integrazione come destinazioni.

Prima di aggiungere una destinazione al gateway, è necessario impostarne l'autorizzazione tramite uno dei metodi supportati.

Nota

È possibile ignorare questo prerequisito se si prevede di utilizzare la console di AWS gestione o la AgentCore CLI per creare il gateway. Se utilizzi uno di questi strumenti, puoi consentire la creazione AgentCore automatica di un ruolo di servizio con le autorizzazioni necessarie per accedere alla destinazione. Ogni volta che aggiungi una destinazione, le autorizzazioni necessarie verranno automaticamente associate al tuo ruolo di servizio.

Seleziona un argomento per scoprire come configurare quel tipo di autorizzazione:

Configura l'autorizzazione IAM-based in uscita con un ruolo di servizio gateway

IAM-based l'autorizzazione in uscita consente di utilizzare le credenziali IAM del ruolo del servizio gateway per l'autorizzazione con AWS Signature Version 4 (Sig V4). Questa opzione consente al AgentCore servizio Amazon Bedrock di autenticarsi sulle destinazioni del gateway per conto dei chiamanti del gateway.

Se utilizzi questa opzione, verifica che il ruolo del servizio gateway disponga delle autorizzazioni. bedrock-agentcore:InvokeGateway Il gateway utilizza le credenziali del ruolo di servizio per l'autenticazione durante la chiamata.

Configurazione aggiuntiva per server MCP e destinazioni OpenAPI

Quando si utilizza l'autorizzazione IAM-based in uscita con un server MCP o un target OpenAPI, è necessario fornire una configurazione aggiuntiva per la firma SigV4. NelcredentialProviderConfigurations, includi e con i seguenti campi: iamCredentialProvider

  • service (obbligatorio) — Il nome del AWS servizio utilizzato per la firma di SigV4. Ad esempio, bedrock-agentcore per i server MCP ospitati su Amazon AgentCore Bedrock.

  • region (opzionale): la AWS regione per la firma di SigV4. Se non si specifica una regione, il gateway utilizza la propria regione.

Per gli obiettivi Lambda, API Gateway e Smithy, non includere il campo. iamCredentialProvider Questi tipi di target supportano solo la GATEWAY_IAM_ROLE configurazione di base con. credentialProviderType Per ulteriori informazioni sulla specifica della configurazione del provider di credenziali, consulta Autorizzazione del ruolo del servizio AgentCore Gateway (IAM).

Best practice di sicurezza per IAM-based l'autorizzazione in uscita

Il ruolo di esecuzione del gateway è condiviso tra tutte le destinazioni configurate conGATEWAY_IAM_ROLE. Le relative autorizzazioni sono il limite superiore per ciò che qualsiasi chiamante autorizzato può esercitare tramite il gateway. Segui queste best practice per limitare l'esposizione:

  • Limita il ruolo di esecuzione alle autorizzazioni minime: concedi solo le autorizzazioni necessarie per tutte le destinazioni configurate. Evita caratteri generici Action o jolly. Resource

  • Utilizza gateway separati per limiti di fiducia diversi: se le destinazioni hanno livelli di sensibilità diversi o servono carichi di lavoro diversi, implementali dietro gateway separati con ruoli di esecuzione distinti.

  • Utilizza il motore delle policy per limitare l'accesso dei chiamanti: sui gateway condivisi, utilizza il motore delle policy per controllare quali chiamanti possono richiamare quali destinazioni, limitando il raggio di risposta delle autorizzazioni di ogni singolo chiamante.

Configura l'autorizzazione in uscita con un client OAuth

Per configurare l'autorizzazione in uscita con un client OAuth, utilizzi il servizio AgentCore Identity e specifichi le credenziali del client che ricevi dalla creazione di un client in un provider di identità integrato (vedi Configurazione e configurazione del provider) o in un provider di identità personalizzato.

Per configurare l'autorizzazione in uscita con un client OAuth

  1. Registra la tua applicazione client con un provider di terze parti supportato.

  2. Riceverai un ID cliente, un segreto del cliente e possibilmente altri valori a cui farai riferimento quando configurerai l'autorizzazione in uscita.

  3. Segui uno dei passaggi seguenti, a seconda delle tue esigenze:

  4. Prendi nota dell'ARN delle credenziali generate credentialProviderArn (nell'API) e dell'ARN segreto di Secrets AWS Manager secretArn (nell'API). Utilizzerai questi valori quando creerai il tuo target gateway.

  5. (Se utilizzi un ruolo di servizio gateway personalizzato) Allega la seguente politica basata sull'identità al tuo ruolo di servizio gateway:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/oauth2credentialprovider/CredentialName" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Sostituisci i valori dei seguenti campi:

    • Nell'GetWorkloadAccessTokenistruzione, sostituisci quello GatewayName nell'Resourceelenco con il nome del gateway.

    • Nell'GetResourceOauth2Tokenistruzione, sostituisci il valore nell'Resourceelenco con l'ARN della credenziale appena generata.

    • Nell'GetSecretValueistruzione, sostituisci il valore nell'Resourceelenco con l'ARN del AWS segreto restituito nella risposta quando hai generato la credenziale.

Esempi di impostazione dell'autorizzazione del client OAuth

Gli esempi seguenti mostrano come impostare l'autorizzazione tramite un client OAuth per la destinazione del gateway:

Esempio
AgentCore CLI
  1. I comandi delle credenziali AgentCore CLI devono essere eseguiti all'interno di un progetto agentcore esistente. Se non ne hai ancora uno, crea prima un progetto con. agentcore create

    agentcore add credential \ --name oauth-credential-provider \ --type oauth \ --discovery-url <DiscoveryUrl> \ --client-id <ClientId> \ --client-secret <ClientSecret> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-oauth2-credential-provider \ --name oauth-credential-provider \ --credential-provider-vendor CustomOAuth2 \ --oauth2-provider-config-input '{ "customOAuth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } }'
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_oauth2_credential_provider( name="oauth-credential-provider", credentialProviderVendor="CustomOAuth2", oauth2ProviderConfigInput={ "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } )

Configura l'autorizzazione in uscita con una chiave API

Per configurare l'autorizzazione in uscita con una chiave API, si utilizza il servizio AgentCore Identity e si specifica una chiave API che si riceve da un provider di identità supportato.

Per configurare l'autorizzazione in uscita con un client OAuth

  1. Registra la tua applicazione client con un provider di terze parti supportato.

  2. Configura una chiave API per il servizio del provider. Prendi nota dei seguenti valori, che specificherai quando aggiungi il gateway target:

    • Posizione delle credenziali: indica se la chiave API deve essere inserita nell'intestazione o come parametro di query.

    • Prefisso della credenziale: il prefisso della credenziale (es. Portatore).

  3. Segui uno dei passaggi seguenti, a seconda delle tue esigenze:

  4. Prendi nota dei seguenti valori, che specificherai quando aggiungi il gateway target:

    • ARN del provider di credenziali: un Amazon Resource Name (ARN) generato per il provider di credenziali.

    • Nome: il nome che hai assegnato alla chiave API.

    • ARN segreto: un ARN segreto di AWS Secrets Manager generato per la chiave API.

  5. (Se utilizzi un ruolo di servizio gateway personalizzato) Allega la seguente politica basata sull'identità al tuo ruolo di servizio gateway:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/apikeycredentialprovider/Name" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Sostituisci i valori dei seguenti campi:

    • Nell'GetWorkloadAccessTokenistruzione, sostituisci quello GatewayName nell'Resourceelenco con il nome del gateway.

    • Nell'GetResourceApiKeyistruzione, sostituisci il valore nell'Resourceelenco con l'ARN della credenziale appena generata.

    • Nell'GetSecretValueistruzione, sostituisci il valore nell'Resourceelenco con l'ARN del AWS segreto restituito nella risposta quando hai generato la credenziale.

Esempi di impostazione di una chiave API

Gli esempi seguenti mostrano come impostare una chiave API per il target del gateway:

Esempio
AgentCore CLI
  1. I comandi delle credenziali AgentCore CLI devono essere eseguiti all'interno di un progetto agentcore esistente. Se non ne hai ancora uno, crea prima un progetto con. agentcore create

    agentcore add credential \ --name api-key-credential-provider \ --type api-key \ --api-key <API_KEY_VALUE> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-api-key-credential-provider \ --name api-key-credential-provider \ --api-key <API_KEY_VALUE>
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_api_key_credential_provider( name="api-key-credential-provider", apiKey="<API_KEY_VALUE>" )