New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie kann ich eine kontoübergreifende IAM-Autorisierung für API Gateway-HTTP-APIs bereitstellen?
Ich möchte die AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagament)-Authentifizierung für den kontoübergreifenden Zugriff auf meine Amazon API Gateway-HTTP-API aktivieren.
Kurzbeschreibung
Du kannst für API Gateway-REST-APIs Ressourcenrichtlinien verwenden, um die IAM-Authentifizierung kontenübergreifend bereitzustellen. Diese Option ist jedoch nicht für API Gateway-HTTP-APIs verfügbar.
Du kannst die API-Aktion sts:AssumeRole verwenden, um eine Rolle für das HTTP-API-Konto zu übernehmen. Die übernommene Rolle stellt temporäre Sicherheitsanmeldeinformationen bereit, mit denen die HTTP-API in einem anderen Konto aufgerufen werden kann.
Lösung
Die temporären IAM-Anmeldeinformationen erstellen
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhältst, stelle sicher, dass du die neueste AWS CLI-Version verwendest.
1. Erstelle eine IAM-Richtlinie für Konto A, das die HTTP-API hostet. Diese Richtlinie gewährt die Berechtigung zum Aufrufen des HTTP-API-ARN execute-api.
{ "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. Erstelle eine IAM-Rolle in Konto A, füge „Typ vertrauenswürdiger Entitäten“ als „AWS-Konto“ hinzu und gib die ID für Konto B ein.
3. Füge die in Schritt 1 erstellte IAM-Richtlinie an die in Schritt 2 erstellte IAM-Rolle an.
4. Erstelle eine IAM-Richtlinie für Konto B, um die API-Aktion sts:AssumeRole zuzulassen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<AccountA-id>:role/<AssumedRoleName>" } ] }
5. Füge die IAM-Richtlinie an den Benutzer in Konto B an.
6. Führe den AWS-CLI-Befehl assume-role ähnlich dem folgenden aus:
$ aws sts assume-role --role-arn arn:aws:iam::<account-id>:role/<AssumedRoleName> --role-session-name role_session
Beispielausgabe:
{ "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" } }
Überprüfe das Anmeldeinformationen-Objekt für AccessKeyId, SecretAccessKey und SessionToken. Diese temporären Anmeldeinformationen, die von der übernommenen Rolle bereitgestellt werden, können zum Aufrufen der HTTP-API verwendet werden.
Die IAM-Authentifizierung testen
Verwende die Postman-App, um mithilfe der Methode, für die du die IAM-Authentifizierung aktiviert hast, eine Anfrage an deine API-Ressource zu senden.
Hinweis: Verwende den Signaturprozess Signature Version 4 (SigV4), um Anforderungen manuell zu authentifizieren, die mit einem anderen Tool oder einer anderen Umgebung an API Gateway gesendet werden. Weitere Informationen findest du unter Signieren von AWS-API-Anforderungen.
1. Wähle in Postman die Registerkarte Authorization (Autorisierung) und gehe wie folgt vor:
Wähle für Typ die Option AWS Signature aus.
Gib für AccessKey, SecretKey und SessionToken die Werte aus dem API-Aufruf assume-role ein.
2. Gib für Enter request URL (Anforderungs-URL eingeben) die Aufruf-URL deiner API ein, die der folgenden ähnelt:
https://<Api-id>.execute-api.<region>.amazonaws.com/<stagename>/<resourcepath>
Eine authentifizierte Anforderung gibt den Antwortcode 200 OK zurück. Eine unautorisierte Anfrage führt zur Fehlermeldung Fehlendes Authentifizierungstoken und zum Antwortcode 403 Forbidden.
Ähnliche Informationen
Wie aktiviere ich die IAM-Authentifizierung für REST-APIs in API Gateway?

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren