为 Secrets Manager 设置 Terraform
IBM Cloud 上的 Terraform 能够以可预测和一致的方式创建 IBM Cloud 服务,因此您可以按照基础设施即代码( IaC )原则快速构建复杂的多层云环境。 与使用 IBM Cloud CLI 或 API 和 SDK 类似,您也可以通过 HashiCorp 配置语言 (HCL) 自动创建、更新和删除 Secrets Manager 实例。
正在寻找 IBM Cloud 上的 Terraform 托管解决方案? 试用 IBM Cloud® Schematics. 通过 Schematics,可以使用自己熟悉的 Terraform 脚本语言。 IBM Cloud Schematics 还提供预定义的 Terraform 模板,可从 目录中轻松安装。IBM Cloud
安装 Terraform 并配置 Secrets Manager 的资源
在使用 Terraform 创建授权之前,请确保完成以下步骤:
- 确保您具有创建和使用 Secrets Manager 资源所需的 访问权。
- 安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供程序插件。 有关更多信息,请参阅 Terraform 入门 IBM Cloud 教程。 该插件对用于完成此任务的 IBM Cloud API 进行抽象。
- 创建一个名为
main.tf的Terraform配置文件。 在此文件中,您使用 HashiCorp 配置语言来定义资源。 有关更多信息,请参阅 Terraform 文档。
-
完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录。
terraform init -
使用
main.tf文件中的ibm_resource_instance资源参数创建 Secrets Manager 实例。- 以下示例中的 Secrets Manager 实例名为
secrets-manager-london,并且是使用eu-gb区域中的试用计划创建的。 将在 IAM 访问策略中为user@ibm.com分配管理员角色。 对于其他受支持的区域,请参阅 区域和端点。 计划选项包括trial和standard。
resource "ibm_resource_instance" "sm_instance" { name = "Secrets Manager-London" service = "secrets-manager" plan = "trial" location = "eu-gb" timeouts { create = "60m" delete = "2h" }, }要查看受支持属性的完整列表,请参阅
ibm_resource_instance。(可选) 您可以通过运行以下命令,创建数据源以从 IBM Cloud检索有关现有 Secrets Manager 实例的信息。
data "ibm_resource_instance" "sm_resource_instance" { name = "Secrets Manager-London" location = "eu-gb" service = "secrets-manager" }有关受支持属性的完整列表,请参阅
ibm_resource_instance。 - 以下示例中的 Secrets Manager 实例名为
-
从
main.tf文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构。- 运行
terraform plan以生成 Terraform 执行计划来预览建议的操作。
terraform plan- 运行
terraform apply以创建计划中定义的资源。
terraform apply - 运行
-
为要在创建资源时使用的 Secrets Manager 实例定义本地值。
locals { instance_id = data.ibm_resource_instance.sm_resource_instance.guid region = data.ibm_resource_instance.sm_resource_instance.location } -
从 UI 中的 IBM Cloud 资源列表中,选择您创建的 Secrets Manager 实例并记下实例标识。
-
验证是否成功分配了访问策略。 有关更多信息,请参阅 在控制台中查看分配的访问权。
管理资源漂移
通过 Terraform,您可以使用声明式配置文件安全且可预测地管理基础架构的生命周期。 作为代码管理基础架构时存在的一个挑战是漂移。 在应用 Terraform 配置更改之外添加,删除或修改资源时会发生漂移。 例如,当私钥到期或轮换时。 为了避免漂移,请始终使用 Terraform 来管理最初使用 Terraform 创建的资源。
Terraform 状态文件是 Terraform 管理的所有资源的记录。 您不得对由 Terraform 控制的资源进行手动更改,因为这样做会使状态文件从实际基础结构变为不同步或“漂移”。 如果您的状态和配置与基础架构不匹配,那么 Terraform 会尝试协调基础架构,这可能会无意中破坏或重新创建资源。
使用 Secrets Manager Terraform 提供程序时,可能会发生漂移,例如:
- 密钥到期
- 私钥自动旋转
- 对 Terraform 控制的 Secret Manager 资源的外部更改
在设计 Terraform 项目时,请遵循 Terraform 管理漂移和生命周期变更的最佳实践,以避免无意中破坏或重新创建 Secrets Manager 资源。
后续步骤?
现在,您已使用 Terraform 在 IBM Cloud上成功创建第一个 Secrets Manager 服务实例,您可以在 Terraform 注册表中查看 Secrets Manager 资源和数据源。 您还可以通过遵循“如何操作”部分中包含的 Terraform 步骤来查看如何管理 Secrets Manager 资源。 例如,您可以遵循有关如何使用 Terraform 创建 任意私钥 的指示信息。
对于生产部署,可考虑使用 IBM Cloud® Secrets Manager 提供企业就绪配置。 了解 Terraform IBM 模块。