如何解决为什么需要角色相对于IAM组来访问另一个AWS账户中的资源?
我试图理解为什么您需要IAM“角色”来访问其他IAM帐户中的资源,以及为什么AWS不能仅对IAM组执行相同的操作。
每当我问人们这个问题时,谈话似乎就绕圈了:
他们:“要向另一个IAM帐户中的用户授予对资源的访问权限,您必须授予他们承担IAM角色的权限,然后向该IAM角色授予对您的资源的访问权限。”
我:“我了解这一点,但是为什么不创建一个可以访问该资源的IAM组,然后将其他帐户中的那些用户添加到您的IAM组中呢?”
他们:“您不能将用户从另一个AWS账户添加到您账户中的IAM组。”
我:“我也理解这一点,但是为什么AWS仅允许您通过使用角色来进行跨账户权限?为什么让AWS创建一个IAM组然后添加您就没有那么有意义了?来自其他帐户的IAM用户是否属于该组?”
可能有一些简单的单句信息解释了为什么必须采用这种方式,一旦有人告诉您,这一切都说得通,但这不在文档中,我也不知道它是什么。什么事?
解决方法
我会说安全是主要原因。 IAM角色仅提供临时凭据。出于安全原因,良好做法是尽可能使用此类凭据的方法。
当然,您也可以在您的帐户中创建IAM用户,并将相关的访问密钥提供给其他帐户的用户。有时这是首选,例如以启用对某些资源的只读访问。但是问题在于,除非手动禁用或删除,否则IAM用户凭据是永久。出于安全原因,不建议将永久凭据泄露给您的帐户。
来自docs:
,我们建议使用这种方法来实施最低特权原则。这意味着将提升权限的使用限制为仅在特定任务需要它们时使用。 使用角色,可以帮助防止意外更改敏感环境,尤其是将它们与审核结合使用时,可以帮助确保仅在需要时使用角色。
一句话答案是亚马逊选择了这种方式。
从操作的角度来看,如果将访问密钥与帐户关联,则可以大大简化寿命。另一种方法是为每个请求分别指定一个帐户。
从组织管理的角度来看,树木比森林更容易理解。我的意思是,所有内容都从帐户的IAM根分支出来。如果您允许整个AWS Universe中的任意用户访问任意帐户中的任意资源,那么您将面临管理上的噩梦。
作为最后一条评论的补充,早期的AWS服务具有基于资源的策略。现在不鼓励使用基于身份的策略,并且较新的服务没有资源策略。
最后,从安全角度来看,如果在每个租户周围建立坚固的围墙,则多租户环境的控制要容易得多。