使用密钥管理互操作性协议(KMIP)

IBM® Key Protect for IBM Cloud® 原生支持密钥管理互操作性协议(KMIP),允许您通过 Key Protect 控制台直接创建KMIP适配器并上传证书。

本解决方案介绍了 Key Protect 对KMIP的原生支持架构,用于保护您的 VMware® 实例。Key Protect 对KMIP的原生支持与 VMware 对 vSphere 加密以及 vSAN™ 加密的原生支持相结合,在提供简化的存储加密管理的同时,还具备 IBM Cloud® Key Protect 中客户自管密钥的安全性和灵活性。

该解决方案是 IBM Cloud 上 KMIP 用于 VMware 服务的替代方案。 本文档未涉及这些基础解决方案的配置。 有关基础架构解决方案的更多信息,请参阅 《 VMware Solutions 概述》

此功能与当前针对 VMware 的 KMIP 解决方案并行运行。 您无法将使用 VMware 解决方案创建的适配器导入到 Key Protect 中,反之亦然。

优势

Key Protect 原生 KMIP 支持具有以下优势:

VMware 认证
Key Protect 中对 KMIP 的支持已 通过 VMware 认证,并可直接与任何支持通过 KMIP KMS 服务器进行加密的服务或平台集成。 KMIP 支持已集成到 Key Protect 中并由其管理,因此无需第三方 KMIP 服务器支持。
虚拟机管理程序级加密
通过与 VMware、vSAN 加密以及 vSphere 加密的集成,可在虚拟机管理程序层实现加密,而非在存储层或虚拟机层进行加密。 这种方法简化了管理,并为您的存储解决方案和应用程序提供了透明度。
全托管服务
密钥管理服务器是完全托管的服务,并在许多 IBM Cloud 多区域(MZR)中提供。
由客户管理的密钥
您可以完全掌控自己的加密密钥,并可随时撤销这些密钥。
经济高效
KMIP 对称密钥 按单一密钥版本计费,因此您只需为实际使用量付费。

创建适配器

单个实例最多可创建 200 个适配器。 每个适配器最多可关联 200 个证书。

KMIP 适配器使用 Key Protect 根密钥创建。 如果没有根密钥,请创建一个

开始之前,请确保您在该实例上拥有 Manager”角色或“KmipAdapterManager”角色

创建适配器

  1. 在导航菜单中,单击“KMIP适配器”。 如果这是您的第一个适配器,则该表格为空。

  2. 单击创建

  3. 在侧边栏中,请提供以下信息:

    • 名称- 输入适配器的名称(2-40个字符)。
    • 描述 (可选)——为适配器输入描述(2-240个字符)。
    • 根密钥- 选择要用于此适配器的根密钥。 根密钥用于加密适配器生成的 KMIP 密钥。 为确保适配器正常工作,您的根密钥必须处于 active 状态。
  4. 可选:添加一个公共 TLS 证书,以便相应的私有证书持有者能够通过KMIP适配器与 Key Protect 进行通信。 只有经过授权的证书才能针对您的实例发起 KMIP 协议请求。

    要添加证书:

    1. 单击添加
    2. 请输入证书的名称。
    3. 请以 PEM 格式输入证书内容,包括 BEGIN CERTIFICATEEND CERTIFICATE 标签。
    4. 单击“添加证书”。

    证书关联可能需要几分钟时间。 在 Key Protect 区域中,一个证书只能与一个适配器相关联。

通过KMIP协议管理的资源无法通过 HTTP API访问。

请妥善保管任何已上传证书的私钥。 上传到 KMIP 适配器的任何证书均可执行所有受支持的 KMIP 操作。

配置 KMIP 客户端与适配器通信

要与适配器通信,您必须 配置 VMware,或者创建一个KMIP客户端,该客户端能够通过 TCP 与 mTLS 进行通信,并 按照KMIP规范中所述, 使用TTLV消息格式发送消息。

有关 VMware vSphere 的信息,请按照《 使用 vSphere 客户端添加标准密钥提供程序 》中的步骤操作。 添加标准密钥提供程序时,请使用与您的实例所在区域对应的 Key Protect 端点。 例如,对于位于 us-south 区域的 Key Protect 实例,请使用 us-south.kms.cloud.ibm.com 作为地址,5696 作为端口。

vSphere 客户端必须将其客户端证书上传至适配器,才能与KMIP适配器进行通信。 请按照 “使用证书选项建立标准密钥提供程序的可信连接”中的步骤下载客户端证书,然后将其上传到适配器。

授权访问 KMIP

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

