Kontrolle des Zugriffs auf Lambda-Funktions-URLs - AWS Lambda

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.

Kontrolle des Zugriffs auf Lambda-Funktions-URLs

Sie können den Zugriff auf Ihre Lambda-Funktions-URLs mit dem AuthType-Parameter kombiniert mit ressourcenbasierten Richtlinien kontrollieren, die an Ihre spezifische Funktion angehängt sind. Die Konfiguration dieser beiden Komponenten bestimmt, wer andere administrative Aktionen für Ihre Funktions-URL aufrufen oder ausführen kann.

Der AuthType-Parameter bestimmt, wie Lambda Anfragen an Ihre Funktions-URL authentifiziert oder autorisiert. Wenn Sie Ihre Funktions-URL konfigurieren, müssen Sie eine der folgenden AuthType-Optionen angeben:

  • AWS_IAM – Lambda verwendet AWS Identity and Access Management (IAM), um Anfragen basierend auf der Identitätsrichtlinie des IAM-Prinzipals und der ressourcenbasierten Richtlinie der Funktion zu authentifizieren und zu autorisieren. Wählen Sie diese Option, wenn Sie möchten, dass nur authentifizierte -Benutzer und -Rollen Ihre Funktion über die Funktions-URL aufrufen können.

  • NONE – Lambda führt keine Authentifizierung durch, bevor Sie Ihre Funktion aufrufen. Die ressourcenbasierte Richtlinie Ihrer Funktion ist jedoch immer in Kraft und muss öffentlichen Zugriff gewähren, bevor Ihre Funktions-URL Anfragen erhalten kann. Wählen Sie diese Option, um öffentlichen, nicht authentifizierten Zugriff auf Ihre Funktions-URL zu ermöglichen.

Zusätzlich zu AuthType können Sie auch ressourcenbasierte Richtlinien verwenden, um anderen AWS-Konten Berechtigungen zu gewähren, Ihre Funktion aufzurufen. Weitere Informationen finden Sie unter Ressourcenbasierte IAM-Richtlinien in Lambda anzeigen.

Für zusätzliche Einblicke in die Sicherheit können Sie AWS Identity and Access Management Access Analyzer verwenden, um eine umfassende Analyse des externen Zugriffs auf Ihre Funktions-URL zu erhalten. IAM Access Analyzer überwacht auch auf neue oder aktualisierte Berechtigungen für Ihre Lambda-Funktionen, um Berechtigungen zu identifizieren, die öffentlichen und kontoübergreifenden Zugriff gewähren. IAM Access Analyzer ist kostenlos für alle AWS-Kunden. Weitere Informationen zu den ersten Schritten mit IAM Access Analyzer finden Sie unter Verwenden des AWS IAM Access Analyzer.

Diese Seite enthält Beispiele für ressourcenbasierte Richtlinien für beide Authentifizierungstypen und wie diese Richtlinien mithilfe des AddPermission-API-Vorgangs oder der Lambda-Konsole erstellt werden. Informationen darüber, wie Sie Ihre Funktions-URL aufrufen können, nachdem Sie Berechtigungen eingerichtet haben, finden Sie unter Lambda-Funktion aufrufen URLs.

Verwenden des Auth-Typs AWS_IAM

Wenn Sie den Authentifizierungstyp AWS_IAM auswählen, müssen Benutzer, die Ihre Lambda-Funktions-URL aufrufen, die lambda:InvokeFunctionUrl-Berechtigung haben. Je nachdem, wer die Aufrufanforderung stellt, müssen Sie diese Berechtigung möglicherweise mithilfe einer ressourcenbasierten Richtlinie erteilen.

Wenn der Prinzipal, der die Anfrage stellt, im selben AWS-Konto wie die Funktions-URL ist, dann muss der Prinzipal entweder lambda:InvokeFunctionUrl-Berechtigungen in seiner identitätsbasierten Richtlinie haben, oder Berechtigungen, die ihm in der ressourcenbasierten Richtlinie der Funktion gewährt werden. Mit anderen Worten, eine ressourcenbasierte Richtlinie ist optional, wenn der Benutzer bereits lambda:InvokeFunctionUrl-Berechtigungen in seiner identitätsbasierten Richtlinie hat. Die Bewertung der Richtlinien folgt den im Abschnitt Ermitteln, ob eine Anforderung innerhalb eines Kontos zugelassen oder verweigert wird erläuterten Regeln.

