数据加密
存储层加密
ClickHouse Cloud 默认启用静态数据加密,使用由云服务提供商管理的 AES-256 密钥。更多信息请参阅:
数据库级加密
Enhanced Encryption is available in the Enterprise plan. To upgrade, visit the plans page in the cloud console.
静态存储的数据(data at rest)默认使用云提供商管理的 AES 256 密钥进行加密。客户可以启用透明数据加密(Transparent Data Encryption,TDE),为服务数据提供额外的保护层,或者提供自己的密钥,为其服务实现客户管理加密密钥(Customer Managed Encryption Keys,CMEK)。
增强加密目前适用于 AWS 和 GCP 服务。Azure 即将支持。
透明数据加密(TDE)
TDE 必须在创建服务时启用。现有服务在创建后无法再启用加密。一旦启用 TDE,就无法禁用。服务中的所有数据将保持加密状态。如果希望在启用 TDE 后将其禁用,必须创建一个新服务并将数据迁移过去。
- 选择
Create new service - 为服务命名
- 选择 AWS 或 GCP 作为云提供商,并从下拉列表中选择所需区域
- 点击 Enterprise features 的下拉列表,切换启用 Transparent Data Encryption (TDE)
- 点击
Create service
客户管理加密密钥(CMEK)
删除用于为 ClickHouse Cloud 服务加密的 KMS 密钥将导致 ClickHouse 服务被停止,其数据以及现有备份将无法恢复。为防止在轮换密钥时意外丢失数据,建议在删除前的一段时间内保留旧的 KMS 密钥。
服务一旦使用 TDE 加密,客户即可更新密钥以启用 CMEK。更新 TDE 设置后,服务将自动重启。在此过程中,旧的 KMS 密钥会解密数据加密密钥(DEK),新的 KMS 密钥会重新加密 DEK。这样可以确保服务在重启后,在后续的加密操作中使用新的 KMS 密钥。此过程可能需要几分钟时间。
使用 AWS KMS 启用 CMEK
-
在 ClickHouse Cloud 中选择已加密的服务
-
点击左侧的 Settings
-
在页面底部展开 Network security 信息
-
复制 Encryption role ID(AWS)或 Encryption Service Account(GCP)——后续步骤中会用到
-
点击该密钥
-
按如下方式更新 AWS 密钥策略:
-
保存 Key policy
-
复制 Key ARN
-
返回 ClickHouse Cloud,将 Key ARN 粘贴到该服务 Service Settings 中的 Transparent Data Encryption 区域
-
保存更改
使用 GCP KMS 启用 CMEK
- 在 ClickHouse Cloud 中选择已加密的服务
- 点击左侧的 Settings
- 在页面底部展开 Network security 信息
- 复制 Encryption Service Account(GCP)——后续步骤中会用到
- 为 GCP 创建 KMS 密钥
- 点击该密钥
- 为在上面第 4 步复制的 GCP Encryption Service Account 授予以下权限:
- Cloud KMS CryptoKey Encrypter/Decrypter
- Cloud KMS Viewer
- 保存 Key 权限设置
- 复制 Key Resource Path
- 返回 ClickHouse Cloud,将 Key Resource Path 粘贴到该服务 Service Settings 中的 Transparent Data Encryption 区域
- 保存更改
密钥轮换
设置好 CMEK 之后,通过执行上述创建新 KMS 密钥并授予权限的流程来轮换密钥。然后返回服务设置页面,粘贴新的 ARN(AWS)或 Key Resource Path(GCP),并保存设置。服务将重启以应用新密钥。
KMS 密钥轮询器
在使用 CMEK 时,系统每 10 分钟检查一次所提供的 KMS 密钥是否仍然有效。如果对该 KMS 密钥的访问权限失效,ClickHouse 服务将会停止运行。要恢复服务,请先按照本指南中的步骤恢复对 KMS 密钥的访问,然后重新启动服务。
备份和恢复
备份会使用与关联服务相同的密钥进行加密。当你恢复一个已加密的备份时,会创建一个新的加密实例,并使用与原始实例相同的 KMS 密钥。如果需要,你可以在恢复后轮换 KMS 密钥;更多详情请参见 密钥轮换。
性能
数据库加密功能使用 ClickHouse 内置的用于数据加密的虚拟文件系统功能来对数据进行加密和保护。该功能使用的算法为 AES_256_CTR,预计会根据具体工作负载带来 5–15% 的性能损耗:
