为什么以 AWS root 用户身份登录时不允许角色切换?

Why is Role switching not allowed when logged in as AWS root user?

根据 AWS 文档here - 当您以 AWS 帐户根用户身份登录时,您无法切换角色

如果我们遵循 AWS 最佳实践,即不使用 root 用户执行操作,则此限制是有意义的并且支持 AWS 不允许以 root 用户身份切换角色的原因。但是,当使用 Bucket 策略时,一个账户中的根用户可以访问另一个账户中的 Bucket 并且 AWS 似乎没有限制,这与角色不同(从技术上讲,两者都是使用资源策略的跨账户操作)。

为什么这个 'root user restriction' 仅适用于角色而不适用于存储桶 - 出于安全原因吗?

通常通过对 IAM 用户、IAM 组和 IAM 角色的 IAM 权限授予对服务的访问权限。

一些 AWS 服务还允许创建可以授予对该特定服务的某些方面的访问权限的策略。例子是:

  • Amazon S3 存储桶策略
  • Amazon SQS 队列访问策略
  • Amazon SNS 访问策略

这些策略可用于授予跨账户访问权限,以及 未经身份验证的访问权限,例如 public 对 Amazon S3 存储桶中对象的访问权限和发送能力发送到 Amazon SQS 队列的未经身份验证的消息。

这些策略用于授予额外的访问权限。它们不涉及 "assuming" 任何其他角色。

我认为对角色的使用和以外部帐户的root为原则的存储桶策略存在一些误解。

这些角色是临时承担的,供通常无权执行某些操作的某人或某物使用。这可能是来自相同或不同帐户的用户或服务。

但是,当您在存储桶策略原则中使用其他帐户的 root 时,您将给予该帐户 永久(直到被您手动撤销)信任 对存储桶进行所有或部分操作。您使用 root 作为原则,以便其他帐户的所有者可以 委托 访问自己的用户或角色。您完全信任其他帐户可以在您不参与的情况下管理对存储桶的访问。

当然,如果您不愿意将这种信任给予其他帐户,您可以将对您存储桶的访问权限限制为给定的 IAM 用户或角色。这显然会限制其他帐户的所有者委托访问您的存储桶的能力。