跳至主要内容

客户管理加密密钥 (CMEK)

ClickHouse Cloud 使客户能够通过利用他们自己的密钥管理服务 (KMS) 密钥来保护其服务。我们利用 ClickHouse 内置的用于数据加密的虚拟文件系统功能来加密和保护您的数据。然后,ClickHouse Cloud 服务使用的 数据加密密钥使用客户提供的 KMS 密钥进行加密和保护,此过程称为信封加密。为此,所有服务所需的是在运行时访问您的 KMS 密钥以解密和加密数据加密密钥。

此功能专供 ClickHouse Cloud 生产服务使用,要启用此功能,请联系支持。客户管理加密密钥必须在服务创建时指定,现有服务无法使用此选项,请查看备份和恢复以获取替代选项。

当前支持的 KMS 提供商

即将推出

危险

删除用于加密 ClickHouse Cloud 服务的 KMS 密钥将导致您的 ClickHouse 服务停止,其数据将无法检索,现有备份也将无法检索。

步骤 1. 创建 KMS 密钥

使用 AWS KMS

您可以通过 AWS 控制台、CloudFormation 堆栈或使用 Terraform 提供程序创建 AWS KMS 密钥。我们将在下面逐步介绍每个步骤。

选项 1. 通过 AWS 控制台手动创建 KMS 密钥

注意:如果您已经有要使用的 KMS 密钥,则可以继续执行下一步。

  1. 登录您的 AWS 账户并导航到密钥管理服务。

  2. 在左侧选择**客户管理的密钥**。

  3. 点击右上角的**创建密钥**。

  4. 选择**密钥类型**“对称”和**密钥用途**“加密和解密”,然后点击下一步。

  5. 输入密钥的别名(显示名称),然后点击下一步。

  6. 选择密钥管理员,然后点击下一步。

  7. (可选)选择密钥用户,然后点击下一步。

  8. 在**密钥策略**底部添加以下代码片段

    {
    "Sid": "Allow ClickHouse Access",
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::576599896960:role/prod-kms-request-role"
    },
    "Action": ["kms:GetPublicKey",
    "kms:Decrypt",
    "kms:GenerateDataKeyPair",
    "kms:Encrypt",
    "kms:GetKeyRotationStatus",
    "kms:GenerateDataKey",
    "kms:DescribeKey"],
    "Resource": "*"
    }

    Encryption Key Policy

  9. 点击完成。

  10. 点击您刚刚创建的密钥的别名。

  11. 使用复制按钮复制 ARN。

选项 2. 使用 CloudFormation 堆栈配置或创建 KMS 密钥

ClickHouse 提供了一个简单的 Cloud Formation 堆栈来部署密钥的 AWS 策略。此方法支持现有的 KMS 密钥以及为 ClickHouse Cloud 集成创建新的 KMS 密钥。

使用现有的 KMS 密钥
  1. 登录您的 AWS 账户。
  2. 访问此链接以准备 CloudFormation 模板。
  3. 输入您要使用的 KMS 密钥的 ARN(以逗号分隔,中间没有空格)。
  4. 接受“我承认 AWS CloudFormation 可能会创建具有自定义名称的 IAM 资源。”,然后点击**创建堆栈**。
  5. 记下堆栈输出中的RoleArnKeyArn,因为下一步将需要它们。
创建新的 KMS 密钥
  1. 登录您的 AWS 账户。
  2. 访问此链接以准备 CloudFormation 模板。
  3. 接受“我承认 AWS CloudFormation 可能会创建具有自定义名称的 IAM 资源。”,然后点击**创建堆栈**。
  4. 记下堆栈输出中的KeyArn,因为下一步将需要它。

选项 3. 通过 Terraform 创建 KMS 密钥

对于希望通过 Terraform 部署密钥的用户,请查看 AWS 提供程序文档此处

步骤 2. 使用客户管理加密密钥启动 ClickHouse 服务

  1. 登录您的 ClickHouse Cloud 账户。

  2. 如果您尚未在服务屏幕中,请转到该屏幕。

  3. 点击**新建服务**。

  4. 选择您的云提供商、区域并命名您的服务。

  5. 点击**设置加密密钥 (CMEK)** - 示例显示了使用 AWS KMS 提供商的情况。

  6. 将您的 AWS ARN 粘贴到窗口右侧的字段中。

    Encryption Setup

  7. 系统将检查以确保可以访问加密密钥。

  8. 在 AWS ARN 框上方看到**有效**消息后,点击**创建服务**。

  9. 服务磁贴右上角将显示一个密钥图标,以告知您它已加密。

    Service Encrypted

备份和恢复

备份使用与相关联的服务相同的密钥进行加密。还原加密的备份将创建一个使用与原始实例相同的 KMS 密钥的加密实例,如果需要,可以轮换 KMS 密钥,请查看密钥轮换以获取详细信息。

可以通过还原非加密备份并为新服务指定所需的 KMS 密钥来创建加密实例,请联系支持以获取帮助。

KMS 密钥轮询器

使用信封加密时,我们需要定期确认提供的 KMS 密钥是否仍然有效。我们每 10 分钟检查一次 KMS 密钥的访问权限,当访问权限不再有效时,我们将停止 ClickHouse 服务。要恢复服务,请按照本指南中的步骤重新建立访问权限,然后启动您的服务。

由于此功能的性质,在删除 KMS 密钥后无法恢复 ClickHouse Cloud 服务。为防止这种情况,大多数提供商不会立即删除密钥,而是安排其进行删除,请查看您的提供商文档或联系支持以获取有关此过程的帮助。

密钥轮换

在同一 KMS 提供商内支持密钥轮换。此操作将使用新的 KMS 密钥重新加密数据加密密钥,此请求将立即处理,而不会导致 ClickHouse 服务出现任何停机时间。要执行此操作,请确保可以访问配置的 KMS 密钥和新的 KMS 密钥,并与支持联系以获取 KMS 密钥信息。

性能

如本页所述,我们利用 ClickHouse 内置的用于数据加密的虚拟文件系统功能来加密和保护您的数据。

此功能使用的算法为AES_256_CTR,根据工作负载的不同,预计会带来 5% 到 15% 的性能损耗。

CMEK Performance Penalty