View a markdown version of this page

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

Configura l'autorizzazione in entrata per il tuo gateway

Prima di creare il gateway, è necessario configurare l'autorizzazione in entrata. L'autorizzazione in entrata convalida gli utenti che tentano di accedere alle destinazioni tramite il gateway. AgentCore AgentCore supporta i seguenti tipi di autorizzazione in entrata:

  • JSON Web Token (JWT): un token sicuro e compatto utilizzato per l'autorizzazione. Dopo aver creato il JWT, lo specifichi come configurazione di autorizzazione quando crei il gateway. È possibile creare un JWT con qualsiasi provider di identità in Configurazione e configurazione del provider.

  • Identità IAM: autorizza il tentativo di accesso al gateway tramite le credenziali dell'identità AWS IAM.

  • Tipi di autorizzazione scaricati: il gateway non prende alcuna decisione di autorizzazione da solo e trasferisce invece l'autorizzazione a un altro componente, come il target a valle, un motore di policy collegato al gateway o una funzione Lambda interceptor. Questa categoria include solo Authenticate e No Authorization. Per dettagli e linee guida, consulta Autorizzazione in entrata offloaded.

Nota

Se utilizzi la Console di AWS gestione o la AgentCore CLI per creare il gateway, puoi creare una configurazione di autorizzazione in entrata predefinita utilizzando Amazon Cognito durante la creazione del gateway. Se prevedi di utilizzare la configurazione di autorizzazione predefinita, puoi ignorare questo prerequisito.

Se non prevedi di utilizzare la configurazione di autorizzazione predefinita utilizzando Amazon Cognito, seleziona l'argomento corrispondente al tipo di autorizzazione che intendi utilizzare per scoprire come configurarla:

IAM-based autorizzazione in entrata

IAM-based l'autorizzazione in entrata consente di utilizzare le credenziali IAM del chiamante del gateway per l'autorizzazione. Puoi utilizzare questa opzione se desideri creare un'identità IAM attraverso la quale autenticare gli utenti che chiamano il tuo gateway.

Per configurare l'autorizzazione IAM-based in entrata

  1. Crea o utilizza un'identità IAM esistente per i chiamanti del gateway.

  2. Crea una policy IAM basata sull'identità che contenga le seguenti autorizzazioni:

    • bedrock-agentcore:InvokeGateway— Dopo aver creato il gateway, è necessario modificare questa politica in modo che il Resource campo sia compreso nell'ambito del gateway creato come best practice di sicurezza.

  3. Allega la policy all'identità del chiamante del gateway.

Policy di esempio

L'esempio seguente mostra una policy che è possibile allegare a un'identità per consentirle di richiamare un gateway con l'ID my-gateway-12345

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }

Risorse

Autorizzazione in entrata basata su JSON Web Token (JWT)

Un JSON Web Token (JWT) è un token sicuro e compatto utilizzato per l'autorizzazione. È possibile creare un JWT con un provider di identità supportato. Dopo aver creato un JWT, è possibile recuperarlo e specificarlo come configurazione di autorizzazione quando si crea il gateway.

Importante

L'utilizzo dell'autorizzazione in entrata basata sui token JWT comporterà la registrazione di alcune richieste del token JWT. CloudTrail La voce include l'oggetto del token di identità web fornito. Ti consigliamo di evitare di utilizzare informazioni di identificazione personale (PII) in questo campo. Ad esempio, è possibile utilizzare invece un GUID o un identificatore a coppie, come suggerito nella specifica OIDC.

Puoi utilizzare la AgentCore CLI per configurare un JWT predefinito o crearne uno manualmente con un provider di identità supportato. Per ulteriori informazioni sui diversi metodi di configurazione di un JWT, seleziona uno dei seguenti argomenti:

Configura un JWT predefinito

La AgentCore CLI ti consente di creare facilmente una configurazione di autorizzazione predefinita utilizzando Amazon Cognito che puoi poi utilizzare durante la creazione di un gateway. Quando eseguiagentcore create, la CLI ti richiede di configurare l'autorizzazione in entrata e può configurare automaticamente un pool di utenti Amazon Cognito per te.

agentcore create

