IBM Cloud Docs
创建根密钥

创建根密钥

使用 IBM® Key Protect for IBM Cloud® 通过 IBM Cloud 控制台创建根密钥。

使用 IBM® Key Protect for IBM Cloud® 通过 Key Protect API 以编程方式创建根密钥。

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

在一个区域中创建的加密密钥可用于对位于 IBM Cloud中的任何区域中的数据存储器进行加密。

在控制台中创建根密钥

创建服务实例后,完成以下步骤在 IBM Cloud 控制台。

如果启用 Key Protect 实例的双重授权设置,请记住添加到服务的任何密钥都需要两个用户的授权才能删除密钥。

  1. 登录到 IBM Cloud 控制台

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

  3. 从 IBM Cloud 资源列表中,选择您供应的 Key Protect 实例。

  4. 要创建新密钥,请单击 添加。 这将打开侧面板。 确保选择 创建密钥 选项。 请注意,要为此密钥设置 密钥别名密钥环旋转策略,必须单击 高级选项 选项卡以显示这些密钥。

如果您不是 Manager (或具有同等级别的许可权),那么不会显示 旋转策略 选项。

Specify the key's details:
说明创建密钥的设置。
设置 描述
类型 您希望在 Key Protect 中管理的 密钥类型。 缺省情况下选择根密钥。
密钥名称 人可读的显示名称,便于识别您的密钥。 长度必须在 2 到 90 个字符之间 (包括在内)。 为保护隐私,请确保密钥名称不包含个人可标识信息 (PII),例如,姓名或位置。 请注意,密钥名称不需要唯一。
密钥描述 可选。 描述是一种有用的方法,用于以无法使用别名或其名称的方式添加有关密钥的信息 (例如,描述其用途的短语)。 此描述必须至少为两个字符且不超过 240 个字符,并且以后不能更改。 为保护您的隐私,请勿使用个人数据(如您的姓名或所在位置)来描述您的密钥。
密钥别名 可选密钥别名 也是描述密钥的方法。 密钥最多可以有五个别名。
密钥环 可选密钥环 是允许根据需要独立管理这些分组的密钥分组。 每个密钥都必须是密钥环的一部分。 如果未选择密钥环,那么密钥将放在 default 密钥环中。 请注意,要将您正在创建的密钥放在密钥环中,您必须具有该密钥环上的 管理者 角色。 有关角色的更多信息,请查看 管理用户访问权
轮换策略 可选。 如果您持有 管理者 角色,那么可以在密钥创建时为密钥设置轮换策略。 如果缺省情况下存在用于在密钥上创建轮换策略的 实例策略,那么您还可以在创建密钥时将该策略覆盖到其他时间间隔。 请注意,如果您的实例启用了轮换策略,并且您在创建密钥时 禁用 该轮换策略,那么该策略仍会以 已禁用 状态写入密钥。 如果要稍后启用此策略,那么可以执行此操作。 请查看 创建密钥后设置轮换策略 以获取更多信息。

填写完密钥详细信息后,单击创建密钥以进行确认。

如果您知道要将密钥放入哪个密钥环中,并且您是该密钥环的 管理者,那么还可以浏览到“密钥环”面板,选择 ... 并单击 将密钥添加到密钥环。 这将打开您通过单击“密钥”页面上的 添加 (其中 密钥环 变量中填充了密钥环的名称) 所看到的同一面板。

服务中创建的密钥是 AES-CBC-PAD 算法支持的 256 位对称密钥。 为了提高安全性,密钥通过位于安全 IBM Cloud 数据中心且通过 FIPS 140-2 Level 3 认证的硬件安全模块 (HSM) 生成。

使用 API 创建根密钥

通过对以下端点执行 POST 调用来创建根密钥。

https://<region>.kms.cloud.ibm.com/api/v2/keys
  1. 检索认证凭证以使用服务中的密钥

  2. 通过运行以下 curl 命令来创建根密钥。

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.key+json" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -d '{
                "metadata": {
                    "collectionType": "application/vnd.ibm.kms.key+json",
                    "collectionTotal": 1
                },
                "resources": [
                    {
                        "type": "application/vnd.ibm.kms.key+json",
                        "name": "<key_name>",
                        "aliases": [alias_list],
                        "description": "<key_description>",
                        "expirationDate": "<expiration_date>",
                        "extractable": <key_type>
                    }
                ]
            }'
    

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

描述了使用Key ProtectAPI 添加根密钥所需的变量。API 添加根密钥所需的变量。
变量 描述
区域 需要。 地区缩写,如 us-south 或 eu-gb,表示 Key Protect 实例所在的地理区域。 有关更多信息,请参阅区域服务端点
IAM_token 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。 更多信息,请参阅 检索访问令牌
instance_ID 需要。 指定给您的 Key Protect 服务实例的唯一标识。 更多信息,请参阅 检索实例 ID
键环 ID 可选。 您希望新创建的密钥作为其一部分的目标密钥环的唯一标识。 如果未指定,那么头将自动设置为 "default",并且密钥将位于指定的 Key Protect 服务实例中的缺省密钥环中。 有关更多信息,请参阅 分组键
correlation_ID 用于跟踪和关联事务的唯一标识。
key_name 需要。 方便识别密钥的可读名称。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。
别名列表 分配给密钥的一个或多个唯一的人类可读别名。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。 每个别名必须是字母数字,区分大小写,并且不能包含除短划线 (-) 或下划线 (_) 以外的空格或特殊字符。别名不能是 V 4 UUID,并且不得是 Key Protect 保留名称 :allowed_ip,密钥,密钥,元数据,策略,策略,注册,注册,环,环,轮换,打包,解包,重新打包,版本和版本。 别名大小可以介于 2 到 90 个字符 (含) 之间。
key_description 密钥的扩展描述。 重要信息:为保护隐私,请勿将个人数据存储为密钥的元数据。
到期日期 可选。 密钥在系统中过期的日期和时间,采用 RFC 3339 格式(YYYY-MM-DD HH:MM:SS.SS,例如 2019-10-12T07:20:50.52Z )。 设置过期日期时要谨慎,因为过期日期创建的密钥会在过期后一小时内自动过渡到_停用_状态。 在这种状态下,只允许对按键进行解包、重包、旋转和删除操作。 停用的密钥不能用于加密(封装)新数据,即使在停用时进行了旋转。 轮换不会重置或延长有效期,也不允许更改日期。 建议在原客户根密钥 (CRK) 过期之前,使用新客户根密钥 (CRK) 重新加密使用过期或失效密钥加密的任何数据,以防止服务中断。 删除和恢复已停用的密钥不会使其回到_激活状态_。 如果省略 expiration_date 属性,则密钥不会过期。
key_type 布尔值,用于确定密钥资料是否可以离开服务。 将可提取属性设置为 false 时,服务会创建一个根密钥,可用于包裹或解除包裹操作。

设置过期日期时要谨慎,因为过期日期创建的密钥会在过期后一小时内自动过渡到_停用_状态。 在这种状态下,只允许对按键进行解包、重包、旋转和删除操作。 停用的密钥不能用于加密(封装)新数据,即使在停用时进行了旋转。 轮换不会重置或延长有效期,也不允许更改日期。 建议在原客户根密钥 (CRK) 过期之前,使用新客户根密钥 (CRK) 重新加密使用过期或失效密钥加密的任何数据,以防止服务中断。 删除和恢复已停用的密钥不会使其回到_激活状态_。 如果省略 expiration_date 属性,则密钥不会过期。

您可以使用 IBM Cloud Logs. 日志会使用 JSON 属性 responseData.expirationDateresponseData.daysToKeyExpire 对有过期日期的密钥和以下 action 值显示过期日期和剩余天数:kms.secrets.wrap, kms.secrets.unwrap, kms.secrets.rewrap, kms.secrets.read, kms.secrets.readmetadata, kms.secrets.create, kms.secrets-with-policy-overrides.createkms.secrets.expire。 此外,成功调用 GET /api/v2/keys 的 REST 会返回每个有过期日期的密钥的 expirationDate 属性。

为保护个人数据的机密性,在向服务添加密钥时,避免输入个人可标识信息 (PII),例如,姓名或位置。

成功的 POST api/v2/keys 响应会返回密钥的标识值以及其他元数据。 标识是指定给密钥的唯一标识,用于后续调用 Key Protect API。

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key+json",
        "collectionTotal": 1
    },
    "resources": [
        {
            "type": "application/vnd.ibm.kms.key+json",
            "id": "02fd6835-6001-4482-a892-13bd2085f75d",
            "name": "test-root-key",
            "aliases": [
                "alias-1",
                "alias-2"
              ],
            "description": "A test root key",
            "state": 1,
            "extractable": false,
            "crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
            "imported": false,
            "creationDate": "2020-03-12T03:37:32Z",
            "createdBy": "...",
            "algorithmType": "Deprecated",
            "algorithmMetadata": {
                "bitLength": "256",
                "mode": "Deprecated"
            },
            "algorithmBitSize": 256,
            "algorithmMode": "Deprecated",
            "lastUpdateDate": "2020-03-12T03:37:32Z",
            "keyVersion": {
                "id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
                "creationDate": "2020-03-12T03:37:32Z"
            },
            "dualAuthDelete": {
                "enabled": false
            },
            "deleted": false
        }
    ]
}

有关响应参数的详细说明,请参阅 Key Protect REST API 参考文档

下一步