Autorizzazione: IAM, Lambda Authorizer e Cognito
Proteggerete gli endpoint API con firme IAM SigV4, Lambda Authorizer personalizzati o authorizer Amazon Cognito User Pool.
Autorizzazione: IAM, Lambda Authorizer e Cognito è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Perché l'autorizzazione delle API è importante
Senza controlli di autorizzazione, qualsiasi client Internet potrebbe chiamare gli endpoint di API Gateway e accedere ai dati o modificarli. API Gateway offre tre meccanismi di autorizzazione nativi: IAM (SigV4), autorizzatori Lambda e autorizzatori Amazon Cognito User Pool. Ogni meccanismo è adatto a casi d'uso diversi: IAM per le chiamate tra servizi AWS, gli autorizzatori Lambda per l'autenticazione personalizzata basata su token o richieste e Cognito per l'autenticazione degli utenti web o mobili.
Autorizzazione IAM con SigV4
L'autorizzazione IAM richiede ai chiamanti di firmare le richieste usando AWS Signature Version 4 (SigV4). Il chiamante deve disporre di credenziali AWS (chiave di accesso + chiave segreta oppure credenziali temporanee ottenute da STS) e la policy IAM deve consentire execute-api:Invoke sull'ARN dell'API. Questa soluzione è ideale per le chiamate machine-to-machine (server-to-server) all'interno di AWS: Lambda che chiama un'altra API, EC2 che chiama un'API interna o accesso a servizi tra account. I client browser non possono usare SigV4 facilmente.
# IAM policy to allow invoking a specific API endpoint
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/orders'
}]
}Autorizzatori Lambda: basati su token
Un autorizzatore Lambda (in precedenza Custom Authorizer) è una funzione Lambda scritta da Lei che API Gateway invoca prima di chiamare l'integrazione backend. Per gli autorizzatori basati su token, API Gateway estrae un token (JWT, OAuth, chiave API) dall'intestazione Authorization e lo passa alla funzione Lambda. La funzione Lambda convalida il token (ad esempio, verificando la firma JWT rispetto a una chiave pubblica o chiamando un identity provider di terze parti) e restituisce un documento di policy IAM che consente o nega la richiesta.
def lambda_handler(event, context):
token = event['authorizationToken']
# Validate token (JWT verification, introspect OAuth, etc.)
if is_valid_token(token):
return {
'principalId': 'user123',
'policyDocument': {
'Version': '2012-10-17',
'Statement': [{'Effect': 'Allow', 'Action': 'execute-api:Invoke',
'Resource': event['methodArn']}]
},
'context': {'userId': 'user123', 'role': 'admin'}
}
raise Exception('Unauthorized')Autorizzatori Lambda: basati sulla richiesta
Per gli autorizzatori Lambda basati sulla richiesta, API Gateway passa alla funzione Lambda l'intero contesto della richiesta (intestazioni, query string, variabili di stage e parametri del percorso), non solo un token. Questa soluzione è utile per autorizzazioni che dipendono da più attributi della richiesta: elenchi di indirizzi IP consentiti, combinazioni di intestazioni o verifiche di autenticazione a più fattori. Gli autorizzatori basati sulla richiesta sono supportati sia da REST API sia da HTTP API.
Caching degli autorizzatori Lambda
Chiamare un autorizzatore Lambda per ogni richiesta API aumenta latenza e costi. Abiliti il caching dei risultati dell'autorizzatore: la policy IAM restituita dall'autorizzatore viene memorizzata per un TTL configurabile (0–3600 secondi), usando il valore del token come chiave. Le richieste successive con lo stesso token saltano l'invocazione Lambda e usano la policy memorizzata nella cache. Imposti il TTL in modo che corrisponda al tempo di scadenza del token: se un token è valido per 1 ora, memorizzi il risultato dell'autorizzatore per lo stesso periodo. Il caching è disponibile in REST API; gli autorizzatori JWT di HTTP API dispongono di caching integrato.
Autorizzatore Amazon Cognito User Pool
Gli autorizzatori Cognito User Pool convalidano direttamente in API Gateway i JWT emessi da Cognito, senza una funzione Lambda. Quando un utente esegue l'autenticazione tramite Cognito (mediante Hosted UI, SDK o un identity provider federato), Cognito emette un token ID o un token di accesso. Il client include questo token nell'intestazione Authorization. API Gateway verifica la firma e la scadenza del token rispetto al Cognito User Pool. Se il token è valido, la richiesta prosegue; in caso contrario, API Gateway restituisce 401.
aws apigateway create-authorizer \
--rest-api-id 'abc123' \
--name 'CognitoAuthorizer' \
--type COGNITO_USER_POOLS \
--provider-arns 'arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_XXXXXXX' \
--identity-source 'method.request.header.Authorization'Autorizzatore JWT in HTTP API
HTTP API supporta nativamente gli autorizzatori JWT, senza Lambda. È sufficiente specificare l'URL dell'emittente JWT (Cognito, Auth0, Okta) e l'audience: API Gateway convalida automaticamente i JWT. Si tratta essenzialmente di un autorizzatore Cognito User Pool, ma funziona anche con qualsiasi provider OIDC conforme agli standard. La convalida del token (firma, scadenza e audience) viene eseguita internamente da API Gateway: la latenza è inferiore rispetto agli autorizzatori Lambda e non si sostengono costi Lambda.
aws apigatewayv2 create-authorizer \
--api-id 'abc123' \
--authorizer-type JWT \
--name 'JWTAuthorizer' \
--identity-source '$request.header.Authorization' \
--jwt-configuration '{
"Issuer": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXX",
"Audience": ["your-client-id"]
}'Cognito Identity Pool e User Pool a confronto
Per l'autorizzazione delle API, utilizzi i Cognito User Pool: gestiscono l'autenticazione degli utenti ed emettono JWT. I Cognito Identity Pool (identità federate) sono diversi: scambiano token di terze parti (provenienti da User Pool, accessi social o SAML) con credenziali AWS temporanee (tramite STS AssumeRoleWithWebIdentity). Gli Identity Pool vengono usati quando l'applicazione deve accedere direttamente ai servizi AWS (S3, DynamoDB) dal client. Per l'autenticazione di API Gateway, la scelta corretta sono i JWT dei User Pool; le credenziali degli Identity Pool servono per le chiamate dirette all'AWS SDK dal browser o dal dispositivo mobile.
Policy delle risorse su API Gateway
Le REST API supportano le policy delle risorse: policy JSON associate all'API che controllano l'accesso in base all'indirizzo IP, all'endpoint VPC, all'account di origine o all'ARN. Usi le policy delle risorse per: consentire solo a specifici intervalli di indirizzi IP di chiamare l'API, limitare l'accesso alle richieste provenienti da uno specifico endpoint VPC (API privata) oppure consentire invocazioni tra account. Le policy delle risorse funzionano insieme agli autorizzatori a livello di metodo: entrambi devono consentire la richiesta affinché questa vada a buon fine.
# Allow only specific IP range to call the API
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/*',
'Condition': {'IpAddress': {'aws:SourceIp': '203.0.113.0/24'}}
}]
}Autenticazione TLS reciproca
TLS reciproco (mTLS) richiede che sia il client sia il server presentino certificati durante l'handshake TLS. API Gateway supporta mTLS per REST API e HTTP API quando sono configurati nomi di dominio personalizzati. I client devono presentare un certificato valido, firmato da un'Autorità di certificazione (CA) caricata in un truststore su S3. mTLS viene usato nei servizi finanziari, nell'autenticazione dei dispositivi IoT e nelle integrazioni B2B in cui è necessaria una verifica forte dell'identità del client, oltre all'autenticazione basata su token.
Scelta del tipo di autorizzatore corretto
Scelta dell'autorizzatore per l'esame SAA-C03: IAM (SigV4) → chiamate tra servizi AWS nello stesso account o tra account; Cognito User Pool → utenti di applicazioni web o mobili autenticati tramite Cognito; autorizzatore Lambda → logica di autenticazione personalizzata (identity provider di terze parti, formati di token legacy, introspezione OAuth, combinazione di IP e token); autorizzatore JWT (HTTP API) → token OIDC/OAuth2 con qualsiasi provider conforme agli standard, a un costo inferiore rispetto agli autorizzatori Lambda. Nessun autorizzatore → API pubblica.
Verifica rapida
Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che l'autorizzazione IAM (SigV4) è destinata alle chiamate tra servizi che usano credenziali AWS; gli autorizzatori Cognito User Pool convalidano nativamente i JWT emessi da Cognito per le applicazioni web e mobili; gli autorizzatori Lambda implementano la convalida personalizzata dei token per identity provider di terze parti o logiche di autorizzazione complesse, con caching opzionale dei risultati. Nella prossima lezione esamineremo il throttling, il caching e i piani di utilizzo in API Gateway.
Domande Frequenti
La lezione «Autorizzazione: IAM, Lambda Authorizer e Cognito» è gratuita?
Sì — il testo completo di «Autorizzazione: IAM, Lambda Authorizer e Cognito» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «Autorizzazione: IAM, Lambda Authorizer e Cognito»?
Proteggerete gli endpoint API con firme IAM SigV4, Lambda Authorizer personalizzati o authorizer Amazon Cognito User Pool. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Autorizzazione: IAM, Lambda Authorizer e Cognito»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- REST API vs HTTP API vs WebSocket API
- Integrazioni: Lambda, HTTP e Mock
- Autorizzazione: IAM, Lambda Authorizer e Cognito
- Throttling, caching e piani di utilizzo