存储级加密
ClickHouse Cloud 默认启用静态加密,使用由云提供商管理的 AES 256 密钥。更多信息,请参阅:
数据库级别加密
增强加密 可在 Enterprise 计划中使用。如需升级,请前往 Cloud Console 的套餐页面。
静态数据默认使用由云提供商管理的 AES 256 密钥加密。客户可以启用透明数据加密 (TDE) ,为服务数据提供额外保护,或者提供自己的密钥,为其服务实施客户管理的加密密钥 (CMEK) 。
增强加密目前适用于 AWS 和 GCP 服务。Azure 即将推出。
透明数据加密 (TDE)
TDE 必须在创建服务时启用。现有服务无法在创建后再加密。一旦启用 TDE,就无法禁用。服务中的所有数据都将始终保持加密状态。如果您想在启用后禁用 TDE,则必须创建一个新服务,并将数据迁移到该服务中。
- 选择
Create new service - 为服务命名
- 选择 AWS 或 GCP 作为云提供商,并从下拉菜单中选择所需的区域
- 点击 Enterprise 功能的下拉菜单,然后切换启用透明数据加密 (TDE)
- 点击 Create service
客户管理的加密密钥 (CMEK)
服务一旦启用 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 密钥策略:
{ "Sid": "Allow ClickHouse Access", "Effect": "Allow", "Principal": { "AWS": [ "Encryption role ID " ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": "*" } -
保存 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 permission
- 复制 Key Resource Path
- 返回 ClickHouse Cloud,将 Key Resource Path 粘贴到 Service Settings 的 Transparent Data Encryption 部分
- 保存更改
使用 Azure KMS 启用 CMEK
- 在 ClickHouse Cloud 中,选择已加密的服务
- 点击左侧的
Settings - 在页面底部展开
Network security information - 复制
Cross Tenant App Client ID,你将在下一步中用到它 - 登录你的 Azure 订阅,并通过 Azure CLI 使用以下命令创建新的服务主体;将
{azure_cross_tenant_app_client_id}替换为你在上一步复制的值az ad sp create --id {azure_cross_tenant_app_client_id} - 复制新创建的服务主体的
Name,你将在后续步骤中用到它 - 创建 Azure Key Vault
- 在 Azure 中创建 Key Vault 密钥
- 在 Key Vault 密钥页面,点击左侧的
Access control (IAM) - 在顶部菜单中选择
Role assignments - 点击
Add,然后在顶部菜单中点击Add role assignment - 选择
Key Vault Crypto User角色,然后点击Next - 在
Add role assignment页面保留默认选项,然后点击+Select members - 粘贴你在步骤 6 中复制的服务主体名称 (以 CH-TDE 开头) ,选择该服务主体并点击
Select - 点击
Next,然后点击Review + assign - 返回 Azure Key Vault,复制以下值:
- 在
Overview页面复制 Vault URI - 在
Overview页面复制 Directory ID - 在
Keys页面复制密钥Name
- 在
- 返回 ClickHouse Cloud 中的服务设置,将步骤 16 中的值粘贴到以下字段:
- Key ID > 粘贴密钥
Name - Key Vault URI > 粘贴 Vault URI
- Key Tenant ID > 粘贴 Directory ID
- Key ID > 粘贴密钥
- 点击 Rotate KMS,等待几分钟;此操作会触发滚动重启。随后确认服务已正常运行
密钥轮换
设置好 CMEK 后,按照上文中创建新 KMS 密钥并授予权限的步骤轮换密钥。返回服务设置页面,粘贴新的 ARN (AWS) 、Key Resource Path (GCP) 或 Key Name (Azure) ,然后保存设置。服务将重启以应用新密钥。
KMS 密钥轮询器
使用 CMEK 时,系统会每 10 分钟检查一次所提供的 KMS 密钥是否有效。如果无法访问 KMS 密钥,ClickHouse 服务将停止。要恢复服务,请按照本指南中的步骤重新恢复对 KMS 密钥的访问权限,然后重启服务。
备份与恢复
备份会使用与关联服务相同的密钥进行加密。恢复加密备份时,会创建一个加密实例,并使用与原始实例相同的 KMS 密钥。如有需要,你可以在恢复后轮换 KMS 密钥;详见密钥轮换。
性能
数据库加密利用 ClickHouse 内置的数据加密虚拟文件系统功能对数据进行加密和保护。此功能使用的算法为 AES_256_CTR,预计会带来 5–15% 的性能开销,具体取决于工作负载:
