使用配置文件创建 Lambda 或 EC2 时出现 403 错误有很多疑问。有一站式地点清楚解释原因吗?
使用配置文件创建 Lambda 函数或 EC2 的人需要 IAM:PassRole 权限。 403的原因大多是没有权限造成的。
如果用户具有管理员访问角色且已授予 IAM:PassRole 权限,我们就不会遇到此问题。 CI/CD 使用的 AWS 账户或角色将拥有该角色或权限,因此不会出现问题。
出于安全原因,开发人员不会拥有此类角色,也不会在企业环境中获得IAM:PassRole权限。
每当 AWS 服务承担(使用)IAM 角色时,该服务必须具有 iam:PassRole 权限才能授予使用该角色的权限。这需要防止用户获得过多的权限。
例如,想象一个启动 Amazon EC2 实例的普通(非管理员)用户。启动实例时,他们可以指定要分配给该实例的 IAM 角色。如果允许该用户选择任何 IAM 角色,他们可以选择管理员角色并将其分配给 EC2 实例。然后,他们可以登录实例并使用凭据以管理员身份进行 API 调用。这是不需要的“权限升级”。
但是,DEV 环境中的开发人员确实需要并尝试使用来自例如的配置文件创建 Lambda 或 EC2。未授予 IAM:PassRole 权限的 AWS 控制台。因此他们遇到403并感到困惑。
在大多数情况下,您不希望开发人员将安全团队的角色与他们正在创建的资源相关联,但您仍然希望允许他们创建和传递业务应用程序角色。
您可能希望让开发人员能够为其应用程序创建角色,只要它们受到安全管理即可。您可以通过验证这些角色是否附加了权限边界以及它们是否是在特定 IAM 角色路径中创建来完成此操作。然后,您可以允许开发人员仅传递该路径中的角色。