Kontrollieren Sie den API-Zugriff mit Ihrer AWS SAM Vorlage - AWS Serverless Application Model

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Kontrollieren Sie den API-Zugriff mit Ihrer AWS SAM Vorlage

Durch die Steuerung des Zugriffs auf Ihre API-Gateway-APIs wird sichergestellt, dass Ihre serverlose Anwendung sicher ist und nur mit der von Ihnen aktivierten Autorisierung darauf zugegriffen werden kann. Sie können die Autorisierung in Ihrer AWS SAM Vorlage aktivieren, um zu kontrollieren, wer auf Ihre API-Gateway-APIs zugreifen kann.

AWS SAM unterstützt mehrere Mechanismen zur Steuerung des Zugriffs auf Ihre API-Gateway-APIs. Die unterstützten Mechanismen unterscheiden AWS::Serverless::HttpApi sich je nach AWS::Serverless::Api Ressourcentyp.

In der folgenden Tabelle sind die Mechanismen zusammengefasst, die von den einzelnen Ressourcentypen unterstützt werden.

Mechanismen zur Zugriffskontrolle AWS::Serverless::HttpApi AWS::Serverless::Api
Lambda-Autorisierer
IAM-Berechtigungen
Amazon-Cognito-Benutzerpools ✓ *
API-Schlüssel
Ressourcenrichtlinien
OAuth 2.0/JWT-Autorisierer

* Sie können Amazon Cognito als Aussteller von JSON Web Token (JWT) mit dem AWS::Serverless::HttpApi Ressourcentyp verwenden.

  • Lambda-Autorisierer — Ein Lambda-Autorisierer (früher bekannt als benutzerdefinierter Autorisierer) ist eine Lambda-Funktion, die Sie bereitstellen, um den Zugriff auf Ihre API zu kontrollieren. Wenn Ihre API aufgerufen wird, wird diese Lambda-Funktion mit einem Anforderungskontext oder einem Autorisierungstoken aufgerufen, das die Client-Anwendung bereitstellt. Die Lambda-Funktion gibt an, ob der Aufrufer berechtigt ist, den angeforderten Vorgang auszuführen.

    AWS::Serverless::HttpApiSowohl der Ressourcentyp als auch der AWS::Serverless::Api Ressourcentyp unterstützen Lambda-Autorisierer.

    Weitere Informationen zu Lambda-Autorisierern mit finden Sie unter Arbeiten mit AWS::Serverless::HttpApiAWS Lambda Autorisierern für HTTP-APIs im API Gateway Developer Guide. Weitere Informationen zu Lambda-Autorisierern mit AWS::Serverless::Api finden Sie unter Verwenden von API Gateway-Lambda-Autorisierern im API Gateway Developer Guide.

    Beispiele für Lambda-Autorisierer für beide Ressourcentypen finden Sie unter. Beispiele für Lambda-Autorisierer

  • IAM-Berechtigungen — Sie können mithilfe von (IAM-) Berechtigungen steuern, wer Ihre API AWS Identity and Access Management aufrufen kann. Benutzer, die Ihre API aufrufen, müssen mit IAM-Anmeldeinformationen authentifiziert werden. Aufrufe Ihrer API sind nur erfolgreich, wenn dem IAM-Benutzer eine IAM-Richtlinie zugeordnet ist, die den API-Aufrufer repräsentiert, eine IAM-Gruppe, die den Benutzer enthält, oder eine IAM-Rolle, die der Benutzer annimmt.

    Nur der AWS::Serverless::Api Ressourcentyp unterstützt IAM-Berechtigungen.

    Weitere Informationen finden Sie unter Steuern des Zugriffs auf eine API mit IAM-Berechtigungen im API Gateway Developer Guide. Ein Beispiel finden Sie unter Beispiel für eine IAM-Berechtigung.

  • Amazon Cognito-Benutzerpools — Amazon Cognito Cognito-Benutzerpools sind Benutzerverzeichnisse in Amazon Cognito. Ein Client Ihrer API muss zuerst einen Benutzer beim Benutzerpool anmelden und ein Identitäts- oder Zugriffstoken für den Benutzer erhalten. Dann ruft der Client Ihre API mit einem der zurückgegebenen Token auf. Der API-Aufruf ist nur erfolgreich, wenn das erforderliche Token gültig ist.

    Der AWS::Serverless::Api Ressourcentyp unterstützt Amazon Cognito Cognito-Benutzerpools. Der AWS::Serverless::HttpApi Ressourcentyp unterstützt die Verwendung von Amazon Cognito als JWT-Emittenten.

    Weitere Informationen finden Sie unter Control access to a REST API using Amazon cognito user pools as authorizer (Zugriff auf eine REST-API mit Amazon-Cognito-Benutzerpools als Autorisierer) im Entwicklerhandbuch von API Gateway. Ein Beispiel finden Sie unter Beispiel für einen Amazon Cognito Cognito-Benutzerpool.

  • API-Schlüssel — API-Schlüssel sind alphanumerische Zeichenkettenwerte, die Sie an Kunden von Anwendungsentwicklern verteilen, um Zugriff auf Ihre API zu gewähren.

    Nur der AWS::Serverless::Api Ressourcentyp unterstützt API-Schlüssel.

    Weitere Informationen zu API-Schlüsseln finden Sie unter Nutzungspläne mit API-Schlüsseln erstellen und verwenden im API Gateway Developer Guide. Ein Beispiel für API-Schlüssel finden Sie unterBeispiel für einen API-Schlüssel.

  • Ressourcenrichtlinien — Ressourcenrichtlinien sind JSON-Richtliniendokumente, die Sie an eine API Gateway anhängen können. Verwenden Sie Ressourcenrichtlinien, um zu steuern, ob ein bestimmter Prinzipal (normalerweise ein IAM-Benutzer oder eine IAM-Rolle) die API aufrufen kann.

    Nur der AWS::Serverless::Api Ressourcentyp unterstützt Ressourcenrichtlinien als Mechanismus zur Steuerung des Zugriffs auf API-Gateway-APIs.

    Weitere Informationen zu Ressourcenrichtlinien finden Sie unter Steuern des Zugriffs auf eine API mit API-Gateway-Ressourcenrichtlinien im API Gateway Developer Guide. Ein Beispiel für Ressourcenrichtlinien finden Sie unterBeispiele für eine Ressourcenrichtlinie.

  • OAuth 2.0/JWT-Autorisierer — Sie können JWTs als Teil der OpenID Connect (OIDC) - und OAuth 2.0-Frameworks verwenden, um den Zugriff auf Ihre APIs zu kontrollieren. API Gateway validiert die JWTs, die Clients mit API-Anfragen einreichen, und erlaubt oder verweigert Anfragen auf der Grundlage der Tokenvalidierung und optional der Bereiche im Token.

    Nur der AWS::Serverless::HttpApi Ressourcentyp unterstützt OAuth 2.0/JWT-Autorisierer.

    Weitere Informationen finden Sie unter Controlling access to HTTP APIs with JWT authorizers (Zugriffskontrolle auf HTTP-APIs mit JWT-Autorisierern) im Entwicklerhandbuch von API Gateway. Ein Beispiel finden Sie unter Beispiel für einen OAuth 2.0/JWT-Authorizer.

