首页 > 解决方案 > 仅向堆栈中的资源授予 Cloudformation 权限

问题描述

在我的公司,我们的 CI/CD 管道只能通过假定的 IAM 角色连接到 AWS。我试图锁定这个角色,以便它只能更新堆栈中的资源,以避免错误地更改由另一个团队管理的资源。

我在这里遇到了一些鸡或蛋的情况。似乎为了创建一个角色来限制对我的堆栈创建的资源的访问,我需要这些资源的 ID,这意味着需要创建堆栈。我可以使用管理员权限运行堆栈一次,然后提取资源 ID,然后将其放入 CI/CD 中,但这似乎违背了目的。

我理想的解决方案是能够创建一组权限,允许 CloudFormation 创建一组固定的资源类型,然后仅向作为堆栈的一部分创建的那些资源授予额外权限。这可能吗?或者对于如何管理 CI/CD 的权限有不同的理念?

标签: amazon-web-servicesamazon-cloudformationamazon-iam

解决方案


让我感到困惑的是你想如何将资源“锁定”到特定的堆栈。无论如何,试试这个:

拥有一个仅具有 Create* 权限的角色(您可能也需要 Describe*)。此角色用于创建新堆栈,因此它不可能干预已创建的资源。

在您的 CloudFormation 模板中,创建一个对您的资源具有更新*/删除*权限的 IAM 角色。当你想修改堆栈时调用这个角色。也许给它一个名字!Sub ${AWS::StackName}-CfnRole。

您还需要给它一个保留的删除策略,并在清理堆栈后手动删除它。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html。否则,当您调用该角色来删除堆栈时,您将遇到权限被拒绝错误,因为该角色几乎肯定会是第一个被删除的资源。

?? 那对你有用吗


推荐阅读