2014-03-26 7 views
9

Ich habe die folgende Politik:Erstellen einer Schaufel S3 Richtlinie, die den Zugriff auf Cloudfront ermöglicht, aber den Zugriff auf alle anderen

{ 
     "Version": "2008-10-17", 
     "Id": "PolicyForCloudFrontPrivateContent", 
     "Statement": [ 
      { 
       "Sid": "Stmt1395852960432", 
       "Action": "s3:*", 
       "Effect": "Deny", 
       "Resource": "arn:aws:s3:::my-bucket/*", 
       "Principal": { 
        "AWS": [ 
         "*" 
        ] 
       } 
      }, 
      { 
       "Sid": "1", 
       "Effect": "Allow", 
       "Principal": { 
        "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E1IYJC432545JN" 
       }, 
       "Action": "s3:GetObject", 
       "Resource": "arn:aws:s3:::my-bucket/*" 
      } 
     ] 
    } 

Dies ist jedoch verweigert Anforderungen von allen Anforderern, auch Cloudfront. Was ist der richtige Weg, dies zu tun?

Das Problem besteht darin, dass Objekte vom Client mit öffentlichem Lesevorgang erstellt werden. Ich habe momentan keine direkte Kontrolle über den Client, um diese Einstellung zu ändern. Was ich also möchte, ist eine Richtlinie, die die individuelle Objekt-ACL außer Kraft setzt. So Standard verweigert hier funktioniert nicht.

Antwort

10

Die Politik S3 wird wie etwa wie folgt aussehen:

{ 
"Version": "2008-10-17", 
"Id": "PolicyForCloudFrontPrivateContent", 
"Statement": [ 
    { 
     "Sid": "1", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXX" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::YYYYYYYYYYYYY.com/*" 
    } 
] 
} 

Aber hatte ich nicht diese manuell erzeugen. Wenn Sie in Cloudfront einen Ursprung (S3) hinzufügen, haben Sie die Option "Bucket-Zugriff beschränken" - sagen Sie hier "Ja" und gehen Sie weiter. Die Cloudfront-Konfiguration erledigt den Rest automatisch für Sie.

Details hier: Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content - Amazon CloudFront.

+0

Ich habe bereits versucht "Bucket Access beschränken" - hat nicht funktioniert. – Snowman

+0

Ich hatte das gleiche Problem. Die AWS-Manpages sind schrecklich zu lesen. Für mich habe ich nach dem Hinzufügen einer Identität die Registerkarte "Origins" und die "Yes, Update Bucket Policy" vermisst. –

+0

Ich habe das gleiche Problem hier: https://stackoverflow.com/questions/47805797/aws-cloudfront-generate-s3-policy-but-still-receive-accessdenied –

1

Dies ist, was Sie suchen. Ersetzen Sie XXXXXXXXXXXXXX mit Ihrer Herkunft Zugriffs-ID

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "AddPerm", 
     "Effect": "Deny", 
     "NotPrincipal": { 
      "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXX" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::your.bucket.com/*" 
    }, 
    { 
     "Sid": "2", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXX" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::your.bucket.com/*" 
    } 
] 
} 
Verwandte Themen