HashiCorp Terraform 1.10 新增临时值功能以提升密钥管理

Terraform 1.10 发布:引入临时值以增强敏感信息保护

HashiCorp 发布了 Terraform 1.10,引入了临时值(ephemeral values)的概念,旨在保护在 Terraform 中配置基础设施时所需的敏感信息(如密码)。此前版本中,敏感信息通常以明文形式存储在 Terraform 的计划和状态文件中,存在安全风险。临时值的引入为这一问题提供了更安全的解决方案,确保敏感数据不会持久化到任何 Terraform 工件中。

临时值的关键特性

  • 临时输入和输出变量:允许标记仅需短暂存在的变量,例如短期令牌或会话标识符。
  • 临时资源:一种新的资源模式,可以在每个 Terraform 阶段单独创建或获取,用于配置对象,然后显式关闭。

示例与支持

博客通过 AWS Secrets Manager 的示例展示了临时值的使用。此前,通过数据源获取的密钥会存储在 Terraform 的计划和状态文件中,而临时值则可以在检索和使用密钥后不进行持久化存储。

临时资源已支持主要云服务提供商,包括 AWS、Azure 和 Kubernetes,但需提供商支持相关资源。目前,Google Cloud 的支持计划于 12 月 9 日发布。以下是各提供商的临时资源:

  • AWSaws_secretsmanager_secret_version, aws_lambda_invocation
  • Azureazurerm_key_vault_secret, azurerm_key_vault_certificate
  • Kuberneteskubernetes_token_request, kubernetes_certificate_signing_request

社区反应与讨论

LinkedIn 帖子中,Achim Christ 探讨了临时值的动机,解释了其作为加密 Terraform 状态文件替代方案的优势。HashiCorp 认为,加密整个状态文件并不理想,因为这会引入另一个需要管理的密钥,而传统的状态加密在 Terraform 环境被破坏时仍可能暴露敏感数据。

然而,一些评论者对此持保留态度。Alexandre Nédélec 在 Bluesky 上表示,密钥加密可能是更好的解决方案,并提到 Pulumi 和 OpenTofu 已经支持状态加密。

Christ 还提供了如何使用临时输入、输出和变量的示例,并解释了 Terraform 1.11 计划中的只写属性的用例。他认为,“临时性概念是对 Terraform 核心配置语言的有价值补充。”其他人也对此次发布表示积极反馈,Marko Bevc 在 Bluesky 上提到,临时资源和值为安全存储敏感值提供了更好的解决方案。

性能改进与其他更新

除了密钥管理的改进,Terraform 1.10 还包括一些性能优化,特别是在使用大量资源实例时,提升了 Terraform 计划和应用的执行效率。

OpenTofu 的未来

目前尚不清楚 Terraform 的分支 OpenTofu 是否会实现临时值,但其 GitHub 上已有一个开放问题用于跟踪此功能。

获取方式

Terraform 1.10 现已可供下载,并已集成到 HCP Terraform 中。

阅读 22
0 条评论