amazon-S3-bucket-Richtlinien - Beschränkung des Zugangs durch die referer, ABER nicht einschränken, wenn urls generiert werden, über den Abfrage-string-Authentifizierung
Habe ich Folgendes bucket policy set auf meiner bucket:
{
"Version": "2008-10-17",
"Id": "My access policy",
"Statement": [
{
"Sid": "Allow only requests from our site",
"Effect": "Allow",
"Principal": { "AWS": "*"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"StringLike": {
"aws:Referer": [" http://mydomain.com/*"," http://www.mydomain.com/*"]
}
}
},
{
"Sid": "Dont allow direct acces to files when no referer is present",
"Effect": "Deny",
"Principal": {"AWS": "*" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"Null": {"aws:Referer": true }
}
}
]
}
Ich auch konfiguriert Abfrage-string-Authentifizierung, aber wie es aussieht, kann ich nicht beides haben. Wenn ich meine bucket-Richtlinien legen für jede Anforderung verweigern, die nicht stammen aus mydomain, meine temporäre url mit query-string-Authentifizierung, wird auch nicht bedient werden. Meine Frage ist also, wie kann ich beides haben ? Gibt es eine Möglichkeit zu prüfen, für die url-Parameter und sehen, ob es einen parameter namens "Signatur" und in diesem Fall nicht für die referer-Politik?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie die Leerzeichen in der Referrer-string " http://mydomain.com/*" das ist falsch... die Amazon-Beispiele gemacht, die Fehler zu.
Für die zweite Anweisung der einfachere Weg, um es zu lösen, zu entfernen, die gesamte Aussage und Ihre Dateien, Berechtigungen (ACLs) auf "privat" gesetzt (Owner-Read/Write-und Welt-NoRead/NoWrite)
Ich bin mir nicht sicher, aber scheint, dass auch wenn du eine Deny-Anweisung eine Datei kann noch gelesen werden, wenn es eine öffentliche Genehmigung (Welt Gelesen).
Auch, wenn Sie die Verteilung der Dateien auf CloudFront denken Sie daran, um es zu Lesen die Eimer auch. Also eine komplette Periode-Politik Aussehen wird:
(ändern Sie die 12345678 Ihrem AWS-Konto-ID-Nummer ohne Bindestriche)