IBM Cloud Docs
使用 Unified Key Orchestrator 为 Hyper Protect Crypto Services 设置 Terraform

使用 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 实例:

  1. 通过遵循 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

  2. 设置加密单元管理员签名密钥。 您可以选择下列其中一种方法来创建管理员签名密钥:

    • 使用 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 参数设置为相同的值。

  3. 在与 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 参数。 否则,您将无法成功执行这些操作。

  4. 使用以下命令初始化 Terraform CLI。

    terraform init
    
  5. 使用以下命令创建 Terraform 执行计划。 Terraform 执行计划概述了在帐户中创建 Hyper Protect Crypto Services 实例时需要运行的所有操作。

    terraform plan
    
  6. 通过应用 Terraform 创建并初始化 Hyper Protect Crypto Services 实例。

    terraform apply
    
  7. 检查是否已从 IBM Cloud 资源列表创建并初始化 Hyper Protect Crypto Services 实例。

  8. 验证是否成功分配了访问策略。 有关更多信息,请参阅 在 UI 中查看分配的访问权

后续步骤?

有关使用 Terraform 管理 Hyper Protect Crypto Services 实例以及 Unified Key Orchestrator的更多信息,请参阅以下 Terraform 文档: