我有一个用户,我将称之为 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 访问权限找到它们,也看不到它们的策略。