Wie kann ich kontoübergreifende IAM-Autorisierung für API-Gateway-HTTP-APIs bereitstellen?
Ich möchte die AWS-Identity-and-Access-Management-Authentifizierung (IAM) für den kontoübergreifenden Zugriff auf meine Amazon-API-Gateway-HTTP-API aktivieren. Wie richte ich das ein?
Kurzbeschreibung
Für API-Gateway-REST-APIs können Sie Ressourcenrichtlinien verwenden, um die IAM-Authentifizierung für kontoübergreifende Konten bereitzustellen. Diese Option ist jedoch nicht für API-Gateway-HTTP-APIs verfügbar.
Sie können die API-Aktion sts:AssumeRole verwenden, um eine Rolle für das HTTP-API-Konto anzunehmen. Die übernommene Rolle stellt temporäre Sicherheitsnachweise bereit, die zum Aufrufen der HTTP-API in einem anderen Konto verwendet werden können.
Auflösung
Temporäre IAM-Anmeldeinformationen erstellen
Hinweis: Wenn Sie beim Ausführen von Befehlen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.
1. Erstellen Sie eine IAM-Richtlinie für Konto A, das die HTTP-API hostet. Diese Richtlinie bietet die Berechtigung zum Aufrufen des HTTP-API-Execute-API-ARN.
{ "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. Erstellen Sie eine IAM-Rolle in Konto A, fügen Sie „Trusted Entity Type“ als „AWS-Konto“ hinzu und geben Sie die ID für Konto B ein.
3. Fügen Sie die in Schritt 1 erstellte IAM-Richtlinie der in Schritt 2 erstellten IAM-Rolle hinzu.
4. Erstellen Sie eine IAM-Richtlinie für Konto B, um die sts:AssumeRole API-Aktion zuzulassen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<AccountA-id>:role/<AssumedRoleName>" } ] }
5. Hängen Sie die IAM-Richtlinie an den Benutzer in Konto B an.
6. Führen Sie den AWS-CLI-Befehl asume-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üfen Sie das Objekt der Anmeldedaten für den AccessKeyId, SecretAccessKey und SessionToken. Diese temporären Anmeldeinformationen, die von der angenommenen Rolle bereitgestellt werden, können zum Aufrufen der HTTP-API verwendet werden.
Testen Sie die IAM-Authentifizierung
Verwenden Sie die Postman-App, um mithilfe der Methode, für die Sie die IAM-Authentifizierung aktiviert haben, eine Anfrage an Ihre API-Ressource zu senden.
Hinweis: Um Anforderungen, die mit einem anderen Tool oder einer anderen Umgebung an API Gateway gesendet werden, manuell zu authentifizieren, verwenden Sie den Signature-Version-4-Signaturprozess (SigV4). Weitere Informationen finden Sie unter Signieren von AWS-API-Anforderungen.
1. Wählen Sie in Postman die Registerkarte Autorisierung und gehen Sie wie folgt vor:
Wählen Sie für Typ die Option AWS Signature.
Geben Sie für AccessKey, SecretKey und SessionToken die Werte aus dem API-Aufruf von assume-role ein.
2. Geben Sie für Anforderungs-URL eingeben die Aufruf-URL Ihrer API ähnlich der folgenden ein:
https://<Api-id>.execute-api.<region>.amazonaws.com/<stagename>/<resourcepath>
Eine authentifizierte Anforderung gibt einen 200-OK-Antwortcode zurück. Eine nicht autorisierte Anfrage gibt die Nachricht Missing Authentication Token und einen 403-Forbidden-Antwortcode.
Relevante Informationen
Wie aktiviere ich die IAM-Authentifizierung für API-Gateway-REST-APIs?
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Monaten