Aws IAM Roles vs Bucket Policies

时间:2017-12-27 21:25:34

标签: amazon-web-services roles policies

我一直在阅读大量文档并观看了大量视频,但我仍然对IAM角色和存储桶策略感到困惑。这让我感到困惑:

1)我创建了一个桶。那时我可以公开或保密。如果我将其公开,那么任何人或任何应用程序都可以"看到"桶中的对象。我认为可以将权限设置为在存储桶中添加/删除/获取/列出对象。如果是这种情况,那么为什么我需要为S3存储桶添加任何IAM角色,或者添加任何存储桶策略(???)

2)在我创建一个存储桶时,我是否可以仅对某些用户/应用程序/ EC2实例等给予全部或部分存储桶非常具体的权限?例如EC2-X上的App1可以访问存储桶B1中的子文件夹A.

3)来到IAM角色,这是一个提供完全S3访问权限的EC2角色 - 这是什么意思?完全访问任何存储桶?如何将EC2上运行的应用程序仅限制为某些存储桶,只有某些受限制的权限(请参阅上面的#2)? EC2上的所有应用是否可以完全访问所有存储桶?在创建存储桶时,是否可以设置权限以便可以推翻IAM角色?

4)最后,除了上述IAM角色之外,Bucket Policies还会做什么?例如,' AllowS3FullAccess' a" Bucket Policy"或者" IAM政策"?为什么要区分策略类型 - 策略就是这样 - 他们在某些对象/资源上定义了一些权限/规则,正如我所看到的那样。

感谢您的任何澄清。 - AWS的新手

1 个答案:

答案 0 :(得分:1)

我认为您对使用IAM实体的​​资源的权限感到困惑。

i)AWS账户拥有资源(S3存储桶,EC2实例等),IAM用户,IAM角色或其他AWS服务可以访问这些资源(可以来自相同或不同的账户)

ii)我们管理可以访问的人及其permission level with policies

iii)政策可以是identity based (attached to IAM user/group/role) or resource based (attached to S3 bucket, SNS topic)

iv)基于资源的策略将具有Principal元素,但基于身份的策略将不具有(because the attached IAM entity is the Principal)

v)Permissions start from default deny, allow overrides the default deny and an explicit deny overrides any allow

vi)最终访问权限将由所有政策组合确定

回答你的问题:

1>我们无法使用S3存储桶添加(或附加)IAM角色。如果你想要你的存储桶应该公开(不推荐但需要这样做till some extent if it's in use for static website),那么你可以公开它

2 - ;创建存储桶时无法实现。您必须在通过IAM和/或S3存储桶策略创建存储桶后执行此操作

3>如果IAM角色具有AmazonS3FullAccess,则角色可以(效果:允许)为您帐户中的任何S3资源(资源:)调用任何S3 API(s3:)(前提是他们没有{{ 3}})。 如果多个应用程序在附加了IAM角色的实例上运行并且正在使用该角色提供的凭据,则其权限将相同。

4>我不知道你在哪里获得了引用AllowS3FullAccess但我们无法确认,除非我们知道确切的JSON。如果它附加到存储桶或具有Principal元素,则它是存储桶策略。 您可以使用IAM和Bucket策略cross account access。通常,存储桶策略用于跨帐户访问,或者您希望在一个位置管理S3权限策略。