复原密钥
删除密钥时,会将其移至“已销毁”状态。 但是,仍可以查看有关密钥 (例如其元数据) 的信息,并且您有 30 天时间将密钥复原到活动状态。 因此,密钥删除被视为“软删除”,因为密钥仍然存在,但无法再用于访问其已加密的数据。 本主题描述复原密钥的过程以及密钥复原过程的限制。
作为测试和开发过程的一部分,定期创建和删除密钥是正常的。 这些密钥并非一去不复返; 而是“软删除”并移至 已销毁 状态,这意味着不能将密钥用作任何密钥操作 (例如,加密或解密数据) 的一部分。 只能查看密钥数据,如果在错误中删除了密钥,那么可能可以将密钥复原为 活动 状态。
所有密钥,无论是在 Key Protect 中创建的还是导入的,也无论是根密钥还是标准密钥,都可以恢复。
此中间时间段 (已删除密钥但仍可恢复) 持续 30 天。 在 30 天到 90 天之间,仍可访问密钥数据,但无法再恢复密钥。 90 天后,密钥可自动 清除,这可在 90 天后随时发生。 与销毁的密钥不同,清除的密钥将永远消失。
| 从密钥删除开始的时间 | 密钥状态的名称 | 可以查看/访问密钥数据吗? | 可以复原吗? |
|---|---|---|---|
| One-30 天 | 已销毁 | 是 | 是 |
| 30-90 天 | 已销毁 | 是 | 否 |
| 90 天后 | 已清除* |
否 | 否 |
* 注: 由于已清除的密钥完全不可访问,并且在该词的常用用法中“已销毁”,因此在技术上没有“已清除”的密钥状态。 清除的密钥已完全消失,因此不存在“状态”。 但是,将“已清除”视为状态可能有用,因为不存在是密钥生命周期的一部分。 如果需要在 90 天之前清除密钥,那么需要特殊的密钥清除角色。 有关更多信息,请查看 删除密钥。
有关密钥状态的更多信息,请查看 监视加密密钥的生命周期。
由于 Key Protect 不允许删除包含键的实例,因此必须先删除实例中的任何键,然后才能删除实例本身。 但是,由于密钥的“软”删除,用户可能会删除密钥,然后在删除实例后不久再删除。 实例的这种删除也会永久删除密钥,即使密钥的删除是最新的,也足以使其有资格复原。 因此,Key Protect 允许在删除实例后短时间内对其进行回收。 要查看是否可以回收实例,请查看 使用 CLI 列出回收的资源。 对于有关回收资源 (本例中的实例) 的命令,请查看 使用 CLI 复原资源。
如何知道是否可以复原密钥?
要查看是否可以复原已销毁的密钥,请执行以下操作:
- 在 IBM Cloud 控制台中浏览到 Key Protect 实例。
- 在左侧导航中,确保您位于 密钥 屏幕上。
- 找到您要恢复的密钥。 注意:只有处于 “已删除”状态的密钥才能恢复。
- 在
Last updated列下,记下日期。 然后,请参阅上面可以找到的表 1。 如果在过去 30 天内删除了密钥,那么可以将其复原。 如果已超过 30 天,您将无法恢复密钥。 如果尝试复原不再适合复原的密钥,那么在尝试复原该密钥时将接收到错误。
使用控制台复原已删除的密钥
如果您希望使用图形界面复原密钥,那么可以使用 IBM Cloud 控制台。
将现有密钥导入到服务中 并 删除 密钥后,请完成以下步骤以复原密钥:
-
转到 “菜单” > “资源列表” 以查看您的资源列表。
-
从 IBM Cloud 资源列表中,选择您供应的 Key Protect 实例。
-
单击 密钥 以打开“密钥”面板,并查找处于要复原的已销毁状态的密钥。 实现此功能的一种方法是打开过滤器面板,并在 “键状态”下拉列表中选择 “已删除”状态。 这将仅将结果限制为已删除的密钥。
-
点击 ⋯ 图标,即可打开要恢复的密钥的选项列表。 请注意,如果密钥已被删除并移动到_销毁_状态,则必须等待 30 秒后才能尝试还原。
-
点击 “还原”按钮以打开还原侧边栏。
-
点击 “还原” 按钮。
-
确认已在更新的 密钥 表中复原密钥。
使用 API 复原已删除的密钥
通过向以下端点发出 POST 调用,恢复之前导入的密钥:
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/restore
-
要复原密钥,您必须具有实例或密钥的 管理者 角色。 要了解 IAM 角色如何映射到 Key Protect 服务操作,请查看 服务访问角色。
-
获取要恢复的密钥的 ID。
您可以通过发送 list keys 请求,或在 Key Protect 仪表盘中查看您的密钥,来获取指定密钥的 ID。 有关更多信息,请查看 查看密钥列表。
-
运行以下
curl命令以复原密钥并重新获得对其关联数据的访问权。 请注意,在删除密钥后,必须等待 30 秒才能复原该密钥。您无法复原具有当前或过去到期日期的密钥。
$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/restore" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -H "x-kms-key-ring: <key_ring_ID>"根据表 2 替换示例请求中的变量。
| 变量 | 描述 |
|---|---|
| 区域 | 必填。 区域缩写(例如 us-south 或 eu-gb ),用于表示您的 Key Protect 实例所在的地理区域。 有关更多信息,请查看 区域服务端点。 |
| keyID_or_alias | 必填。 要复原的密钥的唯一标识或别名。 |
| IAM_token | 必填。 您的 IBM Cloud 访问令牌。 请在 curl 请求中包含 IAM 令牌的完整内容,包括 Bearer 值。 有关更多信息,请查看 检索访问令牌。 |
| instance_ID | 必填。 指定给您的 Key Protect 服务实例的唯一标识。 有关更多信息,请查看 检索实例标识。 |
| 键环 ID | 可选。 密钥所属的密钥环的唯一标识。 如果未指定,Key Protect 将在与指定实例关联的每个密钥环中搜索密钥。 因此,建议为更优化的请求指定密钥环标识。 注: 在没有 x-kms-key-ring 头的情况下创建的密钥的密钥环标识为: default。 有关更多信息,请查看 分组键。 |
A successful restore request returns an HTTP `201 Created` response, which indicates that the key was restored to the _Active_ key state and is now available for encrypt and decrypt operations. All attributes and policies that were previously associated with the key are also restored.
You will have access to data associated with the key as soon as the key is restored.
{: note}
可选: 验证密钥复原
您可以通过发出以下命令获取有关密钥的详细信息来验证是否已复原密钥:
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/metadata" \
-H "accept: application/vnd.ibm.kms.key+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
其中 <keyID_or_alias> 是密钥的标识或别名,<instance_ID> 是实例的名称,<IAM_token> 是 IAM 令牌。
查看响应主体中的 state 字段,以验证密钥是否已转换为 活动 密钥状态。 以下 JSON 输出显示 Active 键的示例元数据详细信息。
{
"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:kms: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": "Deprecated",
"algorithmMetadata": {
"bitLength": "128",
"mode": "Deprecated"
},
"algorithmBitSize": 128,
"algorithmMode": "Deprecated",
"lastUpdateDate": "2020-03-16T20:41:27Z",
"keyVersion": {
"id": "30372f20-d9f1-40b3-b486-a709e1932c9c",
"creationDate": "2020-03-12T03:37:32Z"
},
"dualAuthDelete": {
"enabled": false
},
"deleted": false
}
]
}
活动 键状态的整数映射为 1。