我正在尝试为用户写一个权限,以便能够访问一个特定存储桶中的对象。
我目前有:
{
"Version": "2012-10-17",
"Statement":[{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::test",
"arn:aws:s3:::test/*"]
}
]
}
但是用户仍然可以访问我的所有其他存储桶。请注意,我的其他水桶没有政策......我认为这不重要。我只是希望允许该用户的IAM进入该特定存储桶。
答案 0 :(得分:2)
Amazon S3是最复杂的服务之一,因为它提供了三种不同的权限机制,这些机制可以同时应用,例如, IAM policies and Bucket Policies and ACLs! Oh My! (Controlling Access to S3 Resources)可以很好地写出主题,特别是如何授权如何使用多种访问控制机制?:
每当AWS委托人向S3发出请求时,授权决策取决于所有IAM策略的联合,S3存储桶策略和适用的S3 ACL 。
您遇到的行为表明某些地方存在错误配置,即您可能允许在您可能不知道的级别访问存储桶 - 仅关于Amazon IAM,IAM Policy Simulator是一个很好的调试工具这种情况我强烈建议首先验证你的配置。
然而,虽然这对于大多数服务来说已经足够了,但它并没有涵盖上面概述的S3的其他两种权限机制,但至少已经分离了分析。
答案 1 :(得分:0)
请尝试以下 IAM用户政策,该权限允许完全访问仅一个存储桶。
请注意,“列出所有存储桶”是必需的,但用户将无法访问您在策略中指定的存储桶之外的其他存储桶。
{
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":"arn:aws:s3:::examplebucket"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::examplebucket/*"
}
]
}