バケット ポリシーを使用して、バケットへのユーザー アクセスを制限しようとしています。私には一連のユーザーがいて、すべてのユーザーに S3FullAccess ポリシーがあります。IAM で何も変更できません。自分のバケット ポリシーにしかアクセスできません。そのため、バケット ポリシーを使用してユーザーのアクセスを制御したいと考えています。ユーザーを 3 つのカテゴリに分類しています。
- 自分のバケットへの管理者アクセス (自分のバケットへのすべてのアクセス)
- バケットへのアクセスが制限されているユーザー (get-bucket-policy、get-bucket-location など)
- バケットにアクセスできません。(自分のバケットにはアクセスできません)
以下のポリシーは私が試したものですが、うまくいきません。
{
"Version": "2012-10-17",
"Id": "PolicyTesting",
"Statement": [
{
"Sid": "0",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<<account_id>>:user/users_with_limited_access"
},
"Action": [
"s3:GetBucketPolicy",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<<my_bucket_name>>",
"arn:aws:s3:::<<my_bucket_name>>/*"
]
},
{
"Sid": "1",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::<<account_id>>:user/admin_users"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<<my_bucket_name>>",
"arn:aws:s3:::<<my_bucket_name>>/*"
]
}
]
}
上記のポリシーを試してみましたが、管理者ユーザーのみがバケットにアクセスできます。アクセスが制限されているユーザーは、get-bucket-policy、get-bucket-location などの許可されたアクションを実行できません。アクセス拒否の例外が発生しています。これを解決するのを手伝ってください。