使用 Unified Key Orchestrator 为 Hyper Protect Crypto Services 设置 Terraform
IBM Cloud® 上的 Terraform 支持以可预测且一致的方式供应 IBM Cloud 服务,以便您可以遵循“基础架构即代码”(IaC) 原则快速构建复杂的多层云环境。 与使用 IBM Cloud CLI 或 API 和 SDK 类似,您可以使用 HashiCorp 配置语言 (HCL) 自动供应,更新和删除 Hyper Protect Crypto Services 实例。
本主题仅涵盖如何使用 Unified Key Orchestrator为 Hyper Protect Crypto Services 设置 Terraform。
在 IBM Cloud 解决方案上查找受管 Terraform? 试用 IBM Cloud® Schematics。 通过 Schematics,可以使用您熟悉的 Terraform 脚本语言,但不必担心设置和维护 Terraform 命令行和 IBM Cloud 提供程序插件。Schematics 还提供可从 IBM Cloud 目录轻松安装的预定义 Terraform 模板。
开始之前,请确保您具有创建和使用 Hyper Protect Crypto Services 资源所需的 访问权。
示例: 使用 Terraform 供应和初始化服务实例
完成以下步骤以使用 Terraform 创建和初始化 Hyper Protect Crypto Services 实例:
-
通过遵循 Terraform on IBM Cloud 入门教程,安装 Terraform CLI 并配置 IBM Cloud 提供程序插件。
该插件对用于供应,更新或删除 Hyper Protect Crypto Services 服务实例和资源的 IBM Cloud API 进行抽象。 首选 Terraform 版本为 0.13.x,0.14.x和 0.15.x。 在
versions.tf
文件中,需要将version
参数指定为1.29.0
。 -
设置加密单元管理员签名密钥。 您可以选择下列其中一种方法来创建管理员签名密钥:
-
使用 IBM Cloud Trusted Key Entry (TKE) CLI 插件
通过遵循 这些指示信息 来安装和配置 TKE CLI 插件之后,可以使用命令
ibmcloud tke sigkey-add
来创建管理员签名密钥。 签名密钥存储在本地工作站上受密码保护的文件中。 文件路径由环境变量CLOUDTKEFILES
指定。 -
使用第三方签名服务
第三方签名服务可用于创建,存储和访问 TKE CLI 插件和 Terraform 所使用的签名密钥。 要 在 TKE CLI 插件中启用签名服务,需要将本地工作站上的
TKE_SIGNSERV_URL
环境变量设置为运行签名服务的 URL 和端口号。 要在 Terraform 中启用签名服务,需要将资源块中的signature_server_url
参数设置为相同的值。
-
-
在与
versions.tf
相同的文件夹中创建 Terraform 配置文件main.tf
。 在此文件中,添加配置以执行相应的操作。以下模板是用于在
us-south
区域中供应具有 2 操作加密单元的 Hyper Protect Crypto Services 实例的示例配置文件。 此实例根据 Unified Key Orchestrator 定价套餐进行收费,并由 2 管理员进行初始化。 在分配给实例的恢复加密单元中自动生成主密钥。 签名密钥是使用 TKE CLI 插件创建的,并存储在本地受保护文件中。由于恢复加密单元当前在除 Madrid (
eu-es
) 以外的受支持区域中可用,因此在此区域中不支持使用 Terraform 来初始化 Hyper Protect Crypto Services 实例。 有关手动初始化的更多信息,请参阅 介绍服务实例初始化方法。resource ibm_hpcs hpcs { location = "us-south" name = "test-hpcs" plan = "hpcs-hourly-uko" units = 2 signature_threshold = 1 revocation_threshold = 1 admins { name = "admin1" key = "/cloudTKE/1.sigkey" token = "sensitive1234" } admins { name = "admin2" key = "/cloudTKE/2.sigkey" token = "sensitive1234" } } resource "ibm_iam_user_policy" "policy" { ibm_id = "user@ibm.com" roles = ["Manager"] resources { service = "test-hpcs" resource_instance_id = element(split(":", ibm_resource_instance.hpcs.id), 7) } }
在生产环境中,建议在应用 Terraform 的过程中提供签名密钥文件或签名服务令牌的密码,而不是将其以纯文本形式写入配置文件。 在这种情况下,将在运行 Terraform 命令时提示您输入认证密码或令牌。 在实例初始化之后,您为密码或令牌输入的值将存储在
.tfstate
文件中。 有关保护 Terraform 中敏感数据的更多信息,请参阅 状态下的敏感数据。下表列出了使用 Terraform 创建和初始化服务实例时受支持的参数:
表 1. 用于使用 Terraform 供应服务实例的受支持参数 参数 描述 name
必需。 Hyper Protect Crypto Services 实例的名称。 location
必需。 区域缩写,例如 us-south
,表示服务实例的操作加密单元所在的地理区域。 有关更多信息,请参阅区域和位置。 由于马德里 (eu-es
) 中没有可用的恢复加密单元,因此您无法在eu-es
区域中使用 Terraform 进行实例初始化。plan
必需。 服务实例的定价套餐。 units
必需。 服务实例的操作加密单元数。 有效值为 2 或 3。 failover_units
不适用。 Unified Key Orchestrator当前不支持跨区域高可用性。 service_endpoints
不适用。 缺省设置为 public-and-private
。tags
可选。 与实例关联的标记用于组织资源。 有关标记的更多信息,请参阅使用标记。 resource_group_id
可选。 要在其中组织和管理服务实例的资源组。 如果未指定值,那么缺省资源组为 Default
。signature_threshold
必需。 执行管理命令所需的管理员签名数。 有效值在范围 1-8 中。 您需要将其设置为至少 2 以启用定额认证。 revocation_threshold
必需。 在离开印记方式后除去管理员所需的管理员签名数。 有效值在范围 1-8 中。 admins
必需。 实例加密单元的管理员列表。 您最多可以设置 8 个管理员,并且该数字需要等于或大于您指定的阈值。 需要为每个管理员设置以下值: name:
管理员的名称。 它的长度不能超过 30 个字符。key:
- 如果您正在本地工作站上使用由 TKE CLI 插件创建的签名密钥文件并且未使用第三方签名服务,请指定要使用的签名密钥文件的绝对路径和文件名。
- 如果要使用签名服务来提供签名密钥,请根据签名服务定义指定签名密钥的名称。 密钥名称的字符串将附加到发送到签名服务的 URI ,并且必须仅包含由 RFC3986的 2.3 部分定义的未保留字符。
令牌:
- 如果您正在使用由 TKE CLI 插件创建的本地工作站上的签名密钥文件,并且未使用第三方签名服务, 指定管理员密码以访问相应的签名密钥文件。
- 如果要使用签名服务来提供签名密钥,请根据签名服务定义指定授权使用签名密钥的令牌。
注: token 参数是可选的。 如果未指定令牌,那么在运行 Terraform 命令时将提示您输入令牌值。 在实例初始化之后,您为 token 参数输入的值将存储在
.tfstate
文件中。 有关保护 Terraform 中敏感数据的更多信息,请参阅 状态下的敏感数据。signature_server_url
可选。 运行签名服务的 URL 和端口号。 如果要使用第三方签名服务来提供管理员签名密钥,那么需要指定此参数。 如果在
main.tf
文件中管理多个服务实例,请确保为每个实例设置相同的signature_server_url
参数。 否则,您将无法成功执行这些操作。 -
使用以下命令初始化 Terraform CLI。
terraform init
-
使用以下命令创建 Terraform 执行计划。 Terraform 执行计划概述了在帐户中创建 Hyper Protect Crypto Services 实例时需要运行的所有操作。
terraform plan
-
通过应用 Terraform 创建并初始化 Hyper Protect Crypto Services 实例。
terraform apply
-
检查是否已从 IBM Cloud 资源列表创建并初始化 Hyper Protect Crypto Services 实例。
-
验证是否成功分配了访问策略。 有关更多信息,请参阅 在 UI 中查看分配的访问权。
后续步骤?
有关使用 Terraform 管理 Hyper Protect Crypto Services 实例以及 Unified Key Orchestrator的更多信息,请参阅以下 Terraform 文档: