仅将Cloudformation权限授予堆栈中的一部分资源

时间:2019-04-28 18:44:48

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

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

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

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

1 个答案:

答案 0 :(得分:0)

让我感到困惑的是,您如何将资源“锁定”到特定的堆栈。无论如何,请尝试以下方法:

具有仅具有Create *权限的角色(您可能也需要Describe *)。该角色用于创建新的堆栈,因此它不可能与已经创建的资源混为一谈。

在CloudFormation模板中,创建一个对您的资源具有Update * / Delete *权限的IAM角色。要修改堆栈时,请调用此角色。也许将其命名为!Sub $ {AWS :: StackName} -CfnRole。

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

??对您有用吗