amazon-web-services - 仅向堆栈中的资源授予 Cloudformation 权限
问题描述
在我的公司,我们的 CI/CD 管道只能通过假定的 IAM 角色连接到 AWS。我试图锁定这个角色,以便它只能更新堆栈中的资源,以避免错误地更改由另一个团队管理的资源。
我在这里遇到了一些鸡或蛋的情况。似乎为了创建一个角色来限制对我的堆栈创建的资源的访问,我需要这些资源的 ID,这意味着需要创建堆栈。我可以使用管理员权限运行堆栈一次,然后提取资源 ID,然后将其放入 CI/CD 中,但这似乎违背了目的。
我理想的解决方案是能够创建一组权限,允许 CloudFormation 创建一组固定的资源类型,然后仅向作为堆栈的一部分创建的那些资源授予额外权限。这可能吗?或者对于如何管理 CI/CD 的权限有不同的理念?
解决方案
让我感到困惑的是你想如何将资源“锁定”到特定的堆栈。无论如何,试试这个:
拥有一个仅具有 Create* 权限的角色(您可能也需要 Describe*)。此角色用于创建新堆栈,因此它不可能干预已创建的资源。
在您的 CloudFormation 模板中,创建一个对您的资源具有更新*/删除*权限的 IAM 角色。当你想修改堆栈时调用这个角色。也许给它一个名字!Sub ${AWS::StackName}-CfnRole。
您还需要给它一个保留的删除策略,并在清理堆栈后手动删除它。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html。否则,当您调用该角色来删除堆栈时,您将遇到权限被拒绝错误,因为该角色几乎肯定会是第一个被删除的资源。
?? 那对你有用吗
推荐阅读
- bash - 在 bash 别名设置中指定输入参数的范围
- php - $_SESSION 变量未设置值
- html - 通过共享网站链接共享信息
- android - 从广播接收器在 AlarmManager 事件上启动 Activity
- java - 如何根据日期对“MMM YYYY”日期字符串进行排序?
- javascript - 为什么我的 Chrome 扩展在性能分析期间更快?
- javascript - 如何将“标题”和“艺术家”发送到外部 xml 文档?
- javascript - 带有 Next.js 11 脚本的 TruConversion 热图脚本
- vb.net - 在包含结构的模块中创建表
- firebase - 在 onMessageOpenedApp 和 onBackgroundMessage 中不显示 Flutter Firebase 通知