跳转到主要内容

存储级加密

ClickHouse Cloud 默认启用静态加密,使用由云提供商管理的 AES 256 密钥。更多信息,请参阅:

数据库级别加密

静态数据默认使用由云提供商管理的 AES 256 密钥加密。客户可以启用透明数据加密 (TDE) ,为服务数据提供额外保护,或者提供自己的密钥,为其服务实施客户管理的加密密钥 (CMEK) 。 增强加密目前适用于 AWS 和 GCP 服务。Azure 即将推出。

透明数据加密 (TDE)

TDE 必须在创建服务时启用。现有服务无法在创建后再加密。一旦启用 TDE,就无法禁用。服务中的所有数据都将始终保持加密状态。如果您想在启用后禁用 TDE,则必须创建一个新服务,并将数据迁移到该服务中。
  1. 选择 Create new service
  2. 为服务命名
  3. 选择 AWS 或 GCP 作为云提供商,并从下拉菜单中选择所需的区域
  4. 点击 Enterprise 功能的下拉菜单,然后切换启用透明数据加密 (TDE)
  5. 点击 Create service

客户管理的加密密钥 (CMEK)

删除用于加密 ClickHouse Cloud 服务的 KMS 密钥会导致您的 ClickHouse 服务停止,其数据以及现有备份都将无法找回。为防止在轮换密钥时意外丢失数据,建议在删除旧 KMS 密钥前先保留一段时间。
服务一旦启用 TDE 加密,客户即可通过更新密钥来启用 CMEK。更新 TDE 设置后,服务会自动重启。在此过程中,旧 KMS 密钥会先解密数据加密密钥 (DEK),再由新 KMS 密钥对 DEK 重新加密。这样可确保服务重启后,后续加密操作将使用新的 KMS 密钥。该过程可能需要几分钟。
  1. 在 ClickHouse Cloud 中,选择已加密的服务
  2. 点击左侧的 Settings
  3. 在页面底部,展开 Network security 信息
  4. 复制 Encryption role ID (AWS) 或 Encryption Service Account (GCP) - 您将在后续步骤中用到它
  5. 为 AWS 创建 KMS 密钥
  6. 点击该密钥
  7. 按如下方式更新 AWS 密钥策略:
    {
        "Sid": "Allow ClickHouse Access",
        "Effect": "Allow",
        "Principal": {
            "AWS": [ "Encryption role ID " ]
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    }
    
  8. 保存 Key policy
  9. 复制 Key ARN
  10. 返回 ClickHouse Cloud,将 Key ARN 粘贴到 Service Settings 的 Transparent Data Encryption 部分
  11. 保存更改
  1. 在 ClickHouse Cloud 中,选择已加密的服务
  2. 点击左侧的 Settings
  3. 在页面底部,展开 Network security 信息
  4. 复制 Encryption Service Account (GCP) - 您将在后续步骤中用到它
  5. 为 GCP 创建 KMS 密钥
  6. 点击该密钥
  7. 向上面第 4 步复制的 GCP Encryption Service Account 授予以下权限。
    • Cloud KMS CryptoKey Encrypter/Decrypter
    • Cloud KMS Viewer
  8. 保存 Key permission
  9. 复制 Key Resource Path
  10. 返回 ClickHouse Cloud,将 Key Resource Path 粘贴到 Service Settings 的 Transparent Data Encryption 部分
  11. 保存更改
  1. 在 ClickHouse Cloud 中,选择已加密的服务
  2. 点击左侧的 Settings
  3. 在页面底部展开 Network security information
  4. 复制 Cross Tenant App Client ID,你将在下一步中用到它
  5. 登录你的 Azure 订阅,并通过 Azure CLI 使用以下命令创建新的服务主体;将 {azure_cross_tenant_app_client_id} 替换为你在上一步复制的值 az ad sp create --id {azure_cross_tenant_app_client_id}
  6. 复制新创建的服务主体的 Name,你将在后续步骤中用到它
  7. 创建 Azure Key Vault
  8. 在 Azure 中创建 Key Vault 密钥
  9. 在 Key Vault 密钥页面,点击左侧的 Access control (IAM)
  10. 在顶部菜单中选择 Role assignments
  11. 点击 Add,然后在顶部菜单中点击 Add role assignment
  12. 选择 Key Vault Crypto User 角色,然后点击 Next
  13. Add role assignment 页面保留默认选项,然后点击 +Select members
  14. 粘贴你在步骤 6 中复制的服务主体名称 (以 CH-TDE 开头) ,选择该服务主体并点击 Select
  15. 点击 Next,然后点击 Review + assign
  16. 返回 Azure Key Vault,复制以下值:
    • Overview 页面复制 Vault URI
    • Overview 页面复制 Directory ID
    • Keys 页面复制密钥 Name
  17. 返回 ClickHouse Cloud 中的服务设置,将步骤 16 中的值粘贴到以下字段:
    • Key ID > 粘贴密钥 Name
    • Key Vault URI > 粘贴 Vault URI
    • Key Tenant ID > 粘贴 Directory ID
  18. 点击 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% 的性能开销,具体取决于工作负载:
最后修改于 2026年6月10日