Auswahl eines Mechanismus zur Zugriffskontrolle

Der Mechanismus, den Sie für die Steuerung des Zugriffs auf Ihre API-Gateway-APIs verwenden, hängt von einigen Faktoren ab. Wenn Sie beispielsweise ein Projekt auf der grünen Wiese haben, für das weder Autorisierung noch Zugriffskontrolle eingerichtet sind, sind Amazon Cognito Cognito-Benutzerpools möglicherweise die beste Option. Das liegt daran, dass Sie bei der Einrichtung von Benutzerpools auch automatisch sowohl die Authentifizierung als auch die Zugriffskontrolle einrichten.

Wenn für Ihre Anwendung jedoch bereits eine Authentifizierung eingerichtet ist, ist die Verwendung von Lambda-Autorisierern möglicherweise die beste Option. Dies liegt daran, dass Sie Ihren bestehenden Authentifizierungsdienst anrufen und auf der Grundlage der Antwort ein Richtliniendokument zurücksenden können. Wenn Ihre Anwendung eine benutzerdefinierte Authentifizierungs- oder Zugriffskontrolllogik erfordert, die Benutzerpools nicht unterstützen, sind Lambda-Autorisierer möglicherweise die beste Option.

Wenn Sie den zu verwendenden Mechanismus ausgewählt haben, finden Sie im entsprechenden Abschnitt unter Informationen AWS SAM zur Konfiguration Ihrer Anwendung Beispiele für die Verwendung dieses Mechanismus.

Anpassen von Fehlerantworten

Sie können AWS SAM damit den Inhalt einiger API-Gateway-Fehlerantworten anpassen. Nur der AWS::Serverless::Api Ressourcentyp unterstützt benutzerdefinierte API-Gateway-Antworten.

Weitere Informationen zu API-Gateway-Antworten finden Sie unter Gateway-Antworten in API Gateway im API Gateway Developer Guide. Ein Beispiel für benutzerdefinierte Antworten finden Sie unterBeispiel für eine benutzerdefinierte Antwort.

Beispiele