amazon-web-services - AWS STS 使用案例和优势
问题描述
我对 STS 的用例和优势感到困惑。根据文档,它是临时获取一个角色以在 AWS 中执行 IAM 用户或服务无法使用的任务。请注意,我说的是编程访问(不是控制台访问)
例如,IAM 用户可能没有 S3 权限。据我了解:
他可以通过联系 AWS STS 获取临时访问密钥/令牌并获取 S3 的访问密钥和秘密。
使用这些临时凭证,他可以访问 S3。
我的问题是:
要从 AWS STS 获取临时凭证,他仍然需要他现有的访问令牌(永久)和机密,对吗?
如果他现有的访问令牌和秘密被泄露,攻击者仍然可以使用它首先从 STS 获取临时凭据,然后访问 S3,对吗?我了解攻击者将无法使用他的永久访问令牌和机密直接访问 S3。
我正试图围绕它的正确用例展开思考。我知道我很困惑,但也许我在循环思考。
提前致谢。
解决方案
他们并没有太多“联系 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 用户的联合登录以及减少您自己的权限集。
推荐阅读
- javascript - Redux 没有正确调用动作
- python - 如何使用嵌套循环但每次循环时将值增加 2
- codeigniter-3 - 如何在 Codeigniter 中分离公共模块和管理模块?
- salesforce - 执行 Open CTI JavaScript 库文件(Interaction.js 和 Opencti_min.js)的默认实例 URL
- google-apps-script - 如何使用谷歌脚本从gmail中多层的https中获取字符串?
- sql - 如何在 SQL 中进行渐进式递增每个 x 记录,其中每行的 x 可能不同?
- mysql - 选择同一航班上的所有乘客
- python - 替换任何不是“l”、“r”、“j”、“s”的字符
- jmeter - 如何在 jmeter 登录帖子请求中正确传递诸如“ś”之类的拉丁字符
- android - 如何在 Android 中使用 Retrofit 发送“form-data”参数