根据此处的 AWS 文档 -以 AWS 账户根用户身份登录时,您无法切换角色。
如果我们遵循AWS最佳实践,即不使用根用户来执行操作,则此限制是有意义的,并支持AWS不允许以根用户身份进行角色切换的原因。但是,在使用存储桶策略时,一个账户中的根用户可以访问另一个账户中的存储桶,而 AWS 似乎并没有限制与角色不同的情况(从技术上讲,两者都是使用资源策略的跨账户操作(。
为什么此"根用户限制"仅适用于角色而不适用于存储桶 - 任何安全原因?
对服务的访问权限通常通过对 IAM 用户、IAM 组和 IAM 角色的 IAM 权限授予。
某些 AWS 服务还允许创建策略,以授予对该特定服务的各个方面的访问权限。例如:
- 亚马逊 S3 存储桶策略
- Amazon SQS 队列访问策略
- 亚马逊社交网络访问策略
这些策略可用于授予跨账户访问权限,以及未经身份验证的访问权限,例如对 Amazon S3 存储桶中的对象的公有访问权限以及将未经身份验证的消息发送到 Amazon SQS 队列的能力。
这些策略用于授予其他访问权限。它们不涉及"承担"任何其他角色。
我认为对角色的使用和存储桶策略存在一些误解,以外部帐户的root
为原则。
这些角色是为通常没有某些操作权限的某人或某事临时代入的。这可以是来自相同或不同帐户的用户或服务。
但是,当您在存储桶策略原则中使用其他账户的root
时,您将向该账户授予对存储桶执行所有或部分操作的永久信任(直到您手动撤销(。您可以使用root
作为原则,以便其他帐户的所有者可以将访问权限委派给自己的用户或角色。您完全信任其他账户在没有您参与的情况下管理对存储桶的访问。
当然,如果您不愿意将此类信任授予其他账户,则可以将对存储桶的访问权限限制为给定的 IAM 用户或仅角色。这显然会限制其他账户的拥有者委派对存储桶的访问权限的能力。