我一直在阅读大量文档并观看了大量视频,但我仍然对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的新手
答案 0 :(得分:1)
我认为您对使用IAM实体的资源的权限感到困惑。
i)AWS账户拥有资源(S3存储桶,EC2实例等),IAM用户,IAM角色或其他AWS服务可以访问这些资源(可以来自相同或不同的账户)
ii)我们管理可以访问的人及其permission level with policies
iv)基于资源的策略将具有Principal元素,但基于身份的策略将不具有(because the attached IAM entity is the Principal)
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权限策略。