私はAmazon S3バケットmybucket
を持っていて、特定のネストされたフォルダ(またはS3用語では特定の「接頭辞」)のコンテンツへのアクセスのみを有効にしたいと考えています。Amazon S3:特定のリファラーのためだけに、特定のパスへのアクセスを許可する方法は?
次のS3バケットポリシーを試しましたが、機能しません。条件を追加した後、私はブラウザでアクセス拒否エラーを取得し始めました。
{
"Version": "2012-10-17",
"Id": "Policy for mybucket",
"Statement": [
{
"Sid": "Allow access to public content only from my.domain.com",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/public/content/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://my.domain.com/*"
]
}
}
}
]
}
これを達成するためにポリシーはどのように見えるのですか?
「動作しません」を定義します。このポリシーは有効です。 –
こんにちは@ Michael-sqlbot、私は私の声明を明確にした。正直言って、私はまだこれをデバッグしています。少なくとも私のバケツにコンテンツを配布するCloudfrontでRefererを受け取ったようです(まだ利用できないS3のログ)。動作は本当に奇妙です、私がrefererで条件を追加すると、アクセス拒否のエラーが出ます。 – Visionscaper
CloudFrontはデフォルトでリファラーをS3に転送しません。キャッシュヒット率が低下するため、CloudFrontはキャッシュをチェックしてしまうため、おそらくは悪い考えです同じURL *と* refererのレスポンスがあり、それぞれのリファラが独自のキャッシュされたコピーを持つようになります。そうでなければ、リクエストはS3に送られてリファラを検証します)。 CloudFrontのアクセスIDを使用してCloudFrontがバケットにアクセスできるようにし、[AWS Web Application Firewall](https://aws.amazon.com/waf/)を使用してCloudFrontへのアクセスを制御します。 –