以下 IAM 操作将管理用于管理 KMIP 资源访问的资源:

  • kms.kmip-management.create
  • kms.kmip-management.list
  • kms.kmip-management.read
  • kms.kmip-management.delete

每个操作都向实例中的所有 kmip_adapter certificatekmip_object 资源授予上述行为,没有粒度限制。

查看和更新适配器详细信息

适配器详细信息面板会显示有关适配器的信息,并允许您执行添加证书等操作。

要查看适配器的详细信息:

  1. 点击适配器的操作菜单(⋯)。
  2. 选择 “详细信息”

“详细信息”面板显示适配器的名称、描述、相关的 KMIP 对称密钥以及已上传的证书。 您还可以通过此面板上传其他证书。

无法通过控制台删除 KMIP 对称密钥。 要删除键,请使用 命令行界面(CLI)。 只有未处于 Active 状态(状态 1 )的KMIP对称密钥才能被删除。 如果适配器中包含处于“Active”状态的密钥,则无法删除该适配器。

每个适配器的资源都由一个根密钥进行保护。 无法删除处于活动状态且与适配器关联的根密钥。

每个创建的KMIP对称密钥都算作一个密钥版本,并 收取一个密钥版本的费用。 删除 KMIP 对称密钥的操作是不可逆的。

KMIP 支持的对象和操作

请参阅 KMIP 版本 1.4 文档中的“结果原因”,了解预期失败的原因,如针对不支持的操作的请求。

KMIP 支持的操作

仅支持以下操作。

支持的 KMIP 操作
部分 操作 摘要
4.1 创建 创建一个 KMIP 对象。
4.9 查找 搜索符合给定条件或属性元数据的对象。
4.11 获取 检索对象信息,具体而言是密钥素材。
4.12 获取属性 获取有关该对象的属性元数据。
4.14 添加属性 向对象添加属性元数据。
4.19 激活 将对象设置为“活动”状态。 该对象在活动状态下无法被销毁。
4.20 撤销 如果撤销原因代码为“密钥泄露”或“CA 泄露”,则将该对象设置为“受损”状态。 否则,将该对象设置为“已停用”状态。
4.21 销毁 销毁该对象的密钥材料。 此操作无法撤销。
4.26 探索各版本 向服务器查询支持的 KMIP 协议版本。 仅返回 v1.4。

支持的对象

支持的 KMIP 对象
部分 对象
2.2 对称密钥

在应用程序接口中创建和使用 KMIP 适配程序

本节介绍了如何在 API 中使用符合 native_1.0 配置文件的 KMIP 适配器,包括添加和删除 KMIP 客户端证书,以及查看和删除 KMIP 对象。

您可以通过调用 POST 以下端点来创建 KMIP 适配器。

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

对 KMIP 适配器子资源(包括 KMIP 客户端证书和 KMIP 对象)的操作将在以下端点中进行:

https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>/certificates
https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>/kmip_objects
  1. 读取验证凭据,以便在服务中使用密钥。

  2. 复制要用于创建 KMIP 适配器的根密钥 ID。

    您可以在您的 Key Protect实例,通过 检索密钥列表、 或访问 Key Protect 实例。 仪表盘。

  3. 使用以下 curl 命令创建 KMIP 适配器:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json" \
        -d '{
                "metadata": {
                    "collectionType": "application/vnd.ibm.kms.kmip_adapter+json",
                    "collectionTotal": 1
                },
                "resources": [
                    {
                    "name": "<adapter_name>",
                    "description": "<adapter_description>",
                    "profile": "native_1.0",
                    "profile_data": {
                        "crk_id": "<root_keyID_or_alias>"
                    }
                    }
                ]
            }'
    

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

描述了在Key Protect 中创建 KMIP 适配器所需的变量。
变量 描述
区域 必填。 区域缩写(例如 us-southeu-gb ),用于表示您的 Key Protect 实例所在的地理区域。

有关更多信息,请参阅区域服务端点
root_keyID_or_alias 必填。 您希望在适配器中使用的根密钥的唯一标识符或别名。
IAM_token 必填。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的完整内容,包括 Bearer 值。
如需了解更多信息,请参阅“获取访问令牌”。
instance_ID 必填。 分配给您的 Key Protect 服务实例的唯一标识符。

如需了解更多信息,请参阅 “检索实例 ID”
适配器名称 可选。 KMIP 适配器的可读名称,在 kms 实例中唯一。 如果未指定,将自动生成 kmip_adapter_<random_string> 格式的文本。 为保护您的隐私,请勿将个人数据(例如您的姓名或位置)用作 KMIP 适配器的名称。 名称必须是字母数字,不能包含空格或除 - 或 _ 之外的特殊字符。名称不能是 UUID。
适配器描述 可选 KMIP 适配器的说明。 最大长度为240个字符。 为保护您的隐私,请勿将个人数据(如您的姓名或位置)用作 KMIP 适配器的描述。
  1. 可选:您可以使用以下 curl 命令列出实例中存在的 KMIP 适配器:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    您还可以使用以下 curl 命令获取特定的 KMIP 适配器:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    请注意,您可以使用适配器的 UUID 或适配器名称来获取特定的适配器。

  2. 您可以使用以下 curl 命令删除 KMIP 适配器:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_adapter+json"
    

    只有删除适配器下的所有 KMIP 对象,才能删除 KMIP 适配器。

为 KMIP 适配器添加 KMIP 客户端证书

创建 KMIP 适配器后,您可以添加一个 KMIP 客户端证书并与该适配器关联。 证书注册完成后,您可以按照 KMIP 规范中的说明,使用 mTLS 与 KMIP 服务器进行通信。 证书注册最多可能需要五分钟。 在同一地区内,证书必须是唯一的。

  1. 读取验证凭据,以便在服务中使用密钥。

  2. 确定要添加证书的 KMIP 适配器。

  3. 使用以下 curl 命令添加 KMIP 客户证书:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -d '{
                "metadata": {
                    "collectionType": "application/vnd.ibm.kms.kmip_client_certificate+json",
                    "collectionTotal": 1
                },
                "resources": [
                    {
                    "certificate": "<certificate_pem>",
                    "name": "<certificate_name>"
                    }
                ]
            }'
    

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

描述在Key Protect 中创建 KMIP 客户证书所需的变量。
变量 描述
区域 必填。 区域缩写(例如 us-southeu-gb ),用于表示您的 Key Protect 实例所在的地理区域。

有关更多信息,请参阅区域服务端点
Adapter_ID 必填。 要注册证书的 KMIP 适配器的唯一标识符或名称。
IAM_token 必填。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的完整内容,包括 Bearer 值。
如需了解更多信息,请参阅“获取访问令牌”。
instance_ID 必填。 分配给您的 Key Protect 服务实例的唯一标识符。

如需了解更多信息,请参阅 “检索实例 ID”
证书 必填 KMIP 客户证书的内容。 必须采用 x509 PEM 格式。 它应明确具有 BEGIN CERTIFICATE 和 END CERTIFICATE 标记。
certificate_name 可选。 一个人类可读的名称,唯一标识给定适配器中的证书。 如果未指定,将自动生成 kmip_cert_<random_string> 格式的文本。 为保护您的隐私,请勿将个人数据(例如您的姓名或位置)用作 KMIP 适配器的名称。 名称必须是字母数字,不能包含空格或除 - 或 _ 之外的特殊字符。名称不能是 UUID。
  1. 可选:您可以使用以下 curl 命令列出与适配器相关的 KMIP 客户端证书:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    您还可以使用以下 curl 命令获取特定的 KMIP 客户证书:

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/certificates/<certificate_name_or_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_client_certificate+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    请注意,您可以使用证书的 UUID 或证书名称来获取特定的适配器。

  2. 您可以使用以下 curl 命令删除 KMIP 客户证书:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_name_or_ID>" \
        -H "accept: application/vnd.ibm.kms.kmip_adapter+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    只有删除适配器下的所有 KMIP 对象,才能删除 KMIP 适配器。

查看和删除适配器中的 KMIP 对象

KMIP 对象无法通过 REST API 创建,但可以查看和删除。

  1. 读取验证凭据,以便在服务中使用密钥。

  2. 确定要添加证书的 KMIP 适配器。

  3. 您可以使用以下 curl 命令查看 KMIP 适配器中的 KMIP 对象:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    
  4. 您可以使用以下 curl 命令查看 KMIP 适配器中的特定 KMIP 对象:

    $ curl -X GET \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects/<object_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    
  5. 您可以使用以下 curl 命令删除 KMIP 适配器中的特定 KMIP 对象:

    $ curl -X DELETE \
        "https://<region>.kms.cloud.ibm.com/api/v2/kmip_adapters/<adapter_id>/kmip_objects/<object_id>" \
        -H "accept: application/vnd.ibm.kms.kmip_object+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>"
    

    其中 <object_id> 是 KMIP 对象的 UUID。 不能删除活动 (state=2) 状态下的 KMIP 对象。