Steuern Sie den Zugriff auf die Lambda-Funktion 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.

Steuern Sie den Zugriff auf die Lambda-Funktion URLs

Anmerkung

Ab Oktober 2025 sind für neue Funktionen URLs sowohl Genehmigungen als auch lambda:InvokeFunctionUrl lambda:InvokeFunction Genehmigungen erforderlich.

Sie können den Zugriff auf Ihre Lambda-Funktion URLs mithilfe des AuthTypeParameters in Kombination mit ressourcenbasierten Richtlinien steuern, 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 auf der Grundlage 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.

  • 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.

Für zusätzliche Einblicke in die Sicherheit können Sie eine umfassende Analyse des externen Zugriffs auf Ihre Funktions-URL verwenden AWS Identity and Access Management Access Analyzer . 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. Sie können IAM Access Analyzer kostenlos verwenden. 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 AddPermissionAPI-Vorgangs oder der Lambda-Konsole erstellt werden. Informationen darüber, wie Sie Ihre Funktions-URL aufrufen können, nachdem Sie die Berechtigungen eingerichtet haben, finden Sie unter. Lambda-Funktion aufrufen URLs

Verwenden des Auth-Typs AWS_IAM

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

Wenn sich der Hauptbenutzer, der die Anfrage stellt, in derselben URL befindet AWS-Konto wie die Funktions-URL, muss der Prinzipal entweder über lambda:InvokeFunctionUrl lambda:InvokeFunction Berechtigungen in seiner identitätsbasierten Richtlinie verfügen oder ihm in der ressourcenbasierten Richtlinie der Funktion Berechtigungen erteilt worden sein. Mit anderen Worten, eine ressourcenbasierte Richtlinie ist optional, wenn der Benutzer bereits über Berechtigungen in seiner identitätsbasierten Richtlinie verfügtlambda:InvokeFunctionUrl. lambda:InvokeFunction Die Bewertung von Richtlinien folgt den Regeln, die in der Bewertungslogik für Richtlinien dargelegt sind.

Wenn sich der Hauptbenutzer, der die Anfrage stellt, in einem anderen Konto befindet, muss der Prinzipal sowohl über eine identitätsbasierte Richtlinie verfügen, die ihm diese Rechte einräumt, als auch lambda:InvokeFunction über Berechtigungen lambda:InvokeFunctionUrl und Berechtigungen, die ihm in einer ressourcenbasierten Richtlinie für die Funktion, die er aufrufen möchte, gewährt werden. Die Richtlinienbewertung folgt den Regeln, die unter Feststellen, ob eine kontoübergreifende Anfrage zulässig ist, beschrieben sind.

Die folgende ressourcenbasierte Richtlinie ermöglicht es der example Rolle in, die der Funktion AWS-Konto 444455556666 zugeordnete Funktions-URL aufzurufen. my-function Der Schlüssel lambda: InvokedViaFunctionUrl context beschränkt die lambda:InvokeFunction Aktion auf URL-Aufrufe von Funktionen. Das bedeutet, dass der Prinzipal die Funktions-URL verwenden muss, um die Funktion aufzurufen. Wenn Sie dies nicht angebenlambda:InvokedViaFunctionUrl, kann der Principal Ihre Funktion zusätzlich zur Funktions-URL auch über andere Aufrufmethoden aufrufen.

Beispiel — Kontoübergreifende, ressourcenbasierte Richtlinie
JSON
{ "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" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "Bool": { "lambda:InvokedViaFunctionUrl": "true" } } } ] }

Sie können diese ressourcenbasierte Richtlinie mithilfe der Konsole mithilfe der folgenden Schritte erstellen:

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 als Authentifizierungstyp die Option. AWS_IAM

  7. Geben Sie eine Kontoauszugsnummer für Ihre Versicherungserklärung ein.

  8. Geben Sie für Principal die Konto-ID oder den Amazon-Ressourcennamen (ARN) des Benutzers oder der Rolle ein, dem Sie Berechtigungen erteilen möchten. Beispiel: 444455556666.

  9. Wählen Sie Speichern.

Alternativ können Sie diese Richtlinie mit den folgenden add-permission AWS Command Line Interface (AWS CLI) -Befehlen erstellen. Wenn Sie die verwenden AWS CLI, müssen Sie die lambda:InvokeFunction Anweisungen lambda:InvokeFunctionUrl und separat hinzufügen. Zum Beispiel:

aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeURL \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeFunction \ --action lambda:InvokeFunction \ --principal 444455556666 \ --invoked-via-function-url

Verwenden des Authentifizierungstyps NONE

Wichtig

Wenn Ihr Funktions-URL-Authentifizierungstyp ist NONE und Sie über eine ressourcenbasierte Richtlinie verfügen, die öffentlichen Zugriff gewährt, kann jeder nicht authentifizierte Benutzer mit Ihrer Funktions-URL Ihre Funktion aufrufen.

In einigen Fällen möchten Sie vielleicht, 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. Ihre Funktion muss jedoch über eine ressourcenbasierte Richtlinie verfügen, die und zulässtlambda:InvokeFunctionUrl. lambda:InvokeFunction Wenn Sie NONE mithilfe der Konsole oder AWS Serverless Application Model (AWS SAM) eine Funktions-URL mit dem Authentifizierungstyp erstellen, erstellt Lambda automatisch die ressourcenbasierte Richtlinie für Sie. Wenn Sie die AWS CLI AWS CloudFormation, oder die Lambda-API direkt verwenden, müssen Sie die Richtlinie selbst hinzufügen.

