View a markdown version of this page

Configura l'autorizzazione in entrata per il tuo gateway - 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à.

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 si specifica come configurazione di autorizzazione quando si crea il gateway. È possibile creare un JWT con uno qualsiasi dei provider di identità in Configurazione e configurazione del provider.

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

  • Tipi di autorizzazione non caricati: 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 di intercettazione. Questa categoria include Solo autenticazione e Nessuna autorizzazione. Per dettagli e linee guida, consulta Autorizzazione in entrata non caricata.

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 saltare questo prerequisito.

Se non intendi utilizzare la configurazione di autorizzazione predefinita utilizzando Amazon Cognito, seleziona l'argomento che corrisponde 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 usare questa opzione se desideri creare un'identità IAM tramite la quale gli utenti che chiamano il tuo gateway possano essere autenticati.

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 policy in modo che il Resource campo sia limitato al gateway creato come best practice di sicurezza.

  3. Associa 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 al momento della creazione del gateway.

Importante

L'utilizzo dell'autorizzazione in entrata basata sui token JWT comporterà la registrazione di alcune attestazioni 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, potresti invece utilizzare un GUID o un identificatore a coppie, come suggerito nella specifica OIDC.

È possibile utilizzare la AgentCore CLI per configurare un gateway con un provider di identità JWT esistente. Per saperne di più sui metodi di configurazione JWT, seleziona uno dei seguenti argomenti:

Configura un autorizzatore JWT

Crea un'applicazione e un client con un provider di identità supportato. Per un esempio di Amazon Cognito, consulta Guida introduttiva ad Amazon Cognito. Annota l'URL di rilevamento OIDC e l'ID del cliente.

Eseguite il comando seguente in una directory AgentCore del progetto:

agentcore add gateway \ --name MyGateway \ --protocol-type MCP \ --authorizer-type CUSTOM_JWT \ --discovery-url <OIDC_DISCOVERY_URL> \ --allowed-clients <CLIENT_ID>

La AgentCore CLI utilizza la configurazione OIDC esistente; non crea le risorse del provider di identità. Per richiamare il gateway, richiedete un token di accesso dal vostro provider. Per Amazon Cognito, consulta The token issuer endpoint 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 inserirai CustomJWTAuthorizerConfiguration quando crei un gateway, se sono applicabili al tuo caso d'uso:

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

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

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

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

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

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

Questi valori ti serviranno 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 The token issuer endpoint nella Amazon Cognito Developer Guide.

Ambito della 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 annuncia 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 e parametri. scope

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

Il scope valore contiene gli ambiti delimitati da spazi configurati come ambiti consentiti in quelli del gateway. CustomJWTAuthorizerConfiguration Il resource_metadata valore rimanda al documento OAuth Protected Resource Metadata del gateway all'indirizzo/.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à private () 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 customJWTAuthorizer per consentire di AgentCore raggiungere i tuoi endpoint privati di rilevamento OIDC, token e JWKS senza esporli alla rete Internet pubblica.

Il tuo responsabile IAM deve avere l'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 rispetto all'URL di scoperta), usa per specificare una configurazione dell'endpoint privato 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 le configurazioni Lattice autogestite, per più account e le configurazioni avanzate, vedi Connessione a risorse private nel tuo VPC utilizzando VPC Lattice. Per una guida completa che copre gli scenari di IdP privati in entrata e in uscita, consulta Connessione a provider di identità privati. Connettiti a provider di identità privati

Autorizzazione in entrata non caricata

Con l'autorizzazione in entrata offload, 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 viene effettivamente applicata l'autorizzazione:

  • Policy engine: collega un policy engine al gateway per valutare centralmente le policy di accesso. 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 è consigliata per i gateway di produzione quando le opzioni di autorizzazione in entrata integrate non soddisfano i requisiti.

  • Obiettivo downstream: consente 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 ad applicare l'autenticazione di cui già si fida.

Importante

Se riduci il carico dell'autorizzazione in entrata scegliendo uno dei due AUTHENTICATE_ONLY oNONE, AgentCore Gateway non applica 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 il target downstream, altrimenti qualsiasi chiamante può raggiungere il target.

Authenticate-only autorizzazione

Con l'autorizzazione di sola autenticazione (AUTHENTICATE_ONLY), il gateway verifica la firma Signature Version 4 (Sigv4) del chiamante per confermarne l'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 è 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. Assicuratevi che i destinatari a valle implementino la propria logica di autorizzazione o collegate 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ò raggiungere i tuoi servizi di backend.

Nessuna autorizzazione

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

Importante

Non utilizzare i gateway No Authorization per i 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.

Best practice in materia di sicurezza

  1. Usa la chiave bedrock-agentcore:GatewayAuthorizerType condizionale per allow/deny accedere in modo selettivo all'interno della tua organizzazione per creare gateway con authorizerType=NONE

  2. Non utilizzare gateway senza autorizzazione per motivi di praticità per i test. Dovrebbero essere usati per i gateway che intendi rendere pubblici ma hai implementato regole e controlli di limitazione personalizzati per garantire che il gateway pubblico sia in grado di gestire utenti non autenticati

  3. Non utilizzate gateway No Authorization con destinazioni che potrebbero rispondere con informazioni riservate. Sebbene le destinazioni siano configurate con le proprie configurazioni di autorizzazione, è consigliabile aggiungere un altro livello di sicurezza al gateway.

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

Quando si associa 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 a un gateway può essere semplice: basta impostare un endpoint override sul client esistente, senza richiedere modifiche all'autenticazione:

  • Runtime IAM: combina l'autorizzazione in AUTHENTICATE_ONLY entrata con l'autorizzazione in uscita delle 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 essere applicata invariata. Per ulteriori informazioni, consulta Credenziali IAM del chiamante. Autorizzazione delle credenziali IAM del chiamante

  • Runtime OAuth: combina l'autorizzazione in entrata No Authorization con l'autorizzazione in uscita Token passthrough (). JWT_PASSTHROUGH Il gateway inoltra il JWT in ingresso al runtime senza modifiche, quindi il runtime convalida il token esattamente come fa oggi. (Il 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, 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 si inoltra il token in ingresso senza modifiche, lo stesso token viene accettato sia dal gateway che dal target a valle, quindi deve avere un ambito ristretto, ad esempio, il pubblico (aud) di ciascun 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 con ambito di pubblico per il target invece di riprodurre nuovamente il token del chiamante. Usa 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 downstream per autorizzare le richieste; il gateway non aggiunge alcuna autorizzazione propria. Sono destinati al 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 di intercettazione. Per garantire che i chiamanti non possano bypassare il gateway una volta adottato, vedi Applicare il traffico attraverso il gateway. Applicazione del traffico attraverso il gateway