Alfred Userというユーザーがいて、次のようなIAMポリシーが添付されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket-name/*",
"arn:aws:s3:::my-bucket-name/",
"arn:aws:s3:::my-bucket-name"
]
}
]
}
IAM シミュレーターでは、このポリシーとこの ARN を使用して、GetObject に対して「許可」が取得されます。arn:aws:s3:::my-bucket-name/my-object.xml
CLI では、次のコマンドに対して AccessDenied が発生します。aws s3 cp s3://my-bucket-name/my-object.xml temp/my-object.xml
GetObject 操作の呼び出し時にクライアント エラー (AccessDenied) が発生しました: アクセスが拒否されました
考えられる限りのことを調べましたが、この矛盾を説明できません。何が足りないのでしょうか?
私が試したこと
ここでの「creds」は「AWS IAM アクセスキー」を意味します。
- IAMシミュレーター - これは動作します
- IAM認証情報の別のセット - これは機能します
- 使用方法
aws s3 ls s3://my-bucket-name/
-- これはAlfredのIAM認証情報と私の認証情報で機能します - 別の AWS アカウントの同様に構成されたバケットとポリシーを比較しました。私の知る限り、ポリシーはほぼ同じです。
答え1
結局、このバケットを暗号化したのは KMS キーの権限でした。キーはルート アカウントが所有しているため、通常の IAM アクセスでは見つけられず、ポリシーも確認できませんでした。