IBM Cloud Docs
导入根密钥

导入根密钥

您可以使用 IBM Cloud® Hyper Protect Crypto Services 通过使用 UI 或通过编程方式使用 Hyper Protect Crypto Services 密钥管理服务 API 来保护现有根密钥。

根密钥是用于保护云中已加密数据的安全性的对称密钥打包密钥。 有关导入根密钥的更多信息,请参阅 将加密密钥带到云端

通过查看创建和加密密钥资料的选项提前计划导入密钥。 为了提高安全性,您可以使用 导入令牌 在将密钥材料带入云端之前对其进行加密。

使用 UI 导入根密钥

创建服务的实例后,请完成以下步骤以使用 Hyper Protect Crypto Services GUI 来添加现有根密钥。

  1. 登录 UI

  2. 菜单>资源列表查看您的资源列表。

  3. 从 IBM Cloud 资源列表,选择 Hyper Protect Crypto Services 的已供应实例。

  4. 要导入密钥,请在侧边菜单中选择 KMS 密钥 选项卡。

  5. 在“密钥”表中,单击 添加密钥,然后选择 导入密钥

    指定密钥的详细信息:

    表 1. 描述用于导入根密钥的设置
    设置 描述
    密钥类型 要在 Hyper Protect Crypto Services 中管理的密钥类型。 从密钥类型列表中,选择 根密钥
    密钥名称 密钥的人类可读的唯一别名,以便可轻松识别密钥。 为保护隐私,请确保密钥名称不包含个人可标识信息 (PII),例如,姓名或位置。
    密钥别名 (可选) 要分配给密钥以方便识别的一个或多个唯一的人类可读别名。 别名大小可以是 2-90 个字符。 最多可以为密钥设置五个密钥别名,每个别名以逗号分隔。

    注: 每个别名必须是字母数字,区分大小写,并且不能包含空格或除短划线 (-) 或下划线 (_) 以外的特殊字符。别名不能是 V 4 UUID,也不能是 Hyper Protect Crypto Services 保留名称: allowed_ipkeykeysmetadatapolicypoliciesregistrationregistrationsringringsrotatewrapunwraprewrapversionversions

    密钥环标识 从包含现有密钥环的列表中选择密钥环。 如果未指定密钥环,那么该密钥将添加到 default 密钥环。 有关密钥环的更多信息,请参阅 管理密钥环
    密钥资料

    要在服务中存储和管理的 Base64 编码的密钥资料,例如现有密钥打包密钥。 有关更多信息,请参阅 Base64 编码密钥资料。 确保密钥资料满足以下需求:

    • 密钥的长度必须为 16,24 或 32 个字节,对应于 128,192 或 256 位。
    • 密钥必须是 base64-encoded。
    到期日期 (可选) 设置密钥到期的日期和时间。 在到期日期之后,密钥将进入“已取消激活”状态。 有关密钥状态的更多信息,请参阅 监视加密密钥的生命周期
    描述 (可选)为您的密钥添加扩展描述。 长度需要为 2 到 240 个字符。
  6. 填写完密钥详细信息后,点击导入密钥确认。

使用 API 导入根密钥

