バケツをすべて拒否するように制限しようとしていますが、特定のIAMユーザーからのアップロードを許可し、referer
ヘッダーに基づいてオブジェクトを取得します。ここに私の方針は次のとおりです。AWS S3バケットポリシー明示的拒否
{
"Version": "2012-10-17",
"Id": "Meteor refer policy",
"Statement": [
{
"Sid": "allow upload",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::556754141176:user/username"
},
"Action": "s3:PutObject*",
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
},
{
"Sid": "Allow get",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "bucketname/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://myapp.com*",
"http://localhost*"
]
}
}
},
{
"Sid": "Explicit deny",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "bucketname/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://myapp.com*",
"http://localhost*"
]
}
}
}
]
}
このポリシーは、正しくのみRefererヘッダにGetObject関数ディレクティブを施行したが、私は、私が述べたように、そのユーザーに何かをアップロードすることはできませんよ。明示的な否定を取り除くと、どこからでもオブジェクトにアクセスでき、リファラーは問題になりません。私のポリシーに何が間違っていますか?また、私はコンソールからバケツ内のものにアクセスすることはできません。そのために私は何をする必要がありますか?
ありがとう、
説明をありがとうございます!私はS3バケットがデフォルトでプライベートであることは知っていましたが、明示的な拒否を削除したときはいつでもどこからでも写真を見ることができました。これは、私の3番目のツールがアップロードに使用していたACLのために、誰もが読み込みアクセス権を与えられたためだとわかりました。 ACLとポリシーを使ってサークルで自分自身をスピンしたと思う。説明ありがとう!好奇心の念から、この記事でAWSが明示的に否定することを提案するのはなぜですか? http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-4 – gkrizek
私は記事が「示唆」しているとは思わない他のルールを上書きする場合は明示的に拒否を使用することができます。私が使用したい例は... Sys AdminsにすべてのS3バケットを表示する権限があるが、HRスタッフだけがアクセスできるようにするHRバケットがあるとしよう。 HRスタッフにHRバケットへのアクセスを許可してから、明示的拒否を使用して、アクセス権が別途付与されている場合でも(Sys Adminsなど)誰でもアクセスをブロックすることができます。 –
ありがとうございます。それは理にかなっている! – gkrizek