复原密钥
您可以使用 IBM Cloud® Hyper Protect Crypto Services 来复原先前删除的密钥并访问云上的关联数据。
删除密钥时,该密钥将进入“已销毁”状态。 但是,仍可以查看有关密钥 (例如元数据) 的信息,并且您有 30 天时间将密钥复原到“活动”状态。 因此,将密钥删除视为 软删除,其中密钥仍然存在,但无法再用于访问由密钥加密的数据。 本主题描述复原密钥的过程以及密钥复原过程的限制。
此软删除时间段 (其中已删除密钥但仍可恢复) 持续 30 天。 在 30 天到 90 天之间,仍可访问密钥数据,但无法再恢复密钥。 90 天之后,密钥才有资格自动清除,这在 90 天之后的任何时候都可能发生。 与销毁的密钥不同,清除的密钥将永远消失。
从密钥删除开始的时间 | 密钥状态的名称 | 可以查看或访问密钥数据吗? | 可以复原吗? |
---|---|---|---|
1-30 天 | 已销毁 | 是 | 是 |
30-90 天 | 已销毁 | 是 | 否 |
90 天后 | 已清除 (在技术上不是密钥状态) | 否 | 否 |
由于已清除的密钥不可访问且已销毁,因此在技术上不存在 已清除 密钥状态。 但是,将 已清除 视为状态可能很有用,因为不存在是密钥生命周期的一部分。
可以复原所有根密钥和标准密钥,无论是由 Hyper Protect Crypto Services 生成还是由您导入。
如何知道是否可以复原密钥?
要查看是否可以复原已销毁的密钥,请执行以下操作:
- 在 UI 中浏览到 Hyper Protect Crypto Services 实例。
- 在导航中,确保您位于“KMS 密钥”页面上。
- 查找要复原的密钥,并确保该密钥处于 已销毁 状态。
- 检查是否在 已销毁 状态旁边显示了 撤销 图标
。 该图标指示密钥符合复原条件。 您可以在删除后 30 天内复原密钥。 将鼠标指针悬停在图标上时,将显示复原到期日期。
使用 UI 复原已删除的密钥
如果您希望使用图形界面来复原密钥,那么可以使用 UI。
完成以下步骤以复原密钥:
- 登录 UI。
- 转至 菜单 > 资源列表 以查看资源列表。
- 从 IBM Cloud 资源列表,选择 Hyper Protect Crypto Services 的已供应实例。
- 在“KMS 密钥”页面上,使用 密钥 表来浏览服务中的密钥。
- 选择要复原的密钥,然后单击 操作 图标
以打开密钥的选项列表。
- 从选项菜单中,单击 复原密钥。
- 单击 复原密钥 以确认操作。
使用 API 复原已删除的密钥
通过对以下端点进行 POST
调用来复原密钥。
https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/restore
-
要复原密钥,必须为您分配实例或密钥的 管理者 访问策略。 要了解 IAM 角色如何映射到 Hyper Protect Crypto Services 服务操作,请查看 服务访问角色。
-
检索密钥管理服务 API 端点 URL。
您可以通过 概述 > 连接 > 密钥管理端点 URL 从供应的服务实例仪表板获取 API 端点。 或者,您可以使用 API 调用动态 检索 API 端点 URL。 根据需要选择公用或专用密钥管理端点 URL。
-
检索要复原的密钥的标识。
您可以通过发出 list keys API request或通过在 UI 中查看密钥来检索指定密钥的标识。
-
运行以下
curl
命令以复原密钥并重新获得对关联数据的访问权。 必须在删除密钥后等待 30 秒,才能将其复原。您无法复原具有当前或过去到期日期的密钥。
curl -X POST \ "https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_ID>/restore" \ -H 'authorization: Bearer <IAM_token>' \ -H 'bluemix-instance: <instance_ID>' \ -H 'x-kms-key-ring: <key_ring_ID>'
根据下表替换示例请求中的变量。
表 1. 描述使用 Hyper Protect Crypto Services API 复原密钥所需的变量 变量 描述 region
必需。 区域缩写,例如 us-south
或eu-de
,表示 Hyper Protect Crypto Services 服务实例所在的地理区域。 有关更多信息,请参阅区域服务端点。port
必需。 API 端点的端口号。 key_ID
必需。 要复原的密钥的唯一标识。 IAM_token
必需。 您的 IBM Cloud 访问令牌。 在 cURL 请求中包含 IAM
令牌的完整内容,包括 Bearer 值。 有关更多信息,请参阅 检索访问令牌。instance_ID
必需。 指定给您的 Hyper Protect Crypto Services 服务实例的唯一标识。 有关更多信息,请参阅 检索实例标识。 key_ring_ID
可选。 密钥所属的密钥环的唯一标识。 如果未指定,那么 Hyper Protect Crypto Services 将在与指定实例关联的每个密钥环中搜索密钥。 因此,建议为更优化的请求指定密钥环标识。 \n \n 注: 在没有 x-kms-key-ring
头的情况下创建的密钥的密钥环标识为default
。
有关更多信息,请参阅 管理密钥环。成功的复原请求将返回 HTTP
201 Created
响应,该响应指示密钥已复原到“活动密钥”状态,现在可用于加密和解密操作。 还会复原先前与密钥关联的所有属性和策略。恢复密钥后,您将有权访问与密钥关联的数据。
-
可选: 通过检索有关密钥的详细信息来验证是否已复原密钥。
curl -X GET \ "https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys/<key_id>/metadata" \ -H 'authorization: Bearer <IAM_token>' \ -H 'bluemix-instance: <instance_ID>' \ -H 'accept: application/vnd.ibm.kms.key+json'
其中
<key_id>
是密钥的标识,<instance_ID>
是实例的名称,<IAM_token>
是 IAM 令牌。查看响应主体中的
state
字段,以验证密钥是否已进入“活动密钥”状态。 以下 JSON 输出显示活动密钥的元数据详细信息。“活动”键状态的整数映射为 1。 密钥状态基于 NIST SP 800-57。
{ "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": "...", "description": "...", "tags": [ "..." ], "state": 1, "extractable": false, "crn": "crn:v1:bluemix:public:hs-crypto:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d", "imported": true, "creationDate": "2020-03-10T20:41:27Z", "createdBy": "...", "algorithmType": "AES", "algorithmMetadata": { "bitLength": "128", "mode": "CBC_PAD" }, "algorithmBitSize": 128, "algorithmMode": "CBC_PAD", "lastUpdateDate": "2020-03-16T20:41:27Z", "keyVersion": { "id": "30372f20-d9f1-40b3-b486-a709e1932c9c", "creationDate": "2020-03-12T03:37:32Z" }, "dualAuthDelete": { "enabled": false }, "deleted": false } ] }