Key Protect 集成
第2代
您存储在 Cloud Databases 中的数据默认会使用随机生成的密钥进行加密。 为了控制加密密钥,您可以通过“自带密钥”(BYOK)功能 IBM Key Protect,并使用您自己的密钥之一对数据库和备份进行加密。
要开始使用,请在 Key Protect 您的 IBM Cloud 账户。
在 Key Protect
访问您的 Key Protect 实例,并 生成或输入密钥。
在用户界面中授予服务授权
授权 Key Protect 用于 Cloud Databases 的部署:
- 打开 IBM Cloud 仪表板。
- 在菜单栏中,点击“管理”→“访问(IAM)”。
- 在侧边导航中,单击授权。
- 单击创建。
- 在 “源服务”菜单中,选择该部署的服务。 例如,Databases for PostgreSQL 或者 Databases for MongoDB。
- 在 “源”服务资源菜单中,选择“所有资源”。
- 在目标服务菜单中,选择 Key Protect。
- 选择或保留默认值 “Account”作为目标服务的资源组
- 在“目标服务实例 ID”菜单中,选择要授权的服务实例。
- 启用读取者角色。
- 要使用“自带密钥”(BYOK),请在 “授权从属服务” 部分中选中 “启用授权委托”复选框。
- 单击授权。
如果在为部署分配密钥之前未获得服务授权,则配置将失败。
如果您想设置更严格的授权策略,请将策略配置为针对显式的根密钥 CRN 或特定的 Key Protect 实例。 目前不支持针对 Key Protect 钥匙扣设置的限制。
在 CLI 中授予服务授权
- 创建一项授权策略,允许“Cloud Databases”服务访问 CLI 上的“Key Protect”服务实例。 有关完整参数列表,请参阅 IAM CLI 参考 文档。
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"
如果在为部署分配密钥之前未获得服务授权,则配置将失败。
如果您想设置更严格的授权策略,请将策略配置为针对显式的根密钥 CRN 或特定的 Key Protect 实例。 目前不支持针对 Key Protect 钥匙扣设置的限制。
通过 REST API 授予服务授权
- 创建一项授权策略,允许“Cloud Databases”服务通过 IAM REST API 访问“Key Protect”服务实例。
如需完整的 API 参考文档,请参阅 IAM 策略管理 API。
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "CUSTOMER_ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "<SERVICE-NAME>"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
},
{
"role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"operator": "stringEquals",
"value": "CUSTOMER_ACCOUNT_ID"
},
{
"name": "serviceName",
"operator": "stringEquals",
"value": "kms"
}
]
}
]
}'
如果在为部署分配密钥之前未获得服务授权,则配置将失败。
如果您想设置更严格的授权策略,请将策略配置为针对显式的根密钥 CRN 或特定的 Key Protect 实例。 目前不支持针对 Key Protect 钥匙扣设置的限制。
使用 Key Protect 键
在授予您的 Cloud Databases 部署使用密钥的权限后,您在配置部署时需提供 密钥名称或 CRN。 该部署使用您的加密密钥对您的数据进行加密。
在配置过程中,在用户界面中使用 Key Protect 键
如果从目录页面进行配置,请从下拉菜单中选择“Key Protect”实例和密钥。
在 CLI 中进行配置时使用 Key Protect 键
在命令行界面(CLI)中,请在参数 JSON 对象中使用 dataservices.encryption.disk 参数,为您的服务实例分配一个根密钥 CRN。
ibmcloud resource service-instance-create <INSTANCE-NAME> <SERVICE-NAME> <PLAN-NAME> REGION -p '{"dataservices":{"encryption":{"disk":"KMS_KEY_CRN"}}}'
Key Protect 键必须通过其完整的CRN来识别,而不仅仅是其ID。 Key Protect 的CRN格式为 crn:v1:<...>:key:<id>。
在 API 的配置过程中使用 Key Protect 密钥
在 API 中,请在请求正文中使用 dataservices.encryption.disk 参数。
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H "Authorization: Bearer <IAM token>" -H 'Content-Type: application/json' -d '{
"name": "<INSTANCE-NAME>",
"target": "ca-mon",
"resource_group": "<A RESOURCE GROUP GUID>",
"resource_plan_id": "<A PLAN ID>",
"parameters": {
"dataservices": {
"encryption": {
"disk": "KMS_KEY_CRN"
}
}
}
Key Protect 键必须通过其完整的CRN来识别,而不仅仅是其ID。 Key Protect 的CRN格式为 crn:v1:<...>:key:<id>。
密钥轮换
Key Protect 提供手动和自动 密钥轮换功能,且 Cloud Databases 部署支持密钥轮换。 当您旋转密钥时,该过程会启动一个 _KMS 状态同步_任务,并使用新密钥对您的部署进行重新加密。 该任务会显示在您部署的 “概览”页面中的 “任务” 页面上,并且相关的 Key Protect 和 Cloud Databases 事件会被发送至 Activity Tracker。
如需了解更多信息,请参阅 “手动或自动旋转”。
删除部署
如果您删除了一个受 Key Protect 密钥保护的部署,在软删除期间(最长9天),该部署仍会与该密钥保持关联。 若要在软删除期间删除该键,请 强制删除 该键。 软删除期结束后,无需强制操作即可删除该键。 要确定何时可以删除该密钥,请检查 该密钥与您的部署之间的关联。
加密粉碎
加密粉碎是一种破坏性操作。 一旦删除该密钥,您的数据将无法恢复。
Key Protect 允许您 强制删除正在 被 IBM Cloud® 服务(包括您的第2代 Cloud Databases 部署)使用的键。 这种行为被称为“加密粉碎”。 删除部署中正在使用的密钥会锁定包含您数据的磁盘,并使您的部署失效。 您仍然可以通过用户界面(UI)、命令行界面(CLI)和API访问用户界面以及某些元数据(例如安全设置),但无法访问任何数据库或其中包含的数据。
该键的删除请求已作为 kms.secrets.delete发送至 Activity Tracker Event Routing。
请自备钥匙以备不时之需
如果您使用 Key Protect,在配置数据库时,还可以指定一个密钥来加密存储您部署备份的 IBM® Cloud Block Storage for Virtual Private Cloud 磁盘。
该备份继承了与数据库相同的加密密钥。 从数据库创建备份时,无法提供不同的加密密钥。
授予代表团授权
要使您的部署能够使用 Key Protect 密钥,您需要在授予服务授权时 启用“允许授权委托” 选项。 如果在为部署分配密钥之前未提供委托授权,则配置将失败。
启用委托并完成部署配置后,IAM 中的 “授权”部分将显示两条条目。 其中一项是该部署的条目,其中将其状态列为“委托方”。 这是“用户创建的”。
| 角色 | 源 | 目标 | 类型 |
|---|---|---|---|
| AuthorizationDelegator, 阅读器 | <cloud-databases> 服务 |
Key Protect 服务 | 用户定义 |
此外,还需为服务实例及其备份(如有)的 Block Storage for VPC 卷分配一个,其中部署方是发起者。
| 角色 | 源 | 目标 | 类型 |
|---|---|---|---|
| 读取者 | Block Storage for VPC 服务 | Key Protect 服务 | 创建者 <cloud-databases-crn> |
删除密钥
IAM/ Key Protect 不会阻止您删除键与 Block Storage for VPC 之间的策略(第二个示例),但这样做可能会导致您的主题/分区无法恢复。
常见误区
删除密钥和授权时请务必小心。 如果您有多个使用相同密钥的部署,撤销委托授权可能会无意中导致所有这些部署的数据丢失。 如果可能的话,请不要在多个部署中使用同一把密钥。
如果您想销毁与实例相关的数据,可以删除该密钥。Block Storage for VPC 确保存储空间既不可读也不可写。 然而,任何其他使用该密钥的部署(或其备份)都将随后出现故障。
如果您确实需要将同一密钥用于多个部署和/或备份,则删除密钥和授权可能会产生以下副作用。 如果您删除了 Block Storage for VPC 卷授权(如表2所示),不仅显示为创建者的部署会受到影响,任何也使用该密钥的部署都会受到影响。 在您提交支持工单并请求重新创建该策略之前,这些部署将会出现故障。
如果要重复使用密钥,请务必谨慎。