使用密钥管理互操作性协议(KMIP)
为了更好地促进 IBM® Key Protect for IBM Cloud® 密钥的使用,以创建与 VMWare 配合使用的密钥管理互操作性协议 (KMIP) 适配器,Key Protect 现在直接提供了使用 Key Protect 控制平面 (UI) 创建适配器和上传证书的功能。
本解决方案架构描述了用于保护 Key Protect 实例的本地 KMIP 支持架构。 许多存储加密选项可用于保护您的 VMware 工作负载。Key Protect 本地 KMIP 支持与 VMware 本地 vSphere 加密和 vSAN™ 加密协同工作。 vSphere 和 vSAN 加密提供了简化的存储加密管理,以及 IBM Cloud® Key Protect 客户管理密钥的安全性和灵活性。
该解决方案是 IBM Cloud 上提供的 KMIP for VMWare 解决方案的替代方案。 因此,本文档未涵盖 IBM Cloud 上这些基础解决方案的现有配置。 要了解有关基础解决方案架构的更多信息,请参阅 VMware Solutions 概述。
该功能与当前的 KMIP for VMWare 解决方案并行运行。 目前无法将使用 VMWare 解决方案创建的适配器导入 Key Protect (反之亦然)。
优势
虽然有许多存储加密解决方案可用于 VMware 工作负载,但 Key Protect 本地 KMIP 支持具有以下优势:
- Key Protect中的 KMIP 支持 已通过 VMWare 认证,可直接与任何通过 KMIP KMS 服务器接受加密的服务或平台集成。 其他 KMS 需要第三方 KMIP 服务器支持,而对 KMIP 的支持则由 Key Protect 集成和管理。
- 与 VMware vSAN 加密和 vSphere 加密集成,这两种加密都是在系统管理程序层实现的,而不是在存储器或虚拟机层实现。 通过此方法,可以轻松管理和透明了解存储解决方案及应用程序。
- 完全托管的密钥管理服务器可在许多 IBM Cloud 多区 (MZR) 中使用。
- 将VMware集群与IBM Cloud Key Protect 集成,可为您提供完全由客户管理的密钥,您可以随时撤销这些密钥。
- 由于 KMIP 对称密钥仅 作为单个密钥版本收费,因此您只需为您使用的密钥付费。
创建适配器
单个实例最多可创建 200 个适配器。 每个适配器最多可关联 200 个证书。
KMIP 适配器使用 Key Protect 根密钥创建。 如果没有根密钥,请创建一个。
创建适配器
-
使用左侧导航导航到 KMIP 适配器面板。 如果这是您的第一个适配器,表格应该是空的。 请注意,您必须在实例上设置
Manager
角色或KmipAdapterManager
角色,才能创建适配器。 -
找到 Create Adapter 按钮并单击。
-
在打开的侧面板中,为适配器设置 Name 和 Description 选项。 请注意,名称必须至少包含 2 个字符,最多不超过 40 个字符。 如果您选择对其进行描述,描述必须至少两个字符,且不超过 240 个字符。 完成上述操作后,就可以选择用于创建该适配器和加密其创建的 KMIP 密钥的根密钥。 必须选择根密钥。 请注意,您的根密钥必须处于
active
状态,适配器才能正常工作。 -
添加公共 TLS 证书后,相应私人证书的持有者就可以通过关联的 KMIP 适配器与 Key Protect 通信。 只有经 KMIP 适配器授权的证书才能对您的实例发出 KMIP 协议请求。 请注意,通过KMIP协议管理的资源无法通过 HTTP API访问。
虽然在创建适配器时不需要添加任何证书,但如果知道要添加哪些证书,可以单击面板中的添加证书(可选) 选项卡。 在生成的屏幕中,点击 Upload certificate 按钮,为证书命名,并输入证书内容(材料必须是 PEM 格式,并包含
BEGIN CERTIFICATE
和END CERTIFICATE
标记)。 请注意,证书关联可能需要几分钟时间。 此外,证书只能与 Key Protect 区域中的单个适配器关联。
确保任何上载证书的私钥安全,因为任何上载到 KMIP 适配器的证书都能进行所有受支持的 KMIP 操作。
配置 KMIP 客户端与适配器通信
要与适配器通信,您必须 设置 VMWare(一旦您将 VMWare 提供的证书与之关联,VMWare 将负责您与客户端的通信),或者创建一个 KMIP 客户端,该客户端可以通过 TCP 与 mTLS 通信,并可以使用 TTLV 消息格式 (如 KMIP 规范所述)发送消息。
对于 VMWare vSphere, 请按照 使用 vSphere 客户端添加标准密钥提供程序 中概述的步骤进行操作。 添加标准密钥提供程序时,请使用 Key Protect端点 特定于您实例的区域。 例如,对于区域 us-south
中的 Key Protect 实例,使用 us-south.kms.cloud.ibm.com
作为地址,5696
作为端口,这是 KMIP 服务器的默认端口。
如上文第 4 步所述,vSphere 客户端需要在适配器中上传其客户端证书,以便与 KMIP 适配器通信。 按照 Use the Certificate Option to Establish a Standard Key Provider Trusted Connection 指南中概述的步骤下载客户端证书。 该证书可上载到适配器中。
授权访问 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
certificate
和 kmip_object
资源授予上述行为,没有粒度限制。
查看和更新适配器详细信息
通过适配器详细信息面板,您可以了解适配器的相关信息(例如,通过描述),还可以执行添加证书等操作。
要查看适配器详细信息,请单击 ⋯ 图标。 这将显示适配器的所有详细信息。 在这里,你可以看到它的名称、描述、与适配器相关的任何 KMIP 对称密钥以及已上载到它的证书。 您还可以根据需要使用该面板上传更多证书。
不能使用用户界面删除 KMIP 对称密钥。 要删除密钥,必须使用 CLI。 只有处于 Active
(状态 1
)以外状态的 KMIP 对称密钥才能被删除。 如果适配器包含处于 Active
状态的键,则无法删除该适配器。
每个适配器的资源都受 CRK 保护。 不能删除已激活并与适配器关联的 CRK。
每个创建的KMIP对称密钥都算作一个密钥版本,并 收取一个密钥版本的费用。 如果要删除 KMIP 对称密钥,只能使用 API、CLI 或 SDK。 您不能使用用户界面。 请注意,删除 KMIP 对称信息是永久性的。
KMIP 支持的对象和操作
请参阅 KMIP 版本 1.4 文档中的 结果原因,了解预期失败的原因,如针对不支持操作的请求。
KMIP 支持的操作
只支持这些操作。
| 操作 | 摘要 | - | - | - | | 4.1 | 创建 | 创建一个 KMIP 对象 | 4.11 | 获取 | 读取对象信息,特别是关键信息。 | 4.12 | 获取属性 | 读取对象的属性元数据。 | 4.14 | 添加属性 | 为对象添加属性元数据。 | 4.19 | 激活 | 将对象设置为“激活”状态。 在状态激活时,对象不能被销毁。 | 4.20 | 撤销 | 如果给出的撤销原因代码是“密钥受损”或“CA 受损”,则将对象设置为“受损”状态。 否则会将对象设置为“停用”状态。 | 4.21 | Destroy | 销毁对象的关键材料。 此操作无法逆转。 | 4.26 | 发现版本 | 请求服务器支持的 KMIP 协议版本。 只会返回 v1.4 版本。 | 4.9 | 查找 | 搜索与给定条件或属性元数据相匹配的对象。
支持的对象
| | 对象 | - | - | 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
-
复制要用于创建 KMIP 适配器的根密钥 ID。
您可以在您的 Key Protect实例,通过 检索密钥列表、 或访问 Key Protect 实例。 仪表盘。
-
使用以下
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>" } } ] }'
根据下表替换示例请求中的变量。
变量 | 描述 |
---|---|
区域 | 需要。 区域缩写,如 us-south 或 eu-gb ,表示 Key Protect 实例所在的地理区域。有关更多信息,请参阅区域服务端点。 |
root_keyID_or_alias | 需要。 要用于适配器的根密钥的唯一标识符或别名。 |
IAM_token | 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。 更多信息,请参阅 检索访问令牌。 |
instance_ID | 需要。 分配给 Key Protect 服务实例的唯一标识符。 更多信息,请参阅 检索实例 ID。 |
适配器名称 | 可选。 KMIP 适配器的可读名称,在 kms 实例中唯一。 如果未指定,将自动生成 kmip_adapter_<random_string> 格式的文本。 为保护您的隐私,请勿使用个人数据(如您的姓名或所在位置)作为 KMIP 适配器的名称。 名称必须是字母数字,不能包含空格或除 - 或 _ 之外的特殊字符。名称不能是 UUID。 |
适配器描述 | 可选 KMIP 适配器的说明。 最大长度为 240 个字符。 为保护您的隐私,请勿使用个人数据(如您的姓名或所在位置)作为 KMIP 适配器的描述。 |
-
可选:您可以使用以下
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 或适配器名称来获取特定的适配器。
-
您可以使用以下
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 客户证书。 一旦注册了证书,就可以使用该证书与 KMIP 服务器进行 mTLS 通信,正如 KMIP 规范所描述的那样。 从注册证书到证书可在 KMIP 服务器上使用可能需要长达五分钟的时间。 在同一地区内,证书必须是唯一的。
-
确定要添加证书的 KMIP 适配器。
-
使用以下
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>" } ] }'
根据下表替换示例请求中的变量。
变量 | 描述 |
---|---|
区域 | 需要。 区域缩写,如 us-south 或 eu-gb ,表示 Key Protect 实例所在的地理区域。有关更多信息,请参阅区域服务端点。 |
Adapter_ID | 需要。 要注册证书的 KMIP 适配器的唯一标识符或名称。 |
IAM_token | 需要。 您的 IBM Cloud 访问令牌。 在 curl 请求中包含 IAM 令牌的全部内容,包括承载器值。 更多信息,请参阅 检索访问令牌。 |
instance_ID | 需要。 分配给 Key Protect 服务实例的唯一标识符。 更多信息,请参阅 检索实例 ID。 |
证书 | 必填 KMIP 客户证书的内容。 它必须是 x509 PEM 格式。 它应明确具有 BEGIN CERTIFICATE 和 END CERTIFICATE 标记。 |
certificate_name | 可选。 一个人类可读的名称,唯一标识给定适配器中的证书。 如果未指定,将自动生成 kmip_cert_<random_string> 格式的文本。 为保护您的隐私,请勿使用个人数据(如您的姓名或所在位置)作为 KMIP 适配器的名称。 名称必须是字母数字,不能包含空格或除 - 或 _ 之外的特殊字符。名称不能是 UUID。 |
-
可选:您可以使用以下
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 或证书名称来获取特定的适配器。
-
您可以使用以下
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 创建,但可以查看和删除。
-
确定要添加证书的 KMIP 适配器。
-
您可以使用以下
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>"
-
您可以使用以下
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>"
-
您可以使用以下
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 对象。