我有两个帐户,帐户ACCOUNTAAAA和ACCOUNTBBBB。帐户ACCOUNTAAAA中存在一个存储桶(BUCKETAAAA),在ACCOUNTBBBB中具有角色(ROLEBBBB)的实例需要能够从中读取。
我向存储桶添加了以下权限:
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNTBBBB:role/ROLEBBBB"
},
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::BUCKETAAAA/*"
}
我具有以下角色的以下权限ACOUNTBBBB
:
"Sid": "",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKETAAAA/",
"arn:aws:s3:::BUCKETAAAA/*"
]
}
我的假设是,我应该能够aws s3 ls s3://BUCKETAAAA
在具有IAM角色的EC2实例上运行,并了解BUCKETAAAA的竞争者。当我尝试此操作时,我得到了An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
。
我在这里想念什么?
为了重现您的情况,我做了以下工作:
针对“ A型桶”的“ Betuck”政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/role-b"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucket-a",
"arn:aws:s3:::bucket-a/*"
]
}
]
}
角色B的权限为:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BucketA",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket-a",
"arn:aws:s3:::bucket-a/*"
]
}
]
}
我能够成功使用aws s3 ls s3://bucket-a
并能够将文件复制到Bucket-A。
我看到的主要区别是您的存储桶策略仅授予以下权限:
"Resource": "arn:aws:s3:::BUCKETAAAA/*"
这意味着“斗-A内的任何”但不包括斗A本身。该命令aws s3 ls s3://BUCKETAAAA
在存储桶上操作,该角色没有权限。
因此,您还应该为存储桶本身添加权限:
"Resource": [
"arn:aws:s3:::BUCKETAAAA",
"arn:aws:s3:::BUCKETAAAA/*"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句