Wie kann ich eine kontoübergreifende IAM-Autorisierung für API Gateway-HTTP-APIs bereitstellen?

Lesedauer: 3 Minute
0

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?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten