Terraform 推出基于 HCL 的策略即代码框架 tfpolicy
HashiCorp 发布了 tfpolicy,一套基于 HCL 的策略即代码(Policy as Code)框架,目前已在 HCP Terraform 中以公开 Beta 形式提供。tfpolicy 是为简化并现代化 Terraform 的基础设施治理,将策略的编写和执行直接集成到 Terraform 工作流中,无需再依赖独立的策略工具或专用语言。
HashiCorp 将 tfpolicy 定义为一套声明式、基于 HCL 的策略即代码框架,使平台工程团队能够使用熟悉的语言编写和执行策略,同时引入面向现代基础设施的新一代治理能力。
策略即代码能够帮助企业将治理要求代码化,实现合规检查自动化,并提升整体安全水平。
目前,HashiCorp Sentinel 和 Open Policy Agent(OPA) 等方案通常作为独立的策略层存在,在基础设施部署过程中根据策略规则执行校验。
不过,HashiCorp 认为,这类方案往往难以结合一些关键的外部上下文信息,例如资源之间的关系,而这些关系会随着基础设施生命周期不断发生变化。与此同时,现代基础设施越来越多地跨越多个云平台和服务,其治理对象已不再是单个资源,而是由大量资源组成的整体系统。tfpolicy 正是为应对这种复杂性而设计。
tfpolicy 与 Terraform 深度集成,并采用 HCL——也就是 Terraform 本身用于定义基础设施的配置语言。这种设计减少了开发人员在不同工具和语言之间切换的成本,使团队能够在已有的 Terraform 工作流中完成策略定义和执行。
这种深度集成,也让策略治理更加贴近基础设施生命周期。除了在部署前进行策略检查之外,tfpolicy 还支持部署后继续执行策略评估。这意味着,团队不仅能够基于 Terraform Plan 中的预期变更进行策略校验,还可以依据资源的实际运行状态执行治理,而无需离开 Terraform 日常工作流程。
tfpolicy 还带来了多项新的能力。例如,它支持基于资源之间的关系执行策略判断,而不仅仅针对单个资源;同时还支持通过 Data Source Lookup 获取外部信息,将更多上下文纳入策略评估过程。此外,tfpolicy 还关注软件供应链安全。它允许企业对 Terraform Provider 和 Module 的下载进行统一控制,从而建立经过批准的依赖管理机制,避免团队误用未经授权的 Provider 或 Module。
由于与 Terraform 深度集成,tfpolicy 还支持在部署完成后持续评估策略。这使企业能够发现那些只有在资源真正创建完成后才会暴露出来的违规情况,而这类问题往往无法在部署前检测到。
HashiCorp 表示,Terraform 将继续支持 Sentinel,但未来 tfpolicy 将成为官方重点推荐的策略框架。与此同时,公司还推出了一款 AI Agent,可帮助用户生成和测试 tfpolicy 配置,并支持将现有的 Sentinel 策略自动迁移到 tfpolicy。
不过,HashiCorp 也指出,tfpolicy 的完整能力目前仅能在 HCP Terraform 中使用。在托管环境下,它能够与整个基础设施生命周期深度集成,包括规划、部署以及部署后的策略执行。相比之下,独立 CLI 的能力要有限得多,主要用于本地策略验证和测试。虽然 CLI 适合开发和迭代策略,但无法提供 HCP Terraform 中完整的集成、自动化以及策略执行能力。
作为背景,HashiCorp Sentinel 是 HashiCorp 推出的内置策略即代码框架,可与 HCP Terraform 原生集成,并通过 Sentinel 自有的领域特定语言(DSL)编写细粒度、可测试的策略规则。Open Policy Agent(OPA) 则是一款开源、云原生、与厂商无关的策略引擎,目前已支持超过 100 种不同系统和平台的集成。
查看英文原文:Terraform Introduces tfpolicy, an HCL-based Policy-as-Code Framework - InfoQ