Una volta completato il comando, la AgentCore CLI fornisce informazioni di autenticazione e autorizzazione:

  • Utilizzerai la configurazione dell'autorizzatore quando creerai il gateway.

  • Per l'autorizzazione in entrata quando si richiama il gateway, è necessario ottenere un token di accesso utilizzando l'ID cliente, il segreto del client e l'endpoint del token. Per ulteriori informazioni su come ottenere il token di accesso, consulta l'esempio in Utilizzare un AgentCore gateway o L'endpoint dell'emittente del token nella Amazon Cognito Developer Guide.

Configura un JWT manualmente

Amazon Bedrock AgentCore supporta i JWT di tutti i provider di identità. Puoi vedere alcuni esempi in Configurazione e configurazione del provider.

Nel processo di creazione del JWT, prendi nota dei seguenti valori, che compilerai CustomJWTAuthorizerConfigurationquando creerai un gateway, se applicabili al tuo caso d'uso:

  • Discovery URL: l'URL da cui è possibile recuperare le credenziali di accesso e l'endpoint del token.

  • ID client: l'identificatore pubblico di un'applicazione client che richiede un token, convalidato in base al reclamo. client_id

  • Client secret: la chiave privata che autentica l'accesso dell'applicazione client per il recupero di un token.

  • Destinatari consentiti: l'identificatore che convalida i destinatari o i consumatori previsti di un token tramite l'attestazione. aud

  • Ambiti consentiti: gli ambiti che definiscono le limitazioni dell'accesso di un'applicazione all'account di un utente. Per ulteriori informazioni, consulta OAuth Scopes.

  • Altri valori di attestazione obbligatori: a seconda dell'autorizzatore utilizzato, potrebbe essere necessario specificare campi e regole di attestazione personalizzati obbligatori per far corrispondere il valore del campo di attestazione a quello per l'autenticazione.

Avrai bisogno di questi valori per effettuare le seguenti operazioni:

  • Crea il gateway specificando i valori nella configurazione dell'autorizzatore.

  • Ottieni le credenziali di autorizzazione per richiamare il gateway. Per sapere come ottenere le tue credenziali, consulta la documentazione del tuo provider di identità. Ad esempio, se hai utilizzato Amazon Cognito, consulta L'endpoint dell'emittente del token nella Amazon Cognito Developer Guide.

Ambita la pubblicità nelle sfide di autenticazione

Quando un client invia una richiesta a un JWT-authorized gateway senza un token di accesso valido, il gateway restituisce una risposta di errore con un'WWW-Authenticateintestazione che pubblicizza gli ambiti OAuth richiesti. Questo segue il formato RFC 6750 Bearer Token Challenge e consente MCP-compliant ai client di scoprire automaticamente gli ambiti necessari per l'acquisizione dei token.

Il gateway restituisce le seguenti risposte a seconda dell'errore:

  • 401 Non autorizzato: la richiesta non ha un token o un token non valido. L'WWW-Authenticateintestazione include resource_metadata parametri. scope

  • 403 Forbidden: il token è valido ma non contiene gli ambiti richiesti. L'WWW-Authenticateintestazione include error="insufficient_scope" e parametriscope. resource_metadata

Il scope valore contiene gli ambiti delimitati da spazi configurati come Ambiti consentiti nel gateway. CustomJWTAuthorizerConfiguration Il resource_metadata valore rimanda al documento OAuth Protected Resource Metadata del gateway/.well-known/oauth-protected-resource, che i client possono recuperare per scoprire il server di autorizzazione e gli ambiti supportati.

Utilizza un provider di identità privato () VPC-hosted

AgentCore Gateway supporta l'autorizzazione JWT-based in entrata con provider di identità ospitati all'interno del tuo VPC. Puoi configurare un privateEndpoint on the customJWTAuthorizer per consentire di AgentCore raggiungere i tuoi endpoint OIDC Discovery, Token e JWKS privati senza esporli alla rete Internet pubblica.

Il tuo responsabile IAM deve disporre dell'iam:CreateServiceLinkedRoleautorizzazione peridentity-network.bedrock-agentcore.amazonaws.com, in modo che AgentCore Identity possa creare il ruolo AWSServiceRoleForBedrockAgentCoreIdentity collegato al servizio per tuo conto, se non esiste già.

privateEndpointSi applica al dominio in. discoveryUrl Se il tuo provider di identità utilizza domini diversi per altri endpoint (ad esempio, il token o l'endpoint JWKS si risolve in un dominio diverso dall'URL di rilevamento), utilizza questa opzione per specificare una configurazione endpoint privata separata privateEndpointOverrides per ogni dominio aggiuntivo.