Wenn der Prinzipal, der die Anfrage stellt, in einem anderen Konto ist, muss der Prinzipal sowohl eine identitätsbasierte Richtlinie haben, die ihm lambda:InvokeFunctionUrl-Berechtigungen gewährt, als auchBerechtigungen, die ihm in einer ressourcenbasierten Richtlinie für die Funktion gewährt werden, die er aufrufen möchte. In diesen kontoübergreifenden Fällen folgt die Richtlinienbewertung den im Abschnitt Festlegen, ob eine kontoübergreifende Anforderung zulässig ist erläuterten Regeln.

Als Beispiel für eine kontoübergreifende Interaktion erlaubt die folgende ressourcenbasierte Richtlinie der example-Rolle in AWS-Konto 444455556666 den Aufruf der Funktions-URL, die mit der Funktion my-function verknüpft ist:

Beispiel Kontoübergreifende Aufrufrichtlinie für Funktions-URL
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

Sie können diese Richtlinienanweisung über die Konsole erstellen, indem Sie die folgenden Schritte ausführen:

So erteilen Sie einem anderen Konto (Konsole) URL-Aufrufberechtigungen
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen der Funktion aus, für die Sie URL-Aufrufberechtigungen gewähren möchten.

  3. Wählen Sie die Registerkarte Konfiguration und dann Berechtigungen aus.

  4. Wählen Sie unter Resource-based policy (Ressourcenbasierte Richtlinie) die Option Add permissions (Berechtigungen hinzufügen) aus.

  5. Wählen Sie Funktions-URL aus.

  6. Wählen Sie für Auth type (Authentifizierungstyp) die Option AWS_IAM aus.

  7. (Optional) Geben Sie für Statement ID (Statement-ID) eine ID für Ihre Richtlinienanweisung ein.

  8. Geben Sie unter Prinzipal den Amazon-Ressourcennamen (ARN) des Benutzers oder der Rolle ein, dem bzw. der Sie Berechtigungen gewähren möchten. Beispiel: 444455556666.

  9. Wählen Sie Save (Speichern) aus.

Alternativ können Sie diese Richtlinienanweisung auch mit dem folgenden add-permission-Befehl in der AWS Command Line Interface (AWS CLI) erstellen:

aws lambda add-permission --function-name my-function \ --statement-id example0-cross-account-statement \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM

Im vorangegangenen Beispiel ist der lambda:FunctionUrlAuthType-Bedingungsschlüsselwert AWS_IAM. Diese Richtlinie erlaubt den Zugriff nur, wenn der Authentifizierungstyp Ihrer Funktions-URL ebenfalls AWS_IAM ist.

Verwenden des Authentifizierungstyps NONE

Wichtig

Wenn Ihre Funktions-URL-Auth-Typ NONE ist und Sie eine ressourcenbasierte Richtlinie haben, die öffentlichen Zugriff gewährt, kann jeder nicht authentifizierte Benutzer mit Ihrer Funktions-URL Ihre Funktion aufrufen.

In einigen Fällen möchten Sie möglicherweise, dass Ihre Funktions-URL öffentlich ist. So können Sie beispielsweise Anfragen direkt von einem Webbrowser aus bereitstellen. Um den öffentlichen Zugriff auf Ihre Funktions-URL zu ermöglichen, wählen Sie den Auth-Typ NONE aus.

Wenn Sie den Auth-Typ NONE auswählen, verwendet Lambda IAM nicht, um Anfragen an Ihre Funktions-URL zu authentifizieren. Benutzer müssen jedoch immer noch lambda:InvokeFunctionUrl-Berechtigungen haben, um Ihre Funktions-URL erfolgreich aufzurufen. Sie können lambda:InvokeFunctionUrl-Berechtigungen erteilen, indem Sie die folgende ressourcenbasierte Richtlinie verwenden:

Beispiel Funktions-URL-Aufrufrichtlinie für alle nicht authentifizierten Prinzipale
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }
Anmerkung

Wenn Sie eine Funktions-URL mit dem Auth-Type NONE über die Konsole oder AWS Serverless Application Model (AWS SAM) erstellen, erstellt Lambda automatisch die vorhergehende ressourcenbasierte Richtlinienanweisung für Sie. Wenn die Richtlinie bereits vorhanden ist oder der Benutzer oder die Rolle, die die Anwendung erstellt, nicht über die entsprechenden Berechtigungen verfügt, erstellt Lambda sie nicht für Sie. Wenn Sie AWS CLI, AWS CloudFormation oder die Lambda-API direkt verwenden, müssen Sie lambda:InvokeFunctionUrl-Berechtigungen selbst hinzufügen. Dies macht Ihre Funktion öffentlich.

Wenn Sie Ihre Funktions-URL mit Authentifizierungstyp NONE löschen, löscht Lambda außerdem nicht automatisch die zugehörige ressourcenbasierte Richtlinie. Wenn Sie diese Richtlinie löschen möchten, müssen Sie dies manuell tun.

