使用密钥管理互操作性协议(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”角色。
创建适配器
-
在导航菜单中,单击“KMIP适配器”。 如果这是您的第一个适配器,则该表格为空。
-
单击创建。
-
在侧边栏中,请提供以下信息:
- 名称- 输入适配器的名称(2-40个字符)。
- 描述 (可选)——为适配器输入描述(2-240个字符)。
- 根密钥- 选择要用于此适配器的根密钥。 根密钥用于加密适配器生成的 KMIP 密钥。 为确保适配器正常工作,您的根密钥必须处于
active状态。
-
可选:添加一个公共 TLS 证书,以便相应的私有证书持有者能够通过KMIP适配器与 Key Protect 进行通信。 只有经过授权的证书才能针对您的实例发起 KMIP 协议请求。
要添加证书:
- 单击添加。
- 请输入证书的名称。
- 请以 PEM 格式输入证书内容,包括
BEGIN CERTIFICATE和END CERTIFICATE标签。 - 单击“添加证书”。
证书关联可能需要几分钟时间。 在 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.createkms.kmip-management.listkms.kmip-management.readkms.kmip-management.delete
每个操作都向实例中的所有 kmip_adapter certificate 和 kmip_object 资源授予上述行为,没有粒度限制。
查看和更新适配器详细信息
适配器详细信息面板会显示有关适配器的信息,并允许您执行添加证书等操作。
要查看适配器的详细信息:
- 点击适配器的操作菜单(⋯)。
- 选择 “详细信息”。
“详细信息”面板显示适配器的名称、描述、相关的 KMIP 对称密钥以及已上传的证书。 您还可以通过此面板上传其他证书。
无法通过控制台删除 KMIP 对称密钥。 要删除键,请使用 命令行界面(CLI)。 只有未处于 Active 状态(状态 1 )的KMIP对称密钥才能被删除。 如果适配器中包含处于“Active”状态的密钥,则无法删除该适配器。
每个适配器的资源都由一个根密钥进行保护。 无法删除处于活动状态且与适配器关联的根密钥。
每个创建的KMIP对称密钥都算作一个密钥版本,并 收取一个密钥版本的费用。 删除 KMIP 对称密钥的操作是不可逆的。
KMIP 支持的对象和操作
请参阅 KMIP 版本 1.4 文档中的“结果原因”,了解预期失败的原因,如针对不支持的操作的请求。
KMIP 支持的操作
仅支持以下操作。
| 部分 | 操作 | 摘要 |
|---|---|---|
| 4.1 | 创建 | 创建一个 KMIP 对象。 |
| 4.9 | 查找 | 搜索符合给定条件或属性元数据的对象。 |
| 4.11 | 获取 | 检索对象信息,具体而言是密钥素材。 |
| 4.12 | 获取属性 | 获取有关该对象的属性元数据。 |
| 4.14 | 添加属性 | 向对象添加属性元数据。 |
| 4.19 | 激活 | 将对象设置为“活动”状态。 该对象在活动状态下无法被销毁。 |
| 4.20 | 撤销 | 如果撤销原因代码为“密钥泄露”或“CA 泄露”,则将该对象设置为“受损”状态。 否则,将该对象设置为“已停用”状态。 |
| 4.21 | 销毁 | 销毁该对象的密钥材料。 此操作无法撤销。 |
| 4.26 | 探索各版本 | 向服务器查询支持的 KMIP 协议版本。 仅返回 v1.4。 |
支持的对象
| 部分 | 对象 |
|---|---|
| 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 令牌的完整内容,包括 Bearer 值。 如需了解更多信息,请参阅“获取访问令牌”。 |
| 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 规范中的说明,使用 mTLS 与 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 令牌的完整内容,包括 Bearer 值。 如需了解更多信息,请参阅“获取访问令牌”。 |
| 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 对象。