安全方面的最佳做法

本文档提供了有关如何安全地将 Terraform 用于 Google Cloud 的准则和建议。Terraform 需要对您的云基础架构的敏感访问权限才能运行。遵循安全性方面的最佳实践有助于最大限度地降低相关风险并提高整体云安全性。

本指南未介绍 Terraform。如需了解如何将 Terraform 与 Google Cloud 搭配使用,请参阅 Terraform 使用入门

使用远程状态

对于 Google Cloud 客户,我们建议使用 Cloud Storage 状态后端。此方法锁定了状态,允许作为团队进行协作。它还将状态和所有可能的敏感信息与版本控制分开。

确保只有构建系统和具有高度特权的管理员才能访问用于远程状态的存储桶。

为防止意外将开发状态提交到源代码控制系统,请为 Terraform 状态文件使用 gitignore

加密状态

虽然 Google Cloud 存储桶已经过静态加密,但您可以使用客户提供的加密密钥提供另一层保护。为此,请使用 GOOGLE_ENCRYPTION_KEY 环境变量。即使状态文件中不应包含任何 Secret,也请始终将状态加密作为额外的防御措施。

不要将密文存储在状态中

Terraform 中有许多资源和数据提供商在状态文件中以明文形式存储密文值。请尽可能避免将密文存储在状态中。以下是以明文形式存储密文的一些提供商示例:

标记敏感输出

与其尝试手动加密敏感值,不如依靠 Terraform 对敏感状态管理的内置支持。将敏感值导出到输出时,请确保将这些值标记为敏感

确保职责分离

如果您无法从用户无权访问的自动化系统运行 Terraform,请通过分离权限和目录来履行职责分离。例如,网络项目对应于网络 Terraform 服务账号或其访问权限仅限于此项目的用户。

运行应用前检查

在自动化流水线中运行 Terraform 时,请使用 gcloud terraform vet 等工具针对政策检查计划输出,然后再应用计划。这样做可以提前检测安全回归。

运行持续审核

执行 terraform apply 命令后,请运行自动化安全检查。这些检查有助于确保基础架构不会偏移到不安全的状态。以下工具是此类检查的有效选择:

后续步骤