【发布时间】:2020-02-12 08:31:18
【问题描述】:
对于给定的 IAM 用户,我只想允许该用户访问我们账户中的一个特定存储桶(称为 foo-bucket)。
但是,这似乎具有禁止访问我们帐户之外的任何公共存储桶的效果,这不是我想要的。我希望用户仍然可以访问另一个帐户中的任何公共存储桶,例如broad-references。我当然可以明确授予对特定公共存储桶的访问权限,但是世界上有无数的公共存储桶,我不想限制对其中任何一个的访问。
这是现有政策。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "economycloud",
"Action": [
"s3:List*",
"s3:Get*",
"s3:DeleteObject*",
"s3:Abort*",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectTagging",
"s3:RestoreObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::foo-bucket/*",
"arn:aws:s3:::foo-bucket"
]
},
{
"Sid": "AllowListing",
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
有人可以建议一个 IAM 策略来执行以下操作:
- 限制访问,使用户只能访问帐户中的此特定存储桶,如上述策略中所述,但
- 可以访问任何其他帐户中的任何公共存储桶。
【问题讨论】:
-
您能否分享您的实际 IAM 政策以供参考? (显然没有共享实际的存储桶名称/帐户)
-
只是为了澄清您的问题,您希望该用户有权访问此 ONE 存储桶,并访问该帐户中公开的任何存储桶?
-
已编辑以响应两个 cmets。
-
我认为这实际上是不可能的,因为没有办法引用“特定帐户中的所有 S3 存储桶”。通常,这将通过 ARN 通配符完成,但 S3 ARN 似乎不允许 account-id 作为通配符。
-
我很困惑。您是说此政策具有阻止访问其他存储桶的效果吗?
标签: amazon-web-services amazon-s3 amazon-iam public bucket