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 einen Amazon Simple Storage Service-Ursprung
CloudFront bietet zwei Möglichkeiten, authentifizierte Anfragen an einen Amazon S3 S3-Ursprung zu senden: Origin Access Control (OAC) und Origin Access Identity (OAI). OAC hilft Ihnen, Ihre Ursprünge zu sichern, z. B. für Amazon S3. Wir empfehlen die Verwendung von OAC, da auf diese Weise Folgendes unterstützt wird:
-
Alle Amazon S3 S3-Buckets insgesamt AWS-Regionen, einschließlich der Opt-in-Regionen, die nach Dezember 2022 eingeführt wurden
-
Serverseitige Verschlüsselung mit AWS KMS (SSE-KMS) von Amazon S3
-
Dynamische Anforderungen (
PUT
undDELETE
) an Amazon S3
OAI (Ursprungszugriffsidentität) funktioniert in den oben aufgeführten Szenarien nicht oder erfordert in diesen Szenarien zusätzliche Problemumgehungen. In den folgenden Verfahren wird die Verwendung von OAC (Ursprungszugriffskontrolle) mit einem Amazon-S3-Ursprung beschrieben. Informationen zur Migration von OAI (Ursprungszugriffsidentität) zu OAC (Ursprungszugriffskontrolle) finden Sie unter Migration von der Ursprungszugriffsidentität (OAI) zur Ursprungszugriffssteuerung (OAC).
Hinweise
-
Wenn Sie CloudFront OAC mit Amazon S3-Bucket-Ursprüngen verwenden, müssen Sie Amazon S3 Object Ownership auf Bucket owner enforced setzen, die Standardeinstellung für neue Amazon S3 S3-Buckets. Wenn Sie ACLs benötigen, verwenden Sie die bevorzugte Einstellung des Bucket-Besitzers, um die Kontrolle über Objekte zu behalten, die über hochgeladen werden. CloudFront
-
Wenn Ihr Ursprung ein Amazon S3 S3-Bucket ist, der als Website-Endpunkt konfiguriert ist, müssen Sie ihn CloudFront als benutzerdefinierten Ursprung einrichten. Das bedeutet, dass Sie OAC (oder OAI) nicht verwenden können. OAC unterstützt keine Origin-Umleitung mithilfe von Lambda @Edge.
Topics
Erstellen Sie eine neue Origin-Zugriffskontrolle
Führen Sie die in den folgenden Themen beschriebenen Schritte aus, um eine neue Origin-Zugriffskontrolle in einzurichten CloudFront.
Themen
Voraussetzungen
Bevor Sie Origin Access Control (OAC) erstellen und einrichten, benötigen Sie eine CloudFront Distribution mit einem Amazon S3 S3-Bucket-Ursprung. Dieser Ursprung muss ein regulärer S3-Bucket sein, kein Bucket, der als Website-Endpunkt konfiguriert wurde. Weitere Informationen zum Einrichten einer CloudFront Distribution mit einem S3-Bucket-Ursprung finden Sie unterBeginnen Sie mit einer CloudFront Basisdistribution.
Anmerkung
Wenn Sie OAC verwenden, um Ihren S3-Bucket-Ursprung zu sichern, erfolgt die Kommunikation zwischen Amazon S3 CloudFront und Amazon S3 immer über HTTPS, unabhängig von Ihren spezifischen Einstellungen.
Erteilen Sie dem Absender die Zugriffsberechtigung für den Zugriff auf den S3-Bucket
Bevor Sie eine Origin-Zugriffskontrolle (OAC) erstellen oder sie in einer CloudFront Distribution einrichten, stellen Sie sicher, dass das OAC über die Berechtigung verfügt, auf den S3-Bucket-Ursprung zuzugreifen. Tun Sie dies, nachdem Sie eine CloudFront Distribution erstellt haben, aber bevor Sie das OAC zum S3-Ursprung in der Distributionskonfiguration hinzufügen.
Um dem OAC die Erlaubnis für den Zugriff auf den S3-Bucket zu erteilen, verwenden Sie eine S3-Bucket-Richtlinie, um dem CloudFront Service Principal (cloudfront.amazonaws.com
) den Zugriff auf den Bucket zu ermöglichen. Verwenden Sie ein Condition
Element in der Richtlinie, um nur dann Zugriff auf den Bucket CloudFront zu gewähren, wenn die Anfrage im Namen der CloudFront Distribution erfolgt, die den S3-Ursprung enthält.
Informationen zum Hinzufügen oder Ändern einer Bucket-Richtlinie finden Sie unter Hinzufügen einer Bucket-Richtlinie mit der Amazon-S3-Konsole im Amazon-S3-Benutzerhandbuch.
Im Folgenden finden Sie Beispiele für S3-Bucket-Richtlinien, die es einem CloudFront OAC ermöglichen, auf einen S3-Ursprung zuzugreifen.
Beispiel S3-Bucket-Richtlinie, die den schreibgeschützten Zugriff auf ein OAC ermöglicht CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
Beispiel S3-Bucket-Richtlinie, die Lese- und Schreibzugriff auf ein OAC ermöglicht CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
SSE-KMS
Wenn die Objekte im S3-Bucket-Ursprung mit serverseitiger Verschlüsselung mit AWS Key Management Service (SSE-KMS) verschlüsselt sind, müssen Sie sicherstellen, dass das OAC über die Berechtigung zur Verwendung des Schlüssels verfügt. AWS KMS Um der OAC die Berechtigung zur Verwendung des KMS-Schlüssels zu erteilen, fügen Sie der KMS-Schlüsselrichtlinie eine Anweisung hinzu. Weitere Informationen zum Ändern einer Schlüsselrichtlinie finden Sie unter Ändern einer Schlüsselrichtlinie im AWS Key Management Service -Entwicklerhandbuch.
Das folgende Beispiel zeigt eine KMS-Schlüsselrichtlinienanweisung, die es der OAC ermöglicht, den KMS-Schlüssel zu verwenden.
Beispiel KMS-Schlüsselrichtlinienerklärung, die es einem CloudFront OAC ermöglicht, auf einen KMS-Schlüssel für SSE-KMS zuzugreifen
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": [ "cloudfront.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::
111122223333
:distribution/<CloudFront distribution ID>
" } } }
Erstellen Sie die Origin-Zugriffskontrolle
Um eine Origin-Zugriffskontrolle (OAC) zu erstellen, können Sie die AWS Management Console, AWS CloudFormation AWS CLI, oder die CloudFront API verwenden.
Löschen Sie eine Distribution, bei der ein OAC an einen S3-Bucket angehängt ist
Wenn Sie eine Distribution löschen müssen, deren OAC an einen S3-Bucket angehängt ist, sollten Sie die Distribution löschen, bevor Sie den S3-Bucket-Ursprung löschen. Sie können auch die Region in den Namen der Ursprungs-Domain aufnehmen. Wenn dies nicht möglich ist, können Sie das OAC aus der Distribution entfernen, indem Sie vor dem Löschen auf „Öffentlich“ wechseln. Weitere Informationen finden Sie unter Löschen einer -Verteilung.
Migration von der Ursprungszugriffsidentität (OAI) zur Ursprungszugriffssteuerung (OAC)
Um von einer Legacy-Ursprungszugriffsidentität (OAI) zu einer Ursprungszugriffssteuerung (Origin Access Control, OAC) zu migrieren, aktualisieren Sie zunächst den S3-Bucket-Ursprung, damit sowohl die OAI als auch die OAC auf den Inhalt des Buckets zugreifen können. Dadurch wird sichergestellt, dass während des Übergangs CloudFront nie der Zugriff auf den Bucket verloren geht. Um sowohl OAI als auch OAC den Zugriff auf einen S3-Bucket zu ermöglichen, aktualisieren Sie die Bucket-Richtlinie und nehmen Sie zwei Anweisungen auf, eine für jede Art von Prinzipal.
Die folgende Beispiel-S3-Bucket-Richtlinie ermöglicht sowohl einer OAI als auch einer OAC den Zugriff auf einen S3-Ursprung.
Beispiel S3-Bucket-Richtlinie, die schreibgeschützten Zugriff für eine OAI und eine OAC zulässt
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Nachdem Sie die Bucket-Richtlinie des S3-Ursprungs aktualisiert haben, um den Zugriff sowohl für OAI als auch für OAC zu ermöglichen, können Sie die Verteilungskonfiguration so aktualisieren, dass OAC anstelle von OAI verwendet wird. Weitere Informationen finden Sie unter Erstellen Sie eine neue Origin-Zugriffskontrolle.
Nachdem die Verteilung vollständig bereitgestellt wurde, können Sie die Anweisung in der Bucket-Richtlinie, die den Zugriff für die OAI ermöglicht, entfernen. Weitere Informationen finden Sie unter Erteilen Sie dem Absender die Zugriffsberechtigung für den Zugriff auf den S3-Bucket.
Erweiterte Einstellungen für die Ursprungszugriffssteuerung
Die CloudFront Origin-Zugriffskontrollfunktion 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.
Die Origin-Zugriffskontrolle enthält eine Einstellung namens 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 den S3-Bucket-Ursprung 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 die Ursprungszugriffssteuerung für alle Ursprünge in allen Verteilungen zu deaktivieren, die diese Ursprungszugriffssteuerung verwenden. Auf diese Weise lässt sich im Vergleich zum einzelnen Entfernen einer Ursprungszugriffssteuerung aus allen Ursprüngen und Verteilungen, die diese verwenden, Zeit und Aufwand sparen. Mit dieser Einstellung signiert es CloudFront keine Anfragen, die es an den S3-Bucket-Ursprung sendet.Warnung
Um diese Einstellung verwenden zu können, muss der S3-Bucket-Ursprung öffentlich zugänglich sein. Wenn Sie diese Einstellung mit einem S3-Bucket-Ursprung verwenden, der nicht öffentlich zugänglich ist, CloudFront können Sie nicht auf den Ursprung zugreifen. Der S3-Bucket-Ursprung gibt Fehler zurück CloudFront und CloudFront leitet diese Fehler an die Zuschauer weiter.
- 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 keinenAuthorization
Header enthält. 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
Um den
Authorization
-Header aus der Viewer-Anforderung zu übergeben, müssen Sie denAuthorization
-Header zu einer Cache-Richtlinie für alle Cache-Verhaltensweisen hinzufügen, die S3-Bucket-Ursprünge verwenden, die dieser Ursprungszugriffssteuerung zugeordnet sind.
Verwenden Sie eine ursprüngliche Zugriffsidentität (veraltet, nicht empfohlen)
CloudFront Origin Access Identity (OAI) bietet ähnliche Funktionen wie Origin Access Control (OAC), funktioniert aber nicht für alle Szenarien. Aus diesem Grund empfehlen wir stattdessen die Verwendung von OAC. Insbesondere unterstützt OAI Folgendes nicht:
-
Amazon S3 S3-Buckets in allen Regionen AWS-Regionen, einschließlich optionaler Regionen
-
Serverseitige Verschlüsselung mit AWS KMS (SSE-KMS) von Amazon S3
-
Dynamische Anforderungen (
PUT
,POST
oderDELETE
) an Amazon S3 -
Nach Dezember 2022 neu AWS-Regionen auf den Markt gebracht
Informationen zur Migration von OAI zu OAC finden Sie unter Migration von der Ursprungszugriffsidentität (OAI) zur Ursprungszugriffssteuerung (OAC).
Wenn Sie mit der CloudFront Konsole eine OAI erstellen oder einer Distribution hinzufügen, können Sie die Amazon S3 S3-Bucket-Richtlinie automatisch aktualisieren, um der OAI Zugriff auf Ihren Bucket zu gewähren. Alternativ können Sie die Bucket-Richtlinie manuell erstellen oder aktualisieren. Unabhängig davon, welche Methode Sie verwenden, sollten Sie die Berechtigungen dennoch überprüfen, um Folgendes sicherzustellen:
-
Ihre CloudFront OAI kann im Namen von Zuschauern, die sie anfordern, auf Dateien im Bucket zugreifen. CloudFront
-
Zuschauer können Amazon S3 S3-URLs nicht verwenden, um auf Ihre Dateien außerhalb von zuzugreifen CloudFront.
Wichtig
Wenn Sie so konfigurieren CloudFront , dass alle CloudFront unterstützten HTTP-Methoden akzeptiert und weitergeleitet werden, stellen Sie sicher, dass Sie Ihrer CloudFront OAI die gewünschten Berechtigungen erteilen. Wenn Sie beispielsweise so konfigurieren CloudFront , dass Anfragen, die diese DELETE
Methode verwenden, angenommen und weitergeleitet werden, konfigurieren Sie Ihre Bucket-Richtlinie so, dass DELETE
Anfragen entsprechend behandelt werden, sodass Zuschauer nur Dateien löschen können, die Sie möchten.
Verwenden Sie Amazon S3 S3-Bucket-Richtlinien
Sie können einer CloudFront OAI Zugriff auf Dateien in einem Amazon S3 S3-Bucket gewähren, indem Sie die Bucket-Richtlinie auf folgende Weise erstellen oder aktualisieren:
-
Verwenden des Tabs Permissions (Berechtigungen) des Amazon-S3-Buckets in der Amazon-S3-Konsole
. -
Verwendung PutBucketPolicyin der Amazon S3 S3-API.
-
Verwenden der CloudFront-Konsole
Wenn Sie Ihren Origin-Einstellungen in der CloudFront Konsole eine OAI hinzufügen, können Sie Ja, die Bucket-Richtlinie aktualisieren wählen, CloudFront um mitzuteilen, dass die Bucket-Richtlinie in Ihrem Namen aktualisiert werden soll.
Wenn Sie die Bucket-Richtlinie manuell aktualisieren, stellen Sie Folgendes sicher:
-
Geben Sie die korrekte OAI als das
Principal
in der Richtlinie an. -
Erteilen Sie der OAI die Berechtigungen, die es für den Zugriff auf Objekte im Auftrag von Viewern benötigt.
Weitere Informationen finden Sie in den folgenden Abschnitten.
Eine OAI als den Principal
in einer Bucket-Richtlinie angeben
Um eine OAI als Principal
in einer Amazon-S3-Bucket-Richtlinie anzugeben, verwenden Sie den Amazon-Ressourcennamen (ARN) der OAI, der die ID der OAI enthält. Beispielsweise:
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }
Finde die OAI-ID in der CloudFront Konsole unter Sicherheit, Origin-Zugriff, Identitäten (veraltet). Alternativ können Sie sie ListCloudFrontOriginAccessIdentitiesin der CloudFront API verwenden.
Erteilen von Berechtigungen für eine OAI
Um der OAI die Berechtigungen für den Zugriff auf Objekte in Ihrem Amazon-S3-Bucket zu erteilen, verwenden Sie Aktionen in der Richtlinie, die sich auf bestimmte Amazon-S3-API-Operationen beziehen. Die s3:GetObject
-Aktion ermöglicht es der OAI beispielsweise, Objekte im Bucket zu lesen. Weitere Informationen finden Sie in den Beispielen im folgenden Abschnitt oder unter Amazon S3-Aktionen im Benutzerhandbuch zu Amazon Simple Storage Service.
Beispiele für Amazon-S3-Bucket-Richtlinien
Die folgenden Beispiele zeigen Amazon S3 S3-Bucket-Richtlinien, die es CloudFront OAI ermöglichen, auf einen S3-Bucket zuzugreifen.
Suchen Sie die OAI-ID in der CloudFront Konsole unter Sicherheit, Origin-Zugriff, Identitäten (veraltet). Alternativ können Sie sie ListCloudFrontOriginAccessIdentitiesin der CloudFront API verwenden.
Beispiel Amazon-S3-Bucket-Richtlinie, die der OAI Lesezugriff gewährt
Im folgenden Beispiel kann die OAI Objekte im angegebenen Bucket (s3:GetObject
) lesen.
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Beispiel Amazon-S3-Bucket-Richtlinie, die der OAI Lese- und Schreibzugriff gewährt
Im folgenden Beispiel kann die OAI Objekte im angegebenen Bucket (s3:GetObject
und s3:PutObject
) lesen und schreiben. Auf diese Weise können Zuschauer Dateien in Ihren Amazon S3 S3-Bucket hochladen CloudFront.
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Verwenden Sie Amazon S3 S3-Objekt-ACLs (nicht empfohlen)
Wichtig
Es wird empfohlen, Amazon-S3-Bucket-Richtlinien zu verwenden, um einer OAI Zugriff auf einen S3-Bucket zu gewähren. Sie können Access Control Lists (ACLs, Zugriffssteuerungslisten) wie in diesem Abschnitt beschrieben verwenden, dies wird jedoch nicht empfohlen.
Amazon S3 empfiehlt die Einstellung von S3 Object Ownership (S3-Objekteigentümerschaft) auf bucket owner enforced (Bucket-Eigentümer erzwungen), was bedeutet, dass ACLs für den Bucket und die darin enthaltenen Objekte deaktiviert sind. Wenn Sie diese Einstellung für Objekteigentümerschaft anwenden, müssen Sie Bucket-Richtlinien verwenden, um Zugriff auf die OAI zu gewähren (siehe vorheriger Abschnitt).
Der folgende Abschnitt gilt nur für Anwendungsfälle für Legacy-Systeme, für die ACLs erforderlich sind.
Sie können einer CloudFront OAI Zugriff auf Dateien in einem Amazon S3 S3-Bucket gewähren, indem Sie die ACL der Datei auf folgende Weise erstellen oder aktualisieren:
-
Verwenden des Tabs Permissions (Berechtigungen) des Amazon-S3-Objekts in der Amazon-S3-Konsole
. -
Verwendung PutObjectAclin der Amazon S3 S3-API.
Wenn Sie einer OAI über eine ACL Zugriff gewähren, müssen Sie die OAI mit seiner kanonischen Amazon-S3-Benutzer-ID angeben. In der CloudFront Konsole finden Sie diese ID unter Sicherheit, Origin-Zugriff, Identitäten (veraltet). Wenn Sie die CloudFront API verwenden, verwenden Sie den Wert des S3CanonicalUserId
Elements, das bei der Erstellung der OAI zurückgegeben wurde, oder rufen Sie die CloudFront API ListCloudFrontOriginAccessIdentitiesauf.
In neueren Amazon-S3-Regionen ist es erforderlich, Signature Version 4 für authentifizierte Anforderungen zu verwenden. (Informationen zu den Signaturversionen, die in jeder Amazon-S3-Region unterstützt werden, finden Sie unter Amazon-Simple-Storage-Service-Endpunkte und -Kontingente in der Allgemeine AWS-Referenz.) Wenn Sie eine Ursprungszugriffsidentität verwenden und sich Ihr Bucket in einer der Regionen befindet, die Signature Version 4 erfordert, beachten Sie Folgendes:
-
DELETE
-,GET
-,HEAD
-,OPTIONS
- undPATCH
-Anfragen werden ohne Einschränkungen unterstützt. -
POST
-Anfragen werden nicht unterstützt.