Wir empfehlen, dass Sie den InvokedViaFunctionUrl Kontextschlüssel lambda: in Ihre ressourcenbasierten Richtlinien aufnehmen, wenn Sie den Authentifizierungstyp verwenden. NONE Dieser Kontextschlüssel stellt sicher, dass die Funktion nur über die Funktions-URL und nicht über andere Aufrufmethoden aufgerufen werden kann.

Beachten Sie Folgendes zu dieser Richtlinie:

  • Alle Entitäten können lambda:InvokeFunctionUrl und aufrufenlambda:InvokeFunction. Das bedeutet, dass jeder, der Ihre Funktions-URL hat, Ihre Funktion aufrufen kann.

  • Der Wert des lambda:FunctionUrlAuthType Bedingungsschlüssels istNONE. Das bedeutet, dass die Richtlinienanweisung den Zugriff nur zulässt, wenn der Authentifizierungstyp Ihrer Funktions-URL ebenfalls NONE lautet.

  • Die lambda:InvokedViaFunctionUrl Bedingung stellt sicher, dass die Funktion nur über die Funktions-URL und nicht über andere Aufrufmethoden aufgerufen werden kann.

Beispiel — Ressourcenbasierte Standardrichtlinie für den Authentifizierungstyp NONE
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "FunctionURLAllowPublicAccess", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } }, { "Sid": "FunctionURLInvokeAllowPublicAccess", "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "Bool": { "lambda:InvokedViaFunctionUrl": "true" } } } ] }
Erstellen Sie die ressourcenbasierte Richtlinie mit dem AWS CLI

Sofern Sie nicht die Konsole verwenden oder AWS SAM eine Funktions-URL mit Authentifizierungstyp erstellenNONE, müssen Sie die ressourcenbasierte Richtlinie selbst hinzufügen. Verwenden Sie die folgenden Befehle, um Anweisungen für die lambda:InvokeFunctionUrl Berechtigungen und zu erstellen. lambda:InvokeFunction Jede Anweisung muss in einem separaten Befehl hinzugefügt werden.

aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeURL \ --action lambda:InvokeFunctionUrl \ --principal * \ --function-url-auth-type NONE
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeFunction \ --action lambda:InvokeFunction \ --principal * \ --invoked-via-function-url
Anmerkung

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

Wenn die ressourcenbasierte Richtlinie einer Funktion keine lambda:InvokeFunction Berechtigungen gewährtlambda:invokeFunctionUrl, erhalten Benutzer den Fehlercode 403 Forbidden, wenn sie versuchen, Ihre Funktions-URL aufzurufen. Dieser Fehler tritt auch dann auf, wenn die Funktions-URL den Authentifizierungstyp verwendet. NONE

Governance und Zugriffskontrolle

Neben den Zugriffsberechtigungen für den Aufruf von Funktions-URLs können Sie auch den Zugriff auf Aktionen steuern, die zur Konfiguration der Funktion verwendet werden. URLs Lambda unterstützt die folgenden IAM-Richtlinienaktionen für die Funktion: 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.

Um anderen AWS Entitäten den Zugriff auf Funktions-URLs zu gewähren oder zu verweigern, nehmen Sie diese Aktionen in die IAM-Richtlinien auf. Die folgende Richtlinie gewährt der example Rolle in beispielsweise AWS-Konto 444455556666 Berechtigungen zur Aktualisierung der Funktions-URL für die Funktion my-function im Konto123456789012.

Beispiel Kontoübergreifende Funktions-URL-Richtlinie
JSON
{ "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 Bedingungskontexttasten URLs, um eine detaillierte Zugriffskontrolle für Ihre Funktion zu erhalten. Lambda unterstützt die folgenden Kontexttasten für Funktionen URLs:

  • lambda:FunctionUrlAuthType— Definiert einen Aufzählungswert, der den Authentifizierungstyp beschreibt, den Ihre Funktions-URL verwendet. Der Wert kann entweder AWS_IAM oder NONE sein.

  • lambda:InvokedViaFunctionUrl— Beschränkt die lambda:InvokeFunction Aktion auf Aufrufe, die über die Funktions-URL getätigt werden. Dadurch wird sichergestellt, dass die Funktion nur über die Funktions-URL und nicht über andere Aufrufmethoden aufgerufen werden kann. Beispiele für ressourcenbasierte Richtlinien, die den lambda:InvokedViaFunctionUrl Kontextschlüssel verwenden, finden Sie in den Beispielen unter und. Verwenden des Auth-Typs AWS_IAM Verwenden des Authentifizierungstyps NONE

Sie können diese Kontextschlüssel in Richtlinien verwenden, die mit Ihrer Funktion verknüpft sind. Beispielsweise möchten Sie möglicherweise einschränken, wer Konfigurationsänderungen an Ihrer Funktion vornehmen kann URLs. 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
JSON
{ "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 AWS-Konto 444455556666 Berechtigungen zum Erstellen CreateFunctionUrlConfig und UpdateFunctionUrlConfig Anfordern von Funktionen mit URL-Authentifizierungstyp zu gewährenAWS_IAM, können Sie die folgende Richtlinie definieren:

Beispiel Funktions-URL-Richtlinie mit expliziter Zulassung
JSON
{ "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. Wird verwendet SCPs , um Berechtigungen für eine gesamte Organisation in AWS Organizations zu verwalten. Verwenden Sie beispielsweise die folgende Dienststeuerungsrichtlinie, um Benutzern URLs das Erstellen oder Aktualisieren von Funktionen zu verbieten, die AWS_IAM etwas anderes als den Authentifizierungstyp verwenden:

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