我有一个带有空存储桶策略的存储桶,打开了阻止公共访问(ACL 和存储桶),并尝试使用与使用 STS AssumeRole 的用户绑定的 IAM 策略列出存储桶,并带有以下附加策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:GetBucket*",
"s3:ListBucket*",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-test-bucket/*"
]
}
]
}
在 python (boto3) 中的 STS 会话期间使用假定的角色凭据
s3c = boto3.client('s3',
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken'])
s3c.list_buckets()
我得到这个例外:
botocore.exceptions.ClientError:调用ListBuckets操作时发生错误(AccessDenied):访问被拒绝
当我尝试使用 IAM 策略模拟器时,它指示“隐式拒绝”。我在想是否需要访问该用户的存储桶策略?我的理解是,如果 IAM 和 Bucket 策略都是一个交集。如果其中一个不存在,则另一个优先。