首页 > 解决方案 > AWS STS 使用案例和优势

问题描述

我对 STS 的用例和优势感到困惑。根据文档,它是临时获取一个角色以在 AWS 中执行 IAM 用户或服务无法使用的任务。请注意,我说的是编程访问(不是控制台访问)

例如,IAM 用户可能没有 S3 权限。据我了解:

  1. 他可以通过联系 AWS STS 获取临时访问密钥/令牌并获取 S3 的访问密钥和秘密。

  2. 使用这些临时凭证,他可以访问 S3。

我的问题是:

  1. 要从 AWS STS 获取临时凭证,他仍然需要他现有的访问令牌(永久)和机密,对吗?

  2. 如果他现有的访问令牌和秘密被泄露,攻击者仍然可以使用它首先从 STS 获取临时凭据,然后访问 S3,对吗?我了解攻击者将无法使用他的永久访问令牌和机密直接访问 S3。

我正试图围绕它的正确用例展开思考。我知道我很困惑,但也许我在循环思考。

提前致谢。

标签: amazon-web-servicesaws-sdkaws-cliaws-sts

解决方案


他们并没有太多“联系 AWS STS 并获取 S3 的访问密钥和秘密”。相反,他们调用AssumeRole()有权访问 Amazon S3 的 IAM 角色。然后,使用返回的临时凭证,他们可以访问 S3。

您的困惑似乎主要集中在 IAM 角色的用例上。我喜欢用故事的方式来解释它...

我是办公室的消防员。如果火警启动,我会去橱柜,戴上红色头盔,然后在办公室里走来走去,引导人们到楼梯间。由于警报响起并且我戴着一顶红色帽子,人们(大部分)按照我告诉他们的去做。但是,如果是正常的一天,没有警报响起,我没有戴红帽子,我让他们从楼梯间离开办公室,他们很可能会奇怪地看着我,不理会我的要求。不同之处在于我担任了消防员的角色,这给了我额外的权限。

所以,作为一个普通人,我不能命令人们离开办公室。但是,一旦我担任该角色,我就有额外的权限。

这对于 IT 系统来说也是一个很好的做法。您公司的系统管理员可能在您的 AWS 账户中拥有执行任何操作的权限。但是,他们每天使用具有此类权限的帐户是一种不好的做法。相反,他们的 IAM 用户帐户应该只具有正常权限,但是,如果他们想做管理员类型的事情,他们有能力承担一个管理员角色,然后做强大的事情。完成后,他们应该退出角色并继续作为普通用户。这更“安全”,因为当他们是“普通用户”时,他们不会意外地做一些强大的事情。

Amazon Security Token Service (STS) 还用于为在 Amazon EC2 实例上运行的软件提供权限。在这种情况下,一个 IAM 角色被分配给 EC2 实例,并且 EC2 服务代表该实例“代入”该角色。然后它通过 EC2 实例元数据服务提供临时凭证。在此示例中,没有 IAM 用户担任该角色。相反,EC2 服务代表实例假定它。

STS 还可以提供跨账户权限。例如,账户 A 中的 IAM 用户可以调用AssumeRole()账户 B 中的 IAM 角色。如果他们有权执行此操作,那么他们将获得与账户 B 关联的临时凭证。这是必需的,因为来自一个账户的凭证可以切勿用于管理另一个帐户中的资源。

使用临时凭证还有其他原因,例如使用 MFA 令牌、没有 IAM 用户的联合登录以及减少您自己的权限集。


推荐阅读