Direkt zum Inhalt

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

Lesedauer: 4 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

Um den Zugriff auf einen S3-Bucket einzuschränken, erstelle eine Ursprungszugriffskontrolle (OAC) oder eine Legacy-Ursprungszugriffsidentität (OAI). Es hat sich bewährt, ein OAC anstelle des alten OAI zu erstellen.

Wichtig: Bevor du beginnst, stelle sicher, dass du den Amazon S3-Ursprung der CloudFront-Distribution als REST-API-Endpunkt konfiguriert hast, z. B. AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Diese Lösung gilt nicht für Amazon S3-Ursprünge, die du als Website-Endpunkt konfiguriert hast, wie z. B. AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com. Weitere Informationen findest du unter Wie verwende ich CloudFront, um eine statische Website bereitzustellen, die auf Amazon S3 gehostet wird?

Erstellen einer CloudFront-OAC

Führe die folgenden Schritte aus:

  1. Öffne die CloudFront-Konsole.
  2. Wähle im Navigationsbereich Distributions und wähle dann die Distribution, die Inhalte aus dem S3-Bucket bereitstellt, auf die du den Zugriff einschränken möchtest.
  3. Wähle die Registerkarte Ursprünge aus.
  4. Wähle den Amazon S3-Ursprung aus und wähle anschließend Bearbeiten.
  5. Wähle für Ursprungszugriff Ursprungszugriffskontrolleinstellungen (empfohlen) aus.
  6. Wähle für Ursprungszugriffskontrolle ein vorhandenes OAC aus. Wähle dann Neue OAC erstellen.
  7. Gib im Dialogfeld einen Namen für die Steuerungseinstellung ein. Es hat sich bewährt, die Standardeinstellung Anfragen signieren (empfohlen) beizubehalten.
  8. Wähle Erstellen.
  9. Wähle für den S3-Bucket-Zugriff Richtlinie kopieren
  10. Wähle Änderungen speichern.
  11. Öffne die Amazon S3-Konsole.
  12. Wähle im Navigationsbereich Allzweck-Buckets und wähle dann den Bucket aus, der der Ursprung der CloudFront-Distribution ist.
  13. Wähle die Registerkarte Berechtigungen.
  14. Vergewissere dich, dass du unter Bucket-Richtlinie eine Aussage siehst, die dem folgenden Beispiel ä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"
            }
        }
    }
}

Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch den Bucket-Namen und arn:aws:cloudfront::111122223333:distribution/edfdvbd6EXAMPLE durch den Amazon-Ressourcennamen (ARN) der CloudFront-Distribution. Damit die CloudFront OAC Objekte aus dem Bucket lesen kann, musst du die obige Anweisung zu der Bucket-Richtlinie hinzufügen. Nachdem du den Zugriff auf den Bucket eingeschränkt hast, kannst du für eine weitere Sicherheitsebene AWS WAF integrieren.

Erstellen einer älteren CloudFront-OAI

Führe die folgenden Schritte aus:

  1. Öffne die CloudFront-Konsole.
  2. Wähle im Navigationsbereich Distributions und wähle dann die Distribution, die Inhalte aus dem S3-Bucket bereitstellt, auf die du den Zugriff einschränken möchtest.
  3. Wähle die Registerkarte Ursprünge aus.
  4. Wähle den Amazon S3-Ursprung aus und wähle anschließend Bearbeiten.
  5. Wähle für Ursprungszugriff Legacy-Zugriffsidentitäten.
  6. Wähle in der Drop-down-Liste Ursprungszugriffsidentität den OAI-Namen aus. Wähle dann Neue OAI erstellen.
  7. Gib im Dialogfeld einen Namen für die neue OAI ein und wähle dann Erstellen.
  8. Wähle für Bucket-Richtlinie Ja, Bucket-Richtlinie aktualisieren aus.
  9. Wähle Änderungen speichern.
  10. Öffne die Amazon S3-Konsole.
  11. Wähle im Navigationsbereich „Allzweck-Buckets“ und wähle dann den Bucket aus, der der Ursprung der CloudFront-Distribution ist.
  12. Wähle die Registerkarte Berechtigungen.
  13. Vergewissere dich, dass du unter Bucket-Richtlinie eine Aussage siehst, die dem folgenden Beispiel ä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: Ersetze arn:aws:iam: :cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX durch den CloudFront-Distributions-ARN und AWS****DOC-EXAMPLE-BUCKET durch den Bucket-Namen. Überprüfe die Bucket-Richtlinie auf Aussagen mit "Effect": "Deny", die den Zugriff auf den Bucket von der CloudFront-OAI aus blockieren. Ändere die Aktion in Gewähren, damit die CloudFront-OAI auf Objekte im Bucket zugreifen kann. Überprüfe die Bucket-Richtlinie auch auf Aussagen mit **"Effect": **"Allow", die den Zugriff auf den Bucket von einer beliebigen Quelle aus ermöglichen, die nicht die CloudFront-OAI ist. Ändere diese Anweisungen für den Anwendungsfall.

Ähnliche Informationen

Eine Distribution erstellen

Identitäts- und Zugriffsmanagement für Amazon S3