深入详解 IAM PassRole

作为 AWS 安全最佳实践,最好有缩小范围的 IAM 策略,以便用户只被授权对他们预期的资源执行操作。当您计划授权用户在 AWS 服务(例如,在 lambda 函数中访问其他资源)中运行某些代码时,这一点更为重要。在这种情况下,IAM 提供了一种方法来规范授权用户可以授予 AWS 服务的角色:IAM PassRole

假设我们有以下场景

1.Alice 是某个 AWS 账户的管理员。
2.Bob 是同一 AWS 账户的授权用户。
3.Alice 计划允许 Bob 管理一个 lambda 函数,该函数在 S3 存储桶中读取/写入数据。
4.Alice 需要向 Bob 提供一组 IAM 权限,以便 Bob:
有足够的权限来正确管理 lambda 函数。
5.没有获得足够多的权限。

最简单的方案

1.Alice 授予 Bob 创建/修改/调用某个 lambda 函数的权限。
2.使用给定的权限,Bob 编写他的 lambda 函数代码以在某个 S3 存储桶中执行读/写。
3.使用给定的权限,Bob 为他的 lambda 函数配置一个执行角色,以便它具有在 S3 存储桶中读/写的权限。
4.使用给定的权限,Bob 调用他的 lambda 函数并成功地在 S3 存储桶中读取/写入。

请注意,Bob 需要为他的 lambda 函数配置一个执行角色。这就是 lambda 函数如何访问其他资源的方式,以及事情可能会变得不可控制

权限控制漏洞

1.Alice 授予 Bob 创建/修改/调用某个 lambda 函数的权限。
2.使用给定的权限,Bob 编写他的 lambda 函数代码以读取不属于他的敏感 DDB 表。
3.使用给定的权限,Bob 为他的 lambda 函数配置一个执行角色,以便它有权从不属于他的敏感 DDB 表中读取。
4.使用给定的权限,Bob 调用他的 lambda 函数并窃取敏感数据。

因为 Bob 被授权创建/修改某个 lambda 函数,即使 Bob 本人没有被授权从敏感的 DDB 表中读取,他也可以使用他的 lambda 函数来获得对该 AWS 账户中敏感数据的额外访问权限。lambda 函数从其执行角色(由 Bob 配置)获得此访问权限。

引入 IAM PassRole

在AWS 文档中,根据需要明确调用 IAM PassRole 权限,以授予精细访问权限以管理 lambda 函数。实际上,IAM 默认情况下会阻止和失败为用户创建 lambda 函数,除非账户所有者明确授予此权限或完全管理员权限。

点赞(0)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部