Wie verwende ich meine CloudFront-Distribution, um den Zugriff auf einen Amazon S3-Bucket einzuschränken?

Lesedauer: 3 Minute
0

Ich möchte den Zugriff auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket einschränken, sodass Benutzer nur über meine Amazon CloudFront-Distribution auf Objekte zugreifen.

Lösung

Wichtig: Bevor Sie beginnen, stellen Sie sicher, dass der Amazon S3-Ursprung Ihrer CloudFront-Distribution als REST-API-Endpunkt konfiguriert ist. Zum Beispiel AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Diese Lösung gilt nicht für S3-Ursprünge, die als Websiten-Endpunkt konfiguriert sind. Zum Beispiel AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com. Weitere Informationen finden Sie unter Wie verwende ich CloudFront, um eine statische Website bereitzustellen, die auf Amazon S3 gehostet wird?

Option 1 (Bewährtes Verfahren): Eine CloudFront Origin Access Control (OAC) erstellen

  1. Öffnen Sie die CloudFront-Konsole.
  2. Wählen Sie aus der Liste der Distributionen die Distribution aus, die Inhalte aus dem S3-Bucket bereitstellt, auf den Sie den Zugriff einschränken möchten.
  3. Wählen Sie die Registerkarte Ursprünge aus.
  4. Wählen Sie den S3-Ursprung und anschließend Bearbeiten aus.
  5. Wählen Sie für Ursprungszugriff die Ursprungs-Zugriffskontrolleinstellungen (empfohlen) aus.
  6. Wählen Sie für Ursprungs-Zugriffskontrolle eine vorhandene OAC oder die Einstellung Kontrolle erstellen aus.
  7. Benennen Sie im Dialogfeld Ihre Kontrolleinstellung. Es hat sich bewährt, die Standardeinstellung Anfragen signieren (empfohlen) beizubehalten. Wählen Sie dann Erstellen aus.
  8. Wenden Sie für S3-Bucket-Zugriff die Bucket-Richtlinie auf den S3-Bucket an. Wählen Sie Richtlinie kopieren und dann Speichern aus.
  9. Wählen Sie Zu S3-Bucket-Berechtigungen wechseln aus, um zur S3-Bucket-Konsole zu gelangen.
  10. Wählen Sie Änderungen speichern aus.
  11. Wählen Sie in der Amazon S3-Konsole aus Ihrer Bucketliste den Bucket aus, der der Ursprung der CloudFront-Distribution ist.
  12. Wählen Sie die Registerkarte Berechtigungen aus.
  13. Vergewissern Sie sich, dass Sie unter Bucket-Richtlinie eine Aussage sehen, die der folgenden ähnelt:
{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "AllowCloudFrontServicePrincipalReadOnly",
        "Effect": "Allow",
        "Principal": {
            "Service": "cloudfront.amazonaws.com"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
        "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE"
            }
        }
    }
}

Sie müssen die obige Anweisung hinzufügen, damit die CloudFront OAC Objekte aus Ihrem Bucket lesen kann.

Hinweis: Nachdem Sie den Zugriff auf Ihren Bucket mithilfe der CloudFront-OAC eingeschränkt haben, haben Sie die Möglichkeit, durch die Integration von AWS WAF eine weitere Sicherheitsebene hinzuzufügen.

Option 2: Eine Legacy-CloudFront-Ursprungszugriffsidentität (OAI) erstellen

  1. Öffnen Sie die CloudFront-Konsole.
  2. Wählen Sie aus der Liste der Distributionen die Distribution aus, die Inhalte aus dem S3-Bucket bereitstellt, auf den Sie den Zugriff einschränken möchten.
  3. Wählen Sie die Registerkarte Ursprünge aus.
  4. Wählen Sie den S3-Ursprung und anschließend Bearbeiten aus.
  5. Wählen Sie für Ursprungszugriff Legacy-Zugriffsidentitäten aus.
  6. Wählen Sie in der Dropdownliste Ursprungs-Zugriffsidentität den Namen der Ursprungs-Zugriffsidentität oder Neue OAI erstellen aus.
  7. Benennen Sie im Dialogfeld Ihre neue Ursprungs-Zugriffsidentität und wählen Sie Erstellen aus.
  8. Wählen Sie für Bucket-Richtlinie Ja, Bucket-Richtlinie aktualisieren aus.
  9. Wählen Sie Änderungen speichern aus.
  10. Wählen Sie in der Amazon S3-Konsole aus Ihrer Bucketliste den Bucket aus, der der Ursprung der CloudFront-Distribution ist.
  11. Wählen Sie die Registerkarte Berechtigungen aus.
  12. Vergewissern Sie sich, dass Sie unter Bucket-Richtlinie eine Aussage sehen, die der folgenden ähnelt:
{{

"Sid": "1",

"Effect": "Allow",

"Principal": {

"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"

},

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"

}

Hinweis: Überprüfen Sie Ihre Bucket-Richtlinie auf alle Aussagen mit „Effekt“: „Verweigern“, die den Zugriff auf den Bucket von der CloudFront-OAI aus verhindern. Ändern Sie diese Anweisungen, sodass die CloudFront-OAI auf Objekte im Bucket zugreifen kann.

Überprüfen Sie außerdem Ihre Bucket-Richtlinie auf alle Aussagen mit „Effekt“: „Erlauben“, die den Zugriff auf den Bucket von jeder Quelle aus ermöglichen, bei der es sich nicht um die CloudFront-OAI handelt. Passen Sie diese Anweisungen Ihrem Anwendungsfall entsprechend an.


Ähnliche Informationen

Eine Distribution erstellen

Identitäts- und Zugriffsmanagement in Amazon S3

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr