パブリックにダウンロード可能なファイルがいくつかあるバケットがあります。これらのファイルは IAM ユーザーのみがダウンロードできるようにするバケット ポリシーを設定したいと考えています。これまでに取得したポリシーは次のとおりです。
{
"Version": "2008-10-17",
"Id": "Policy1424952346041",
"Statement": [
{
"Sid": "Stmt1424958477350",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::777777777777:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
},
{
"Sid": "Stmt1424958477351",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::777777777777:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
}
]
}
しかし、IAM ユーザーを含む全員が拒否されています。何が間違っているのか、どなたかご指摘いただけますか?
答え1
アカウント内の IAM ユーザーの数に応じて、次のように両方のステートメントでアカウントを指定できます (テストとして 1 つまたは 2 つ試して、機能するかどうかを確認してください)。以前、arn:aws:iam::XXXXXXXXXXXX:root ですべての IAM アカウントを実際にカバーすることができないという問題が発生しました。IAM ユーザーのみを指定して、ルート エントリを削除することもできます。
{
"Version": "2008-10-17",
"Id": "Policy1424952346041",
"Statement": [
{
"Sid": "Stmt1424958477350",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::777777777777:root",
"arn:aws:iam::777777777777:user/user1",
"arn:aws:iam::777777777777:user/user2" ]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
},
{
"Sid": "Stmt1424958477351",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::777777777777:root",
"arn:aws:iam::777777777777:user/user1",
"arn:aws:iam::777777777777:user/user2" ]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
}
]
}