向 Amazon S3 存储桶授予权限

Posted

技术标签:

【中文标题】向 Amazon S3 存储桶授予权限【英文标题】:Granting permissions to an Amazon S3 bucket 【发布时间】:2015-12-27 06:10:51 【问题描述】:

我是 AWS 的新手,我正在尝试授予用户访问 S3 存储桶的权限。 我创建了一个 IAM 用户,并拥有与该用户关联的访问密钥和秘密访问密钥 ID,但我正在努力弄清楚如何授予该用户对 S3 存储桶的权限。我想授予他们对存储桶的写访问权限(但不是读权限),但我会从所有访问权限开始,看看我是否可以获得权限。

我尝试通过策略创建工具创建策略,然后将策略附加到用户,但是当我尝试通过策略模拟器访问存储桶时,我收到错误“隐式拒绝没有匹配的语句”

这是策略生成器创建的策略:


"Version": "2012-10-17",
"Statement": [
    
        "Sid": "Stmt1451195578000",
        "Effect": "Allow",
        "Action": [
            "s3:*"
        ],
        "Resource": [
            "arn:aws:s3:::techp.websitebackup/*"
        ]
    
]

我认为尝试将此策略附加到 S3 中的存储桶,但出现错误:语句缺少必需元素 - 语句“Stmt1451195578​​000”缺少“主体”元素

我想我可能误解了 AWS 上的权限是如何工作的,你能提供一些指导吗?

谢谢 v

【问题讨论】:

我假设您使用非 root 帐户将策略附加到存储桶。 离你不远了。委托人是作为策略主体的实体(在本例中为用户)。如果这是存储桶策略,您需要指定它适用的用户。如果您将此用作用户策略(在 IAM 中),则隐含委托人。此外,从授予所有特权开始是您的好主意。授予您认为自己需要的东西,却没有意识到所有这些东西可能是什么,这是一个常见的错误。 完美,谢谢 Michael - 这很有意义,也很有意义,为什么我在将策略附加到用户时不会出错,但在附加到存储桶时会出错(因为它需要委托人) 【参考方案1】:

将您的政策与用户相关联是正确的做法。您的政策文件也是正确的。

在模拟器中,不要提供 * 作为资源的 ARN,而是提供限定名称。例如arn:aws:s3:::techp.websitebackup/*arn:aws:s3:::techp.websitebackup/foo/bar(因为用户对您帐户中的每个存储桶都没有权限)

【讨论】:

以上是关于向 Amazon S3 存储桶授予权限的主要内容,如果未能解决你的问题,请参考以下文章

AWS-IAM:授予对单个存储桶的访问权限

S3:如何授予对多个存储桶的访问权限?

S3 存储桶策略授予/限制对特定联合用户的访问权限

授予 Redshift Cluster 对另一个账户拥有的 S3 存储桶的访问权限

AWS S3 访问被拒绝。存储桶权限被授予,那么当我是用户时,我需要存储桶策略吗?

Amazon S3 存储桶策略只允许访问特定的 http