【问题标题】:Grant Cloudformation permissions to only resources that are part of the stack仅向堆栈中的资源授予 Cloudformation 权限
【发布时间】:2019-09-17 11:52:05
【问题描述】:

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

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

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

【问题讨论】:

  • 一些 IAM 操作允许基于标签的限制。作为部分解决方案,或许可以根据栈名的CloudFormation标签来限制一些?

标签: amazon-web-services amazon-cloudformation amazon-iam


【解决方案1】:

让我感到困惑的是您希望如何将资源“锁定”到特定堆栈。不管怎样,试试这个:

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

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

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

??这对你有用吗

【讨论】:

    猜你喜欢
    • 2018-04-21
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2020-01-31
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多