L'esempio seguente crea un gateway con un provider di identità privato utilizzando Lattice gestito:

{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }

Se il token o gli endpoint JWKS utilizzano un dominio diverso dall'URL di scoperta, aggiungi una privateEndpointOverrides voce per ogni dominio aggiuntivo. Attualmente, privateEndpointOverrides è supportato solo con risorse Lattice autogestite:

{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }

Per Lattice autogestito, configurazioni tra account e configurazioni avanzate, consulta Connettiti a risorse private nel tuo VPC usando VPC Lattice. Per una guida completa sugli scenari IdP privati in entrata e in uscita, consulta Connect to private identity provider.

Autorizzazione in entrata scaricata

Con l'autorizzazione in entrata offloaded, il gateway non prende alcuna decisione di autorizzazione autonomamente. Invece, trasferisce l'autorizzazione a un altro componente:

  • Il servizio di destinazione a valle, che autorizza la richiesta ricevuta.

  • Un motore di policy collegato al gateway, che valuta le politiche di accesso.

  • Una funzione Lambda di intercettazione, che esegue la logica di autenticazione o autorizzazione personalizzata prima che le richieste raggiungano gli obiettivi.

AgentCore offre due tipi di offload:

  • Authenticate only (AUTHENTICATE_ONLY): il gateway verifica la firma SigV4 del chiamante per autenticare il chiamante, ma non prende alcuna decisione di autorizzazione. Le richieste devono essere firmate, ma qualsiasi chiamante autenticato viene inoltrato alla destinazione.

  • Nessuna autorizzazione (NONE): il gateway non esegue alcuna autenticazione o autorizzazione in entrata. Le richieste possono non essere autenticate e qualsiasi chiamante viene inoltrato alla destinazione.

Con entrambi i tipi, sei tu a decidere dove applicare effettivamente l'autorizzazione:

  • Motore delle politiche: collega un motore di policy al gateway per valutare le politiche di accesso in modo centralizzato. Si tratta di un modello consigliato per i gateway di produzione e viene spesso utilizzato insieme a OAuth.

  • Funzione Interceptor Lambda: esegui la tua logica di autenticazione o autorizzazione prima che le richieste raggiungano i tuoi obiettivi. Questa opzione è consigliata per i gateway di produzione quando le opzioni di autorizzazione in entrata integrate non soddisfano i requisiti.

  • Obiettivo a valle: consenti al target di applicare l'autorizzazione sulla richiesta che riceve. Ciò è utile per la sperimentazione e l'onboarding progressivo, ad esempio per mettere un gateway davanti a un runtime esistente senza modificare l'autenticazione e l'autorizzazione del runtime, in modo da poter adottare le funzionalità del gateway in modo incrementale mentre il runtime continua a far rispettare l'autenticazione di cui già si fida.

Importante

Se si esegue l'offload dell'autorizzazione in entrata scegliendo una delle due opzioni AUTHENTICATE_ONLY oppureNONE, AgentCore Gateway non impone l'autorizzazione da solo. In questo scenario, è necessario trasferire l'autorizzazione a un componente separato, ad esempio un motore di policy, una funzione Lambda di intercettazione o la destinazione a valle, altrimenti qualsiasi chiamante può raggiungere l'obiettivo.

Authenticate-only autorizzazione

Con l'autorizzazione di sola autenticazione (AUTHENTICATE_ONLY), il gateway verifica la firma Signature Version 4 (SigV4) del chiamante per confermare la sua identità, ma non prende alcuna decisione di autorizzazione autonoma. Qualsiasi principale IAM autenticato può richiamare il gateway indipendentemente dalle proprie autorizzazioni e la richiesta viene inoltrata alla destinazione. L'autorizzazione viene delegata al servizio di destinazione a valle o a un motore di policy collegato al gateway.

Importante

ConAUTHENTICATE_ONLY, il gateway non applica alcuna politica di autorizzazione. Qualsiasi SigV4-signed richiesta valida verrà inoltrata alla destinazione. Assicurati che gli obiettivi a valle implementino la propria logica di autorizzazione oppure collega un motore di policy al gateway per controllare l'accesso. Senza un'autorizzazione adeguata a livello di policy di destinazione o gateway, qualsiasi chiamante autenticato può accedere ai servizi di backend dell'utente.

Nessuna autorizzazione

È possibile creare un gateway configurato senza autorizzazione utilizzandoauthorizerType=NONE. Il gateway non eseguirà alcuna autorizzazione sulla richiesta del gateway in entrata e la richiesta può essere non autenticata.

Importante

Non utilizzare i gateway No Authorization per carichi di lavoro di produzione a meno che non siano state implementate tutte le best practice di sicurezza elencate di seguito. Se hai bisogno di una logica di autenticazione personalizzata, prendi in considerazione l'utilizzo di una funzione Lambda di intercettazione per gestire l'autenticazione prima che le richieste raggiungano i tuoi obiettivi.

Migliori pratiche di sicurezza

  1. Utilizzate la chiave di bedrock-agentcore:GatewayAuthorizerType condizione per allow/deny accedere in modo selettivo all'interno della vostra organizzazione alla creazione di gateway con authorizerType=NONE

  2. Non utilizzate i gateway No Authorization per comodità di test. Dovrebbero essere utilizzati per i gateway che intendete rendere pubblici, ma avete implementato regole e controlli di throttling personalizzati per garantire che il gateway pubblico sia in grado di gestire utenti non autenticati

  3. Non utilizzate gateway No Authorization con obiettivi che potrebbero rispondere con informazioni sensibili. Sebbene i target siano configurati con le proprie configurazioni di autorizzazione, è consigliabile aggiungere un altro livello di sicurezza sul gateway.

Effettua l'onboarding di un runtime esistente senza modificarne l'autenticazione

Quando abbini un tipo di autorizzazione in entrata non caricato a un tipo di autorizzazione in uscita corrispondente che inoltra l'identità del chiamante al runtime, l'onboarding su un gateway può essere semplice: basta impostare un endpoint override sul client esistente, senza che siano necessarie modifiche di autenticazione:

  • Runtime IAM: combina AUTHENTICATE_ONLY l'autorizzazione in entrata con l'autorizzazione in uscita con le credenziali IAM del chiamante (). CALLER_IAM_CREDENTIALS Il gateway autentica il chiamante SigV4 e quindi firma la richiesta al runtime con la stessa identità del chiamante, in modo che l'autorizzazione IAM esistente del runtime continui ad applicarsi invariata. Per ulteriori informazioni, consulta Credenziali IAM del chiamante.

  • Runtime OAuth: combina l'autorizzazione in entrata senza autorizzazione con l'autorizzazione in uscita Token passthrough (). JWT_PASSTHROUGH Il gateway inoltra il JWT in entrata al runtime senza modifiche, quindi il runtime convalida il token esattamente come avviene oggi. (Token passthrough inoltra un token al portatore, quindi richiede un tipo in entrata: autorizzazione in JWT-bearing entrata JWT o. NONE Non è disponibile conAUTHENTICATE_ONLY, il che è SigV4-based e non contiene alcun token al portatore.) Per ulteriori informazioni, consulta Token passthrough.

    Nota

    Token passthrough (JWT_PASSTHROUGH) non è l'approccio consigliato per la produzione. Quando inoltrate il token in entrata senza modifiche, lo stesso token viene accettato sia dal gateway che dal target a valle, quindi deve avere un ambito ristretto, ad esempio, l'audience (aud) di ogni token deve essere limitato alla risorsa desiderata. Lo schema consigliato è lo scambio di token on-behalf of (OBO), in cui il gateway scambia il token del chiamante con un nuovo token destinato al pubblico per la destinazione invece di riprodurre il token del chiamante. Utilizza il token passthrough per semplificare la sperimentazione, il test e l'onboarding e passa a OBO per carichi di lavoro di produzione a lungo termine.

avvertimento

Le configurazioni di inoltro delle identità in questa sezione si basano esclusivamente sul runtime a valle per autorizzare le richieste; il gateway non aggiunge alcuna autorizzazione propria. Sono destinate ai test, alla sperimentazione e all'onboarding senza interruzioni. Per un gateway di produzione, applica l'autorizzazione al gateway: configura l'autorizzazione in entrata JWT o IAM, collega un motore di policy o utilizza una funzione Lambda interceptor. Per garantire che i chiamanti non possano aggirare il gateway una volta adottato, consulta Imposizione del traffico attraverso il gateway.