In dieser Anweisung ist der lambda:FunctionUrlAuthType-Bedingungsschlüsselwert NONE. Diese Richtlinienanweisung erlaubt den Zugriff nur, wenn der Auth-Typ Ihrer Funktions-URL ebenfalls NONE ist.

Wenn die ressourcenbasierte Richtlinie einer Funktion lambda:invokeFunctionUrl-Berechtigungen nicht gewährt, dann erhalten Benutzer einen 403-Forbidden-Fehlercode beim Versuch, Ihre Funktions-URL aufzurufen, auch wenn die Funktions-URL den Authentifizierungstyp NONE verwendet.

Governance und Zugriffskontrolle

Zusätzlich zu den Berechtigungen für den URL-Aufruf von Funktionen können Sie auch den Zugriff auf Aktionen kontrollieren, die zum Konfigurieren von Funktions-URLs verwendet werden. Lambda unterstützt die folgenden IAM-Richtlinienaktionen für Funktions-URLs:

  • lambda:InvokeFunctionUrl – Ruft eine Lambda-Funktion mit der Funktions-URL auf.

  • lambda:CreateFunctionUrlConfig – Erstellt eine Funktions-URL und legt ihren AuthType fest.

  • lambda:UpdateFunctionUrlConfig – Aktualisiert eine Funktions-URL-Konfiguration und ihren AuthType.

  • lambda:GetFunctionUrlConfig – Zeigt die Details einer Funktions-URL an.

  • lambda:ListFunctionUrlConfigs – Listet die Funktions-URL-Konfigurationen auf.

  • lambda:DeleteFunctionUrlConfig – Löscht eine Funktions-URL.

Anmerkung

Die Lambda-Konsole unterstützt das Hinzufügen von Berechtigungen nur für lambda:InvokeFunctionUrl. Für alle anderen Aktionen müssen Sie Berechtigungen mit der Lambda-API oder AWS CLI hinzufügen.

Um Funktions-URL-Zugriff auf andere AWS-Entitäten zu erlauben oder zu verweigern, schließen Sie diese Aktionen in IAM-Richtlinien ein. Mit der folgenden Richtlinie gewähren Sie beispielsweise der example-Rolle in AWS-Konto 444455556666-Berechtigungen, die Funktions-URL für die Funktion my-function im Konto 123456789012 zu aktualisieren.

Beispiel Kontoübergreifende Funktions-URL-Richtlinie
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:UpdateFunctionUrlConfig", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Bedingungsschlüssel

Verwenden Sie einen Bedingungsschlüssel, um eine feinabgestimmte Zugriffskontrolle über Ihre Funktions-URLs zu erhalten. Lambda unterstützt einen zusätzlichen Bedingungsschlüssel für Funktions-URLs: FunctionUrlAuthType. Der Schlüssel FunctionUrlAuthType definiert einen Aufzählungswert, der den Authentifizierungstyp beschreibt, den Ihre Funktions-URL verwendet. Der Wert kann entweder AWS_IAM oder NONE sein.

Sie können diesen Bedingungsschlüssel in Richtlinien verwenden, die mit Ihrer Funktion verknüpft sind. Sie können beispielsweise einschränken, wer Konfigurationsänderungen an Ihren Funktions-URLs vornehmen kann. Um alle UpdateFunctionUrlConfig-Anfragen an jede Funktion mit dem URL-Auth-Typ NONE zu verweigern, können Sie die folgende Richtlinie definieren:

Beispiel Funktions-URL-Richtlinie mit expliziter Zugriffsverweigerung
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action":[ "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }

um der example-Rolle in AWS-Konto 444455556666 Berechtigungen zu gewähren, CreateFunctionUrlConfig- und UpdateFunctionUrlConfig-Anfragen für Funktionen mit dem URL-Auth-Typ AWS_IAM zu stellen, können Sie die folgende Richtlinie definieren:

Beispiel Funktions-URL-Richtlinie mit expliziter Zulassung
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

Sie können diesen Bedingungsschlüssel auch in einer Service-Kontrollrichtlinie (SCP) verwenden. Verwenden Sie SCPs, um Berechtigungen in einer gesamten Organisation in AWS Organizations zu verwalten. Zum Beispiel, um Benutzern das Erstellen oder Aktualisieren von Funktions-URLs zu verweigern, die etwas anderes als den Auth-Typ AWS_IAM verwenden, verwenden Sie die folgende Service-Kontrollrichtlinie:

Beispiel Funktions-URL-SCP mit expliziter Zugriffsverweigerung
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:*:123456789012:function:*", "Condition": { "StringNotEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }