Key Protect 集成

您存储在 IBM Cloud® 数据库中的数据默认使用随机生成的密钥进行加密。 要控制加密密钥,您可以通过 IBM Key Protect 自带密钥 (BYOK),并使用自己的密钥对数据库和备份进行加密。

本文档涵盖 Key Protect 与的 Cloud Databases 集成,其中包括 Databases for PostgreSQL、Databases for MongoDB、Databases for ElasticsearchDatabases for Redis、IBM Cloud® Databases for MySQL、、和 Messages for RabbitMQ。

要开始使用,您需要在您的 Key Protect 账户上配置IBM Cloud。

在Key Protect中创建或添加密钥}

转到Key Protect实例并 生成或输入密钥

在用户界面中授予服务授权

授权Key Protect与Cloud Databases部署一起使用:

  1. 打开 IBM Cloud 仪表板。
  2. 从菜单栏中,点击管理-> 访问权限(IAM)
  3. 在侧边导航中,单击授权
  4. 单击创建
  5. 源服务菜单中选择部署的服务。 例如,Databases for PostgreSQLMessages for RabbitMQ
  6. 源服务资源菜单中,选择所有资源
  7. 目标服务菜单中,选择 Key Protect
  8. 选择或保留默认值“账户”作为目标服务的资源组
  9. 在目标服务实例ID 菜单中,选择要授权的服务实例。
  10. 启用读取者角色。
  11. 要使用“自带密钥”(BYOK) 进行备份,请在“授权从属服务”部分选择“启用授权委托”框。
  12. 单击授权

如果在使用密钥调配部署之前没有服务授权,调配就会失败。

使用Key Protect键

授予Cloud Databases部署使用密钥的权限后,就可以在部署时提供 密钥名称或 CRN。 部署使用您的加密密钥对数据进行加密。

在用户界面中使用Key Protect键

如果从目录页面调配,请从下拉菜单中选择Key Protect实例和密钥。

在 CLI 中使用Key Protect密钥

在 CLI 中,在参数 JSON 对象中使用 disk_encryption_key_crn 参数。

ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE-NAME> standard us-south \
-p \ '{
  "disk_encryption_key_crn": "crn:v1:<...>:key:<id>"
}'

该键 Key Protect 需通过其完整的CRN进行识别,而非仅凭ID。 密钥保护 CRN 的格式为 crn:v1:<...>:key:<id>

在应用程序接口中使用Key Protect密钥

在应用程序接口中,在请求正文中使用 disk_encryption_key 参数。

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "blue-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-x-standard",
    "disk_encryption_key_crn": "crn:v1:<...>:key:<id>"
  }'

该键 Key Protect 需通过其完整的CRN进行识别,而非仅凭ID。 密钥保护 CRN 的格式为 crn:v1:<...>:key:<id>

密钥轮换

Key Protect提供手动和自动 密钥旋转 功能,Cloud Databases部署支持密钥旋转。 旋转密钥时,进程会启动_同步 KMS 状态_任务,并使用新密钥重新加密部署。 任务会显示在部署_概览_的_任务_页面上,相关的Key Protect和Cloud Databases事件会发送到Activity Tracker。

更多信息,请参阅 手动或自动旋转

删除部署

如果删除受Key Protect密钥保护的部署,在软删除期间(最多 9 天),部署仍会根据密钥进行注册。 要在软删除期间删除按键,请 强制删除 按键。 软删除期结束后,可以不强制删除密钥。 要确定何时可以删除密钥,请检查 密钥与部署之间的关联

加密粉碎

加密粉碎是一种破坏性行为。 密钥删除后,数据将无法恢复。

Key Protect allows you to 启动强制删除 of a key that is in use by IBM Cloud® services, including your Cloud Databases deployments. 这种行为被称为加密粉碎。 删除部署中使用的密钥会锁定包含数据的磁盘并禁用部署。 您仍然可以访问用户界面和一些元数据,如用户界面、CLI 和 API 中的安全设置,但无法访问任何数据库或其中包含的数据。 密钥删除会以 kms.secrets.delete 的形式 发送到 Activity Tracker Event Routing

自带备份密钥

如果使用Key Protect,在配置数据库时,还可以指定一个密钥来加密Cloud Object Storage磁盘,以保存部署的备份。

BYOK 备份功能仅适用于美国地区 us-southus-east,以及 eu-de

只有 us-southeu-de 中的键对区域故障具有耐久性。 为确保即使发生区域故障也能提供备份,无论部署在哪个位置,都必须使用 us-southeu-de 中的密钥。

授予授权

要让部署使用Key Protect密钥,需要在授予服务授权时 启用授权委托。 如果在使用密钥调配部署之前没有授权,调配就会失败。

使用 CLI 提供的密钥

授予适当的授权和委托后,您就可以在部署时提供 密钥名称或 CRN

在 CLI 中,在参数 JSON 对象中使用 backup_encryption_key_crn 参数。

ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE-NAME> standard us-south \
-p \ '{
  "backup_encryption_key_crn": "crn:v1:<...>:key:<id>"
}'

使用 API 中提供的密钥

在应用程序接口中,在请求正文中使用 backup_encryption_key_crn 参数。

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "blue-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-x-standard",
    "backup_encryption_key_crn": "crn:v1:<...>:key:<id>"
  }'

启用授权并调配部署后,IAM 的_授权_中会出现两个条目。 其中一个是将其身份列为委托人的部署条目。 是“用户创建”。

代表示例Key Protect授权
角色 目标 类型
AuthorizationDelegator,阅读器 <cloud-databases> 服务 Key Protect 服务 用户定义

一个用于Cloud Object Storage桶的备份,其中部署是启动器。

Cloud Databases Cloud Object Storage的Key Protect授权示例
角色 目标 类型
读取者 Cloud Object Storage 服务 Key Protect 服务 创建者 <cloud-databases-crn>

取下钥匙

IAM/ 密钥Key Protect不会阻止您删除密钥和Cloud Object Storage(第二个示例)之间的策略,但这样做会使您的备份不可用。 为防止这种情况,如果删除了管理 Cloud Databases 使用 Cloud Object Storage 密钥的 Cloud Object Storage 策略,则会重新创建该策略以继续备份部署。

删除密钥和授权时要小心。 如果有多个部署使用相同的密钥,就有可能通过撤销委托授权,无意中销毁所有这些部署的备份。 如果可能,不要在多个部署的备份中使用相同的密钥。

如果要销毁备份,可以删除密钥。 Cloud Object Storage可确保存储的不可读和不可写。 但是,使用相同密钥进行备份的任何其他部署都会遇到后续备份失败的问题。

如果确实需要在多个部署的备份中使用同一密钥,删除密钥和授权可能会产生以下副作用。

  • 如果只删除Cloud Object Storage授权(如表 2 所示),那么不仅显示为创建者的部署会受到影响,而且任何使用相同密钥的部署也会受到影响。 这些部署可能会遇到临时备份失败,直到策略自动重新创建。 除了丢失备份外,应该不会有持久影响。
  • 如果只删除由您创建的Cloud Databases委托人授权(如表 1 所示),不会立即中断,因为第二个授权仍在。 但是,如果Cloud Object Storage授权被移除,则无法重新创建,并可能导致使用相同密钥的多个部署失去备份能力。
  • 如果同时删除Cloud Object Storage授权 Cloud Databases委托人授权,使用相同密钥的所有部署将立即无法备份,并且无法重新创建正确的授权,从而有效地破坏使用该密钥的所有部署的备份。

如果重复使用钥匙,请务必小心。