Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso fornire l'autorizzazione IAM multi-account per le API HTTP di API Gateway?
Desidero attivare l'autenticazione AWS Identity and Access Management (IAM) per l'accesso multi-account alla mia API HTTP di Amazon API Gateway.
Breve descrizione
Per le API REST di API Gateway, puoi utilizzare le policy delle risorse per fornire l'autenticazione IAM multi-account. Tuttavia, questa opzione non è disponibile per le API HTTP di API Gateway.
È possibile utilizzare l'azione dell’API sts:AssumeRole per assumere un ruolo per l'account dell’API HTTP. Il ruolo assunto fornisce credenziali di sicurezza temporanee che possono essere utilizzate per richiamare l'API HTTP in un altro account.
Risoluzione
Crea le credenziali temporanee IAM
Nota: se riscontri degli errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'AWS CLI.
1. Crea una policy IAM per l'account A che ospita l'API HTTP. Questa policy fornisce l'autorizzazione di richiamo per l'ARN execute-api dell’API HTTP.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "execute-api:Invoke", ], "Resource": [ "arn:aws:execute-api:us-east-1:<AccountA-id>:<Api-id>/$default/*/*" ] } ] }
2. Crea un ruolo IAM nell'account A, aggiungi “Tipo di entità attendibile” come “Account AWS” e inserisci l'ID per l'account B.
3. Allega la policy IAM creata nel ** passaggio 1** al ruolo IAM creato nel passaggio 2.
4. Crea una policy IAM per l'account B al fine di consentire l'azione dell'API sts:AssumeRole:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<AccountA-id>:role/<AssumedRoleName>" } ] }
5. Allega la policy IAM all'utente nell'Account B.
6. Esegui il comando AWS CLI ** assume-role** in modo simile al seguente:
$ aws sts assume-role --role-arn arn:aws:iam::<account-id>:role/<AssumedRoleName> --role-session-name role_session
Esempio di output:
{ "Credentials": { "AccessKeyId": "A1B2C3D4E5E6G7H8J9K0", "SecretAccessKey": "abcdefghijk123456789", "SessionToken": "11111111111122222222223333333333344444444455555566666667777777777778888888999999999aaaaaaaaaabbbbbbbbbcccccccc==", "Expiration": "2022-07-11T15:55:25+00:00" }, "AssumedRoleUser": { "AssumedRoleId": "AAAAAAABBBBBBBBBBB:role_session", "Arn": "arn:aws:sts::<account-id>:assumed-role/<AssumedRoleName>/role_session" } }
Controlla l'oggetto credenziali per AccessKeyId, SecretAccessKey e SessionToken. Queste credenziali temporanee fornite dal ruolo assunto possono essere utilizzate per richiamare l'API HTTP.
Verifica l'autenticazione IAM
Utilizza l'app Postman per inviare una richiesta alla tua risorsa API con il metodo per cui hai attivato l'autenticazione IAM.
Nota: per autenticare manualmente le richieste inviate ad API Gateway utilizzando un altro strumento o ambiente, utilizza il processo di firma Signature Version 4 (Sigv4). Per ulteriori informazioni, consulta Firma delle richieste API AWS.
1. In Postman, scegli la scheda ** Autorizzazione** e procedi come segue:
In Tipo, scegli AWS Signature.
Per AccessKey, SecretKey e SessionToken, inserisci i valori della chiamata dell’API assume-role.
2. Per Inserisci l'URL della richiesta, inserisci l'URL di richiamo della tua API simile al seguente:
https://<Api-id>.execute-api.<region>.amazonaws.com/<stagename>/<resourcepath>
Una richiesta autenticata restituirà il codice di risposta 200 OK. Una richiesta non autorizzata restituirà il messaggio Token di autenticazione mancante e un codice di risposta 403 Forbidden.
Informazioni correlate
How do I activate IAM authentication for API Gateway REST APIs?
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa