IBM Cloud Docs
使用密钥环将密钥分组到一起

使用密钥环将密钥分组到一起

您可以使用 IBM® Key Protect for IBM Cloud® 创建 为需要相同 IAM 访问权限的目标用户组创建一组密钥。访问权限的目标用户组创建一组密钥。

作为帐户管理员,您可以将密钥捆绑到 Key Protect 服务实例将组称为“密钥环”。 密钥环是服务实例中所有需要相同 IAM 访问许可权的密钥的集合。 例如,如果您有一组需要特定密钥组的特定类型访问权的团队成员,那么可以为这些密钥创建密钥环,并将相应的 IAM 访问策略分配给目标用户组。 分配有密钥环访问权的用户可以创建和管理密钥环中存在的资源。

当一个业务单位有权访问另一个业务单位不应拥有的一组密钥时,密钥环也很有用。 帐户管理员可以为每个业务单位创建密钥环,并向相应用户 分配 相应级别的访问权。 在帐户管理员希望将特定密钥环的平台管理委托给其他人的情况下,他们可以为用户分配一个 密钥环级别的平台管理员角色。 然后,子管理员将能够管理密钥环并将访问权授予相应的用户。

您可以授予对密钥环的访问权, Key Protect 实例 (通过使用 IBM Cloud 控制台,IAM API 或 IAM CLI。

在为您的 Key Protect 例如,请记住 注意以下几点

  • 每个 Key Protect 实例都随附一个缺省密钥环。 每个新创建的 Key Protect 实例都随附了标识为 default 的生成密钥环。 所有未与另行指定的密钥环关联的密钥都存在于缺省密钥环中。

  • 密钥环可以保存标准密钥和根密钥。 密钥环可以同时包含标准密钥和根密钥。 对于密钥环中可以存在的密钥数量没有限制。

  • 一个密钥一次只能是一个密钥环的一部分。 一个密钥只能是一个密钥环的一部分。 密钥环分配在密钥创建时发生。 如果创建时未传递密钥环标识,那么密钥将是 default 密钥环的一部分。

每个服务实例的最大密钥环数为 50。

使用 UI 创建密钥环

您必须具有服务“写入者”或“管理者”角色才能创建密钥环。

制作钥匙圈

  1. 单击左侧导航中的 密钥环
  2. 在“密钥环”面板中,单击 创建 按钮。
  3. 创建密钥环 选项卡中,遵循有关允许的字符的指示信息,为新密钥环提供名称。 然后点击创建

创建密钥环后,新的密钥环将显示在密钥环列表中,并且您可以向其传输密钥或为其创建密钥。

使用 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/key_rings/<key_ring_id>" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "correlation-id: <correlation_ID>"
    

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

描述使用Key ProtectAPI 创建钥匙圈所需的变量。API 创建钥匙圈所需的变量。
变量 描述
区域 需要。 区域缩写,如 us-southeu-gb,表示 Key Protect 实例所在的地理区域。

更多信息,请参阅 区域服务端点
key_ring_id 需要。 您要创建的钥匙圈的唯一标识符。
IAM_token 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。

更多信息,请参阅 检索访问令牌
instance_ID 需要。 分配给 Key Protect 服务实例的唯一标识符。

更多信息,请参阅 检索实例 ID
correlation_ID 可选。用于跟踪和关联交易的唯一标识符。

POST api/v2/key_rings 请求成功后会返回 HTTP 201 Created 响应,指示密钥环已创建,现在可用于保存标准密钥和根密钥。

将密钥传输到其他密钥环

随着需求更改以及新的团队成员引入到组织中,您可以创建新的密钥环以反映这些组织更改。 创建密钥环后,可能需要将密钥从现有密钥环移至具有不同 IAM 许可权的新密钥环。 例如,您可能正在加入需要特定访问权的团队,该密钥是先前生成的定制非缺省密钥环的一部分。 您可以创建专用于上线团队的新密钥环,并且由于一次只能将密钥与一个密钥环关联,因此需要将密钥移至新密钥环。

将密钥转移到另一个密钥环后,最多可能需要 10 分钟才能使更改生效。

使用 UI 将密钥传输到其他密钥环

如果您未看到您期望看到的所有选项,那么可能是因为您没有执行特定操作的许可权。 确保您的角色和许可权足以执行操作。 有关角色的更多信息,请查看 管理用户访问权

您必须同时具有要传输的密钥和要传输密钥的目标密钥环的服务“管理者”角色。

密钥 面板中:

  1. 找到要转移的密钥。 请注意,通过在 密钥环标识 下拉列表中选择密钥环,可以帮助指定密钥当前所在的密钥环。 您还可以单击左侧导航中的 密钥环,找到相应的密钥环,然后单击设置下拉列表中的 查看关联的密钥。 这将显示与该密钥环关联的所有密钥。
  2. 单击 ... 按钮,然后从下拉列表中选择 编辑密钥环
  3. 在下拉列表中,选择要将密钥移动到的密钥环。 然后点击保存

使用 API 将密钥传输到其他密钥环

通过对以下端点进行 PATCH 调用,将密钥传输到其他密钥环。

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

    要更新密钥的密钥环,您必须至少具有对密钥和目标密钥环的 Manager 服务访问权。 了解 IAM 角色如何映射到 Key Protect 服务操作,请检出 服务访问角色

  2. 通过运行以下 curl 命令来更新密钥的密钥环。

    $ curl -X PATCH \
        https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias> \
        -H 'accept: application/vnd.ibm.kms.key+json' \
        -H 'authorization: Bearer <IAM_token>' \
        -H 'bluemix-instance: <instance_ID>' \
        -H 'content-type: application/vnd.ibm.kms.key+json' \
        -H "x-kms-key-ring: <original_key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -d '{
        "keyRingID": "<new_key_ring_ID>"
        }'
    

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

描述了使用Key ProtectAPI 更新密钥的密钥环所需的变量。API 更新钥匙圈所需的变量。
变量 描述
区域 需要。 区域缩写,如 us-southeu-gb,表示 Key Protect 实例所在的地理区域。

更多信息,请参阅 区域服务端点
keyID_or_alias 需要。 您要更新的密钥的唯一标识符或别名。
IAM_token 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。

更多信息,请参阅 检索访问令牌
instance_ID 需要。 分配给 Key Protect 服务实例的唯一标识符。

更多信息,请参阅 检索实例 ID
原始钥匙圈 ID 可选。 密钥当前所属的密钥环的唯一标识。 如果未指定,Key Protect 将在与指定实例关联的每个密钥环中搜索密钥。 因此,建议为更优化的请求指定密钥环标识。 注: 在没有 x-kms-key-ring 头的情况下创建的密钥的密钥环标识为: default
correlation_ID 可选。用于跟踪和关联交易的唯一标识符。
new_key_ring_ID 需要。 要将密钥移动到的目标密钥环的唯一标识。

成功的 PATCH api/v2/keys/keyID_or_alias 请求将返回密钥的元数据,包括密钥所在的密钥环的标识。

{
    "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,
            "keyRingID": "new-key-ring",
            "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
        }
    ]
}

授予对密钥环的访问权

您可以使用 IBM Cloud 控制台,IAM APICLI{ :external}来授予对 Key Protect 实例中密钥环的访问权。

查看 角色和许可权,以了解 IBM Cloud IAM 角色如何映射到 Key Protect 操作。

要使用控制台分配对密钥环的访问权:

  1. 从菜单栏中,单击 管理 > 访问权 (IAM),然后选择 用户,用于浏览帐户中的现有用户。

  2. 选择表行,然后单击 ⋯ 图标以打开该用户的选项列表。

  3. 从选项菜单中,单击 分配访问权

  4. 单击为用户分配额外访问权限

  5. 单击 IAM 服务 按钮。

  6. 从服务列表中选择 Key Protect.

  7. 选择 基于属性的服务

  8. 选择 实例标识 属性,然后选择密钥环所在的实例。

  9. 选择 密钥环标识 属性,然后输入与密钥环关联的标识。

  10. 选择组合 平台和服务访问角色,用于为用户分配访问权。

  11. 单击添加

  12. 根据需要继续添加平台和服务访问角色,完成后,单击 分配。 请注意,必须为用户分配对整个实例的至少 读者 访问权,以便他们列出,创建和删除实例中的密钥环。

