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.
Beschränken Sie den Zugriff auf den URL-Ursprung einer AWS Lambda Funktion
CloudFront bietet Origin Access Control (OAC), um den Zugriff auf den URL-Ursprung einer Lambda-Funktion einzuschränken.
Erstellen Sie ein neues OAC
Führen Sie die in den folgenden Themen beschriebenen Schritte aus, um ein neues OAC in einzurichten. CloudFront
Anmerkung
Wenn Sie mit Ihrer Lambda-Funktions-URL POST
Methoden verwendenPUT
, müssen Ihre Benutzer den Payload-Hashwert in den x-amz-content-sha256
Header aufnehmen, wenn sie die Anfrage an senden. CloudFront Lambda unterstützt keine unsignierten Payloads.
Themen
Voraussetzungen
Bevor Sie OAC erstellen und einrichten, benötigen Sie eine CloudFront Distribution mit einer Lambda-Funktions-URL als Ursprung. Weitere Informationen finden Sie unter Verwenden Sie eine Lambda-Funktion URL.
Erteilen Sie dem OAC die Erlaubnis, auf die URL der Lambda-Funktion zuzugreifen
Bevor Sie ein OAC erstellen oder es in einer CloudFront Distribution einrichten, stellen Sie sicher, dass das OAC berechtigt ist, auf die URL der Lambda-Funktion zuzugreifen. Tun Sie dies, nachdem Sie eine CloudFront Distribution erstellt haben, aber bevor Sie das OAC zur Lambda-Funktions-URL in der Verteilungskonfiguration hinzufügen.
Anmerkung
Um die IAM-Richtlinie für die Lambda-Funktions-URL zu aktualisieren, müssen Sie die AWS Command Line Interface ()AWS CLI verwenden. Die Bearbeitung der IAM-Richtlinie in der Lambda-Konsole wird derzeit nicht unterstützt.
Der folgende AWS CLI Befehl gewährt dem CloudFront Service Principal (cloudfront.amazonaws.com
) Zugriff auf Ihre Lambda-Funktions-URL. Das Condition
Element in der Richtlinie ermöglicht den CloudFront Zugriff auf Lambda nur, wenn die Anfrage im Namen der CloudFront Distribution erfolgt, die die URL der Lambda-Funktion enthält.
Beispiel : AWS CLI Befehl zum Aktualisieren einer Richtlinie, um den schreibgeschützten Zugriff auf ein OAC zu ermöglichen CloudFront
Der folgende AWS CLI Befehl ermöglicht der CloudFront Distribution (
) den Zugriff auf Ihr Lambda E1PDK09ESKHJWT
.FUNCTION_URL_NAME
aws lambda add-permission \ --statement-id "AllowCloudFrontServicePrincipal" \ --action "lambda:InvokeFunctionUrl" \ --principal "cloudfront.amazonaws.com" \ --source-arn "arn:aws:cloudfront::
123456789012
:distribution/E1PDK09ESKHJWT
" \ --function-nameFUNCTION_URL_NAME
Anmerkung
Wenn Sie eine Distribution erstellen und diese keine Berechtigung für Ihre Lambda-Funktions-URL hat, können Sie in der CloudFront Konsole den Befehl CLI kopieren auswählen und diesen Befehl dann über Ihr Befehlszeilenterminal eingeben. Weitere Informationen finden Sie AWS-Services im AWS Lambda Entwicklerhandbuch unter Gewähren von Funktionszugriff auf.
Erstellen Sie das OAC
Um ein OAC zu erstellen, können Sie die AWS Management Console, AWS CloudFormation AWS CLI, oder die CloudFront API verwenden.
Erweiterte Einstellungen für die Ursprungszugriffssteuerung
Die CloudFront OAC-Funktion umfasst erweiterte Einstellungen, die nur für bestimmte Anwendungsfälle vorgesehen sind. Verwenden Sie die empfohlenen Einstellungen, sofern Sie die erweiterten Einstellungen nicht speziell benötigen.
OAC enthält eine Einstellung mit dem Namen Signaturverhalten (in der Konsole) oder SigningBehavior
(in der API, CLI und AWS CloudFormation). Diese Einstellung bietet die folgenden Optionen:
- Ursprungsanforderungen immer signieren (empfohlene Einstellung)
-
Wir empfehlen die Verwendung dieser Einstellung mit der Bezeichnung Sign requests (recommended) (Anforderungen signieren (empfohlen)) in der Konsole bzw.
always
in der API, CLI und AWS CloudFormation. Mit dieser Einstellung signiert es CloudFront immer alle Anfragen, die es an die URL der Lambda-Funktion sendet. - Ursprungsanforderungen nie signieren
-
Diese Einstellung heißt Do not sign requests (Anforderungen nicht signieren) in der Konsole bzw.
never
in der API, CLI und AWS CloudFormation. Verwenden Sie diese Einstellung, um OAC für alle Ursprünge in allen Distributionen zu deaktivieren, die dieses OAC verwenden. Dies kann Zeit und Mühe sparen, verglichen mit dem Entfernen eines OAC nacheinander aus allen Origins und Distributionen, die es verwenden. Signiert mit dieser Einstellung CloudFront keine Anfragen, die an die URL der Lambda-Funktion gesendet werden.Warnung
Um diese Einstellung verwenden zu können, muss die URL der Lambda-Funktion öffentlich zugänglich sein. Wenn Sie diese Einstellung mit einer Lambda-Funktions-URL verwenden, die nicht öffentlich zugänglich ist, CloudFront können Sie nicht auf den Ursprung zugreifen. Die URL der Lambda-Funktion gibt Fehler zurück CloudFront und CloudFront leitet diese Fehler an die Betrachter weiter. Weitere Informationen finden Sie unter Sicherheits- und Authentifizierungsmodell für Lambda-Funktions-URLs im AWS Lambda Benutzerhandbuch.
- Viewer (Client)-
Authorization
-Header nicht überschreiben -
Diese Einstellung heißt Do not override authorization header (Autorisierungsheader nicht überschreiben) in der Konsole bzw.
no-override
in der API, CLI und AWS CloudFormation. Verwenden Sie diese Einstellung, wenn Sie ursprüngliche Anfragen nur signieren CloudFront möchten, wenn die entsprechende Viewer-Anfrage keinen Header enthält.Authorization
Mit dieser Einstellung wird derAuthorization
Header der Viewer-Anfrage weitergegeben, CloudFront wenn eine vorhanden ist, signiert aber die ursprüngliche Anfrage (fügt einen eigenenAuthorization
Header hinzu), wenn die Viewer-Anfrage keinenAuthorization
Header enthält.Warnung
-
Wenn Sie diese Einstellung verwenden, müssen Sie die Signature Version 4-Signatur für die Lambda-Funktions-URL anstelle des Namens oder des CNAME Ihrer CloudFront Distribution angeben. Wenn der
Authorization
Header von der Viewer-Anfrage an die URL der Lambda-Funktion weitergeleitet wird, validiert Lambda die Signatur anhand des Hosts der CloudFront Lambda-URL-Domain. Wenn die Signatur nicht auf der Lambda-URL-Domain basiert, stimmt der Host in der Signatur nicht mit dem Host überein, der vom Lambda-URL-Ursprung verwendet wird. Das bedeutet, dass die Anfrage fehlschlagen wird, was zu einem Fehler bei der Signaturvalidierung führt.
-
Um den
Authorization
Header aus der Viewer-Anfrage weiterzugeben, müssen Sie denAuthorization
Header zu einer Cache-Richtlinie für alle Cache-Verhaltensweisen hinzufügen, die Lambda-Funktions-URLs verwenden, die mit dieser ursprünglichen Zugriffskontrolle verknüpft sind.
-