通过对以下端点进行 POST 调用,将对称密钥导入到 Hyper Protect Crypto Services。

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys
  1. 检索服务和认证凭证以与服务中的密钥一起使用

  2. 使用以下 cURL 命令调用 Hyper Protect Crypto Services 密钥管理服务 API:

    curl -X POST \
      https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'content-type: application/vnd.ibm.kms.key+json' \
      -d '{
     "metadata": {
       "collectionType": "application/vnd.ibm.kms.key+json",
       "collectionTotal": 1
     },
     "resources": [
       {
       "type": "application/vnd.ibm.kms.key+json",
       "name": "<key_alias>",
       "description": "<key_description>",
       "expirationDate": "<YYYY-MM-DDTHH:MM:SS.SSZ>",
       "payload": "<key_material>",
       "extractable": <key_type>
       }
     ]
    }'
    

    根据下表替换示例请求中的变量。

    表 2. 描述使用 API 添加根密钥所需的变量
    变量 描述
    region 必需。 地区缩写,例如 us-south 或者 au-syd,代表您的Hyper Protect Crypto Services实例位于。 有关更多信息,请参阅区域服务端点
    port 必需。 API 端点的端口号。
    IAM_token 必需。 您的 IBM Cloud 访问令牌。 在 cURL 请求中包含 IAM 令牌的完整内容,包括 Bearer 值。 有关详细信息,请参阅For more information, see 检索访问令牌
    instance_ID 必需。 分配给您的Hyper Protect Crypto Services实例。 有关更多信息,请参阅 检索实例标识
    correlation_ID 用于跟踪和关联事务的唯一标识。
    key_alias 必需。 密钥的人类可读的唯一名称,以便可轻松识别密钥。 为保护隐私,请不要将个人数据存储为密钥的元数据。
    key_description 密钥的扩展描述。 为保护隐私,请不要将个人数据存储为密钥的元数据。
    YYYY-MM-DD

    HH:MM:SS.SS

    密钥在系统中到期的日期和时间(RFC 3339 格式)。 如果 expirationDate 省略属性,密钥不会过期。
    key_material

    要在服务中存储和管理的 Base64 编码的密钥资料,例如现有密钥打包密钥。 有关更多信息,请参阅 Base64 编码密钥资料。 确保密钥资料满足以下需求:

    • 密钥的长度必须为 16,24 或 32 个字节,对应于 128,192 或 256 位。
    • 密钥必须是 base64-encoded。
    key_type 布尔值,用于确定密钥资料是否可以离开服务。 当您设置 extractable 归因于 false,服务会将该密钥指定为根密钥,您可以使用它来 wrap 或者 unwrap 运营。

    为保护个人数据的机密性,在向服务添加密钥时,避免输入个人可标识信息 (PII),例如,姓名或位置。 有关 PII 的更多示例,请参阅部分2.2的 NIST 特别出版物 800-122

    成功的 POST api/v2/keys 响应会返回密钥的标识值以及其他元数据。 ID 是分配给您的密钥的唯一标识符,用于后续调用Hyper Protect Crypto Services密钥管理服务API。

  3. 可选:通过运行以下调用来浏览 Hyper Protect Crypto Services 服务实例中的密钥,以验证是否添加了密钥。

    curl -X GET \
    https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
    -H 'accept: application/vnd.ibm.collection+json' \
    -H 'authorization: Bearer <IAM_token>' \
    -H 'bluemix-instance: <instance_ID>'
    

使用 CLI 导入根密钥

完成以下步骤以使用集成在 Hyper Protect Crypto Services中的 Key Protect CLI 来导入根密钥:

  1. 设置 Key Protect CLI

  2. 使用以下命令导入根密钥:

    ibmcloud kp key create
    

    您可以在 Key Protect CLI 参考 中找到此命令的更多参数。

Base64 编码密钥资料

导入现有根密钥时,需要包含要在服务中存储和管理的加密密钥资料。

使用 OpenSSL 对现有密钥资料进行编码

  1. 下载并安装 OpenSSL

  2. Base64 通过运行以下命令对密钥材料字符串进行编码:

    $ openssl base64 -in <infile> -out <outfile>
    

    根据下表替换示例请求中的变量。

    表 3. 描述对密钥资料进行 base64 编码所需的变量
    变量 描述
    infile 密钥材料字符串所在的文件的名称。 确保密钥的长度为 16,24 或 32 字节,对应于 128,192 或 256 位。
    outfile 运行命令时将在其中创建 base64-encoded 密钥资料的文件的名称。

    如果要直接在命令行而不是文件中输出 base64 材料,请运行命令 openssl enc -base6<<< '<key_material_string>',其中 key_material_string 是导入的密钥的密钥材料输入。

使用 OpenSSL 来创建和编码新的密钥资料

  1. 下载并安装 OpenSSL

  2. Base64 通过运行以下命令对密钥材料字符串进行编码:

    $ openssl rand <byte_length> -base64
    

    将示例请求中的 byte_length 变量替换为键的长度 (以字节计)。 可接受的字节长度为 16,24 或 32 字节,对应于 128,192 或 256 位。

下一步