该图显示了如何授予用户对密钥环的访问权的示例。
显示如何授予用户访问实例的权限。

使用 API 列出密钥环

要查看高级视图,您可以通过以下方式浏览您的 Key Protect 管理的钥匙圈。对以下端点进行 GET 调用。

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

  2. 通过运行以下命令来查看有关密钥环的常规特征: curl 指挥。

    $ curl -X GET \ "https://<region>.kms.cloud.ibm.com/api/v2/key_rings?totalCount=<show_total>&offset=<offset_value>&limit=<offset_limit>" \
        -H "accept: application/vnd.ibm.kms.key_ring+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "correlation-id: <correlation_ID>"
    

    问号 ? 后面的查询参数是可选的,但此处包含这些参数以记录其使用情况。 (: :note)

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

描述使用Key ProtectAPI 查看钥匙圈所需的变量。API 查看钥匙圈所需的变量。
变量 描述
区域 需要。 区域缩写,如 us-southeu-gb,表示 Key Protect 实例所在的地理区域。

更多信息,请参阅 区域服务端点
IAM_token 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。

更多信息,请参阅 检索访问令牌
instance_ID 需要。 分配给 Key Protect 实例的唯一标识符。

更多信息,请参阅 检索实例 ID
correlation_ID 可选。 用于跟踪和关联事务的唯一标识。
偏移量限制 可选。 缺省情况下,GET /key_rings 返回 51 个 keyRings 的序列,包括缺省 keyRing。 要检索不同的钥匙圈,请使用 limitoffset 在可用资源中进行分页。 limit 的最大值为 "5,000"
偏移值 可选。 通过指定 offset,可以检索从 offset 值开始的钥匙圈子集。
显示总计 可选。 如果设置为 true,那么响应元数据将返回与分页配合使用的 totalCount 的值。

成功的 GET api/v2/key_rings 请求将返回在您的 Key Protect 服务实例。

{
    "metadata": {
        "collectionType": "application/vnd.ibm.kms.key_ring+json",
        "collectionTotal": 2
    },
    "resources": [
        {
            "id": "default"
        },
        {
            "id": "Sample Key Ring 2",
            "creationDate": "2020-03-12T11:00:06Z",
            "createdBy": "..."
        }
    ]
}

使用 API 删除密钥环

您可以通过对以下端点进行 DELETE 调用来删除密钥环。

https://<region>.kms.cloud.ibm.com/api/v2/key_rings/<key_ring_id>

如果密钥环至少包含一个处于 已销毁 状态以外的状态的密钥,那么此操作将不会成功。 如果密钥环中只有密钥处于 已销毁 状态,那么如果将 force=true 添加到 delete 命令中,那么可以删除密钥环。 处于该状态的密钥将自动传输到 default 密钥环。

  1. 检索认证凭证以使用服务中的密钥

  2. 读取要删除的钥匙圈的 ID。

    您可以在您的密钥环中找到该密钥环的标识。 Key Protect 实例 检索密钥环列表

  3. 运行以下 curl 命令删除钥匙圈。 请注意 force=true 的存在,这将强制在密钥环包含处于 已销毁 状态的密钥时删除该密钥环。

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/key_rings/<key_ring_id>?force=true" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "prefer: <return_preference>"
    

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

描述使用Key ProtectAPI 删除密钥所需的变量。API 删除密钥所需的变量。
变量 描述
区域 需要。 区域缩写,如 us-southeu-gb,表示 Key Protect 实例所在的地理区域。

更多信息,请参阅 区域服务端点
key_ring_id 必需。 要删除的钥匙圈的唯一标识符。
IAM_token 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。

更多信息,请参阅 检索访问令牌
instance_ID 需要。 分配给 Key Protect 服务实例的唯一标识符。

更多信息,请参阅 检索实例 ID

请求成功后会返回 HTTP 204 No Content 响应,表示已成功删除钥匙圈。表示已成功删除钥匙圈。