策略包现在可以访问 Pulumi ESC 环境

发布: (2026年4月23日 GMT+8 08:00)
5 分钟阅读

Source: Pulumi Blog

请提供您希望翻译的具体文本内容,我将为您翻译成简体中文并保持原有的格式、Markdown 语法以及技术术语不变。谢谢!

问题

Pulumi policy packs 让您能够在整个基础设施中强制执行规则,但有些策略需要的不仅仅是它们评估的资源输入。例如:

  • 需要访问外部合规 API 的策略必须提供 API 令牌。
  • 成本强制策略可能需要为开发环境和生产环境设置不同的支出阈值。
  • 访问控制策略可能需要引用内部服务注册表。

此前,这些值只能硬编码在策略组配置中,或通过单独的流程进行管理,导致:

  • 安全风险: 凭证以明文形式存储。
  • 运维负担: 更新凭证需要触及所有使用该凭证的策略组。
  • 缺乏环境隔离: 相同的值在所有环境中统一使用,无法针对不同环境进行配置差异化。

新功能

策略包现在可以引用 Pulumi ESC 环境,就像堆栈已经可以做到的一样。当你在策略组中将 ESC 环境附加到策略包时,该环境中的值将在运行时提供给你的策略——无论你是在运行预防性策略还是审计策略。

这使得策略包可以使用 ESC 来处理:

  • Secrets: 通过 ESC 的机密管理处理的 API 令牌、服务凭证以及其他敏感值,包括来自 AWS、Azure 和 GCP 等提供商的动态凭证。
  • Configuration: 环境特定的阈值、允许的地区、服务白名单以及其他在不同环境中会变化的策略参数。

工作原理

您在策略组内的策略包上配置 ESC 环境引用。运行时,这些环境中的值会被解析,并通过策略包的配置提供给您的策略使用。

示例 ESC 环境

values:
  compliance:
    apiToken:
      fn::secret: xxxxxxxxxxxxxxxx
    costThreshold: 5000

policyConfig:
  cost-compliance:
    maxMonthlyCost: ${compliance.costThreshold}
    apiEndpoint: https://compliance.example.com
    apiToken: ${compliance.apiToken}

policyConfig 属性的作用类似于堆栈的 pulumiConfig。每个策略名称下嵌套的值会在运行时作为该策略的配置提供。机密信息保持加密状态,仅在环境被解析时才会解密。

您还可以使用 environmentVariables 属性,将值注入为策略运行时的环境变量,遵循与堆栈环境变量相同的模式。

示例:合规 API 验证

考虑一个策略,在每个新资源被部署之前,先对其进行外部合规 API 的验证。该 API 需要身份验证令牌,并返回资源配置是否符合贵组织的合规标准。

Before:

  • API 令牌以明文形式存放在策略组配置中。
  • 轮换令牌意味着要更新每个策略组。
  • 没有凭证访问的审计记录。
  • 无法为预发布和生产环境使用不同的 API 端点。

After:

  • API 令牌存放在 ESC 环境中。
  • 集中轮换: 只需更新一次令牌,所有引用该策略组的地方都会自动获取更改。
  • 访问控制: ESC 的基于角色的访问控制决定谁可以查看或修改凭证。
  • 审计记录: 对环境的每一次访问都会被记录。
  • 环境隔离: 为预发布和生产使用不同的 ESC 环境,从而使用不同的合规端点。

开始使用

  1. 创建 一个包含策略配置和机密的 ESC 环境。
  2. 环境通过 Pulumi Cloud 控制台 附加 到策略组中的策略包。
  3. 更新 您的策略,以读取环境提供的配置值。

了解更多

  • policyConfig 参考
  • Pulumi ESC 文档
  • Policy packs 文档
  • 开始使用 Pulumi ESC
0 浏览
Back to Blog

相关文章

阅读更多 »

构建 Ansible 卓越中心

随着 Ansible 的采用不断增长,可能会出现一个挑战:组织如何在整个企业范围内跟踪自动化工作?常见的解决方案是建立…