跳至主要内容

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

ClickHouse 云允许客户通过利用自己的密钥管理服务 (KMS) 密钥来保护其服务。我们利用 ClickHouse 的内置 用于数据加密的虚拟文件系统功能 来加密和保护您的数据。然后,ClickHouse 云服务使用的加密密钥使用客户提供的 KMS 密钥进行加密和保护,此过程称为 信封加密。为了使这项工作正常进行,该服务只需要访问您的 KMS 密钥,以便在运行时解密和加密数据加密密钥。

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

当前支持的 KMS 提供商

即将推出

危险

删除用于加密 ClickHouse 云服务的 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 云集成创建新的 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 云帐户。

  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 云服务。为了防止这种情况,大多数提供商不会立即删除密钥,而是安排删除,请查看您的提供商文档或联系 支持 以获取有关此过程的帮助。

密钥轮换

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

性能

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

此功能使用的算法是AES_256_CTR,预计会根据工作负载产生 5-15% 的性能损失。

CMEK Performance Penalty