微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何保护特定 Pulumi 堆栈中的资源不被删除 选项 1选项 2

如何解决如何保护特定 Pulumi 堆栈中的资源不被删除 选项 1选项 2

我使用 Pulumi 在 GCP 中启动我的基础设施。 Pulumi 具有堆栈功能,可帮助您构建相同类型 Pulumi 代码的多个副本。

所以我有与我们拥有的每个环境相对应的 dev/stage/prod 堆栈。

我想知道是否有一种方法可以保护生产堆栈,以便任何人都无法删除其中的任何资源。

我知道关于保护位标志,但这将适用于我不想要的所有堆栈。

解决方法

有几个选项可以实现这一点:

选项 1

一种选择是限制对 Pulumi 状态文件的访问,这样只有特权用户或实体(例如 continuous delivery pipeline)才能读取和写入{{1}状态,因此能够执行可能会破坏资源的操作。 Pulumi 控制台后端通过 stack permissions 在粒度级别支持此功能,并且可以通过特定提供商(例如 AWS IAM)的 IAM 功能限制其他状态后端的访问。

选项 2

另一个选项(可以与第一个选项结合使用)是根据堆栈名称以编程方式设置 protect 标志。以下是 Python 中的示例,但相同的概念适用于所有语言:

prod

您需要在堆栈中的每个资源上设置 import pulumi from pulumi_aws import s3 # only set `protect=True` for "prod" stacks prod_protected = False if "prod" == pulumi.get_stack(): prod_protected = True bucket = s3.Bucket("my-bucket",opts=pulumi.ResourceOptions( protect=prod_protected,# use `prod_protected` flag ),) 以保护 protect=... 堆栈中的所有资源。 Pulumi SDK 提供了一种通过堆栈转换在所有资源上一次设置此设置的方法。有一个执行堆栈转换以在资源 here 上设置标签的示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。