📣
TiDB Cloud Essential 开放公测中。此页面由 AI 自动翻译,英文原文请见此处。

使用客户管理加密密钥(CMEK)在 AWS 上实现静态数据加密



客户管理加密密钥(Customer-Managed Encryption Key,CMEK)允许你通过使用完全由你控制的对称加密密钥,来保护 TiDB Cloud Dedicated 集群中的静态数据安全。该密钥被称为 CMEK 密钥。

一旦为项目启用 CMEK,该项目下创建的所有集群都会使用 CMEK 密钥对其静态数据进行加密。此外,这些集群生成的任何备份数据也会使用同一密钥进行加密。如果未启用 CMEK,TiDB Cloud 会使用托管密钥(escrow key)对 TiDB Cloud Dedicated 集群中的所有静态数据进行加密。

限制

  • 目前,TiDB Cloud 仅支持使用 AWS KMS 和 Azure Key Vault 提供 CMEK。
  • 若要使用 CMEK,需在创建项目时启用 CMEK,并在创建集群前完成 CMEK 相关配置。无法为已存在的项目启用 CMEK。
  • 目前,在已启用 CMEK 的项目中,只能创建托管在 AWS 和 Azure 上的 TiDB Cloud Dedicated 集群
  • 目前,在已启用 CMEK 的项目中,不支持 双区域备份
  • 目前,在已启用 CMEK 的项目中,可以在 AWS 和 Azure 上启用 CMEK。对于每个云服务商,每个区域只能配置一个唯一的加密密钥。你只能在已为所选云服务商配置加密密钥的区域创建集群。

启用 CMEK

如果你希望使用自己账户下的 KMS 对数据进行加密,请按照以下步骤操作。

步骤 1. 创建启用 CMEK 的项目

如果你拥有组织的 Organization Owner 角色,可以通过 TiDB Cloud 控制台或 API 创建启用 CMEK 的项目。

    要创建启用 CMEK 的项目,请按照以下步骤操作:

    1. TiDB Cloud 控制台中,进入组织的 My TiDB 页面,然后点击 Create Project
    2. 在弹出的对话框中,输入项目名称。
    3. 选择 Create for Dedicated Cluster 选项。
    4. 选择启用项目的 CMEK 功能。
    5. 点击 Confirm 完成项目创建。

    你可以通过 TiDB Cloud API 的 Create a CMEK-enabled project 接口完成此步骤。请确保 aws_cmek_enabled 字段设置为 true

    目前,TiDB Cloud API 仍处于 beta 阶段。更多信息请参见 TiDB Cloud API 文档

    步骤 2. 完成项目的 CMEK 配置

    你可以通过 TiDB Cloud 控制台或 API 完成项目的 CMEK 配置。

      要完成项目的 CMEK 配置,请按照以下步骤操作:

      1. TiDB Cloud 控制台中,进入组织的 My TiDB 页面,然后点击 Project view 页签。
      2. 在项目视图中,找到目标项目,然后点击该项目的
      3. 在左侧导航栏中,点击 Project Settings 下的 Encryption Access
      4. Encryption Access 页面,点击 Create Encryption Key 进入密钥创建页面。
      5. 密钥提供方仅支持 AWS KMS。你可以选择加密密钥可用的区域。
      6. 复制并保存 JSON 文件为 ROLE-TRUST-POLICY.JSON。该文件描述了信任关系。
      7. 将此信任关系添加到 AWS KMS 的密钥策略中。更多信息请参考 AWS KMS 中的密钥策略
      8. 在 TiDB Cloud 控制台的密钥创建页面底部,填写从 AWS KMS 获取的 KMS Key ARN
      9. 点击 Create 创建密钥。
      1. 在 AWS KMS 上配置密钥策略,并将以下信息添加到密钥策略中:

        { "Version": "2012-10-17", "Id": "cmek-policy", "Statement": [ // EBS-related policy { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<pingcap-account>", "kms:ViaService": "ec2.<region>.amazonaws.com" } } }, // S3-related policy { "Sid": "Allow TiDB cloud role to use KMS to store encrypted backup to S3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<pingcap-account>:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }, ... // user's own admin access to KMS ] }
        • <pingcap-account> 是你的 TiDB Cloud Dedicated 集群运行所在的账户。如果你不清楚该账户,请联系 TiDB Cloud Support
        • <region> 是你希望创建 TiDB Cloud Dedicated 集群的区域,例如 us-west-2。如果你不想指定区域,可以将 <region> 替换为通配符 *,并放在 StringLike 块中。
        • 有关上述 EBS 相关策略的更多信息,请参考 AWS 文档
        • 有关上述 S3 相关策略的更多信息,请参考 AWS 博客
      2. 调用 TiDB Cloud API 的 Configure AWS CMEK 接口。

        目前,TiDB Cloud API 仍处于 beta 阶段。更多信息请参见 TiDB Cloud API 文档

      步骤 3. 创建集群

      步骤 1 创建的项目下,创建托管在 AWS 上的 TiDB Cloud Dedicated 集群。详细步骤请参考 创建 TiDB Cloud Dedicated 集群。请确保集群所在区域与 步骤 2 中配置的区域一致。

      轮换 CMEK

      你可以在 AWS KMS 上配置 自动 CMEK 轮换。启用轮换后,无需在 TiDB Cloud 项目的 Encryption Access 设置中更新,包括 CMEK ID。

      撤销与恢复 CMEK

      如果你需要临时撤销 TiDB Cloud 对 CMEK 的访问权限,请按照以下步骤操作:

      1. 在 AWS KMS 控制台撤销相应权限,并更新 KMS Key 策略。
      2. 在 TiDB Cloud 控制台暂停该项目下的所有集群。

      撤销 TiDB Cloud 对 CMEK 的访问权限后,如果需要恢复访问权限,请按照以下步骤操作:

      1. 在 AWS KMS 控制台恢复 CMEK 访问策略。
      2. 在 TiDB Cloud 控制台恢复该项目下的所有集群。

      文档内容是否有帮助?