2017-06-29 3 views
1

Ich habe eine PHP + Symfony Web-App hinter Varnish mit Sites Assets (d. H Bilder, Video) in einem S3-Bucket gespeichert. Ich möchte den Zugriff auf diese Assets mithilfe einer s3-Bucket-Richtlinie durch Referrer einschränken. Die Politik, die ich auf den heißen Stein angelegt ist (bei der Identifizierung info entfernt):S3 Bucket Policy nach Domäne zurück 403 Forbidden für Objektanforderungen in Symfony App mit Varnish

{ 
"Version": "2012-10-17", 
"Id": "http referrer policy example", 
"Statement": [ 
    { 
     "Sid": "Allow get & put requests referred by test.com.", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::mybucket/*", 
     "Condition": { 
      "StringLike": { 
       "aws:Referer": [ 
        "https://www.test.com/*", 
        "https://test.com/*" 
       ] 
      } 
     } 
    }, 
    { 
     "Sid": "Explicit deny to ensure requests are allowed only from specific referrer.", 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::mybucket/*", 
     "Condition": { 
      "StringNotLike": { 
       "aws:Referer": [ 
        "https://www.test.com/*", 
        "https://test.com/*" 
       ] 
      } 
     } 
    } 
] 
} 

ich meine Politik gegen mehr SO und andere Forum-Beiträge verglichen habe und es scheint richtig. Wenn ich diese Politik zu meinen Eimer gelten, fordert für jeden Vermögenswert auf jeder Seite von meiner Seite mit Antwortstatus 403 Verboten scheint gebrochen:

Request URL:http://mybucket.s3-eu-west-1.amazonaws.com/site-assets/img/film-icon.svg 
Request Method:GET 
Status Code:403 Forbidden 
Remote Address:54.231.131.120:80 
Referrer Policy:no-referrer-when-downgrade 

Wenn ich die Politik es funktioniert wieder entfernen. Die Richtlinie tritt also in Kraft und erlaubt meiner eigenen Domäne (in diesem Beispielcode test.com) nicht den Zugriff auf die Assets, sondern definiert sie in der Bucket-Richtlinie als "Zulassen".

Falls es relevant ist, verwendet meine Webanwendung KnpGaufette als Dateisystem, das für die Verwendung von s3 konfiguriert ist und dieses wiederum wird von LiipImagineBundle verwendet, um jede Bildverarbeitung bei Bedarf zu verarbeiten. Mein Server hat auch Varnish 4 vor dem Webserver installiert, um Caching zu ermöglichen (Ich habe versucht, den Lack-Cache zu leeren, den Lack und den Apache neu zu starten, nachdem ich die Police in dem Fall angewendet habe).

Wenn Sie helfen können, wäre das toll.

+0

in ein ähnliches Problem Ran, vielleicht wird diese Ihnen helfen: https://stackoverflow.com/questions/33963428/sonatamediabundle-s3-aws-the-configured-bucket-my-bucket-does-not-exist/47201223 # 47201223 –

+0

@ThomasKekeisen Danke. Ich werde es versuchen, wenn ich einen Moment habe. – Forer

Antwort

0

habe ich das gleiche Problem, man muss nur

"aws:Referer": [ 
    "https://www.test.com/*", 
    "https://test.com/*", 
"https://s3-us-west-2.amazonaws.com/mybucket/*" 
    ] 

auf Ihre Bucket-Richtlinie hinzufügen (URL mit Ihrer Region und Eimer Namen ersetzen), und es wird anfangen zu arbeiten.

Ich hoffe, es wird helfen.

+0

würde, dass so etwas wie diese: '{ "Version": "2012.10.17", "Id": "Referrer Politik Beispiel", "Statement": [{ „aws: Referer ": [ " https://www.test.com/* ", " https://test.com/* ", " https://s3-us-west-2.amazonaws.com/mybucket/* " ] } ] }' – Forer

+0

Versuchte Ihren Vorschlag und es funktioniert nicht. Scheint so, als würde die Richtlinie "section deny" meine eigene URL davon abhalten, auf die Assets von s3 zuzugreifen, aber sie sollte nur URLs außerhalb meiner verweigern. Wenn ich ohne die Verweigerung versuche, kann ich auf meine Assets zugreifen, aber dies ist eine sinnlose Richtlinie, da es dasselbe ist wie keine Richtlinie. – Forer