我有一个S3 / AWS账户。我有几个网站,每个网站在S3上使用自己的存储桶来读/写存储。我还在S3上的其他存储桶上托管了许多个人资料(备份等),这些资源无法公开访问。
我希望没有这些网站 - 其中一些可能有其他人访问其源代码和配置属性并查看S3密钥 - 可以访问我的私人数据!
从阅读亚马逊的文档看,我需要按照每个存储桶的Amazon USER 来划分权限,而不是按每个存储桶的访问密钥划分权限。但这不会起作用。我似乎只获得2个访问密钥。我需要有一个访问密钥,这是一个主密钥,还有一些具有更多限制权限的访问密钥 - 仅限于某些存储桶。
有没有办法做到这一点,或接近那个?
答案 0 :(得分:8)
您可以通过AWS Identity and Access Management (IAM):
来实现目标AWS身份和访问管理(IAM)使您能够安全 为您的用户控制对AWS服务和资源的访问。我是 使您能够在AWS中创建和管理用户,它还使您能够 为在AWS外部管理的用户授予对AWS资源的访问权限 你的公司目录。 IAM提供更高的安全性,灵活性, 使用AWS时控制。 [强调我的]
正如所强调的那样,强烈建议在所有AWS事件中使用IAM,理想情况下,除了最初设置IAM之外,你绝不应该使用主帐户凭据(如mentioned by Judge Mental那样),你可以生成as你想要的许多访问键就像这样。)
您可以通过AWS Management Console使用IAM(即他们原则上不需要第三方工具来使用所有可用功能)。
生成所需的策略有时会有点棘手,但AWS Policy Generator对于帮助您入门并探索可用的内容非常有帮助。
对于手头的用例,您需要一个 S3 Bucket Policy ,特别是Using Bucket Policies和Access Control以获取各种可用S3访问控制的一般概述机制(可以以微妙的方式干预,参见例如Using ACLs and Bucket Policies Together)。
祝你好运!答案 1 :(得分:0)
是,要使用相同的AWS账户访问具有不同权限的其他登录帐户,您可以使用AWS IAM。作为Bucket Explorer的开发者,我建议尝试Bucket Explorer-团队版,如果您正在寻找工具,为您提供具有不同登录和不同访问权限的gui界面。阅读http://team20.bucketexplorer.com
答案 2 :(得分:0)
只需创建一个限制对特定存储桶的访问的自定义IAM组策略
如......
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListAllMyBuckets"],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource":
[
"arn:aws:s3:::my.bucket",
"arn:aws:s3:::my.bucket/*"
]
}
]
}
第一个操作s3:ListAllMyBuckets
允许用户列出所有存储桶。如果没有这个,当用户登录时,他们的S3客户端将不会在存储桶列表中显示任何内容。
第二个操作为名为' my.bucket'的存储桶授予用户完整的S3权限。这意味着他们可以自由地在存储桶中创建/列出/删除存储桶资源和用户ACL。
授予s3:*访问权限非常宽松。如果您想要对存储桶进行更严格的控制,只需查找要授予的相关操作并将其添加为列表。
"Action": "s3:Lists3:GetObject, s3:PutObject, s3:DeleteObject"
我建议您将此策略创建为一个组(ex my.bucket_User),这样您就可以将其分配给需要访问此存储桶的每个用户,而无需任何不必要的copypasta。