📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

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

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

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

限制

  • 目前,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 控制台中,使用左上角的下拉框切换到目标组织。
    2. 在左侧导航栏,点击 Projects
    3. Projects 页面,点击右上角的 Create New Project
    4. 填写项目名称。
    5. 选择启用项目的 CMEK 功能。
    6. 点击 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 控制台中,使用左上角的下拉框切换到目标项目。
      2. 在左侧导航栏,点击 Project Settings > Encryption Access
      3. Encryption Access 页面,点击 Create Encryption Key 进入密钥创建页面。
      4. 密钥提供方仅支持 AWS KMS。你可以选择加密密钥可用的区域。
      5. 复制并保存 JSON 文件为 ROLE-TRUST-POLICY.JSON。该文件描述了信任关系。
      6. 将此信任关系添加到 AWS KMS 的密钥策略中。更多信息请参考 AWS KMS 中的密钥策略
      7. 在 TiDB Cloud 控制台的密钥创建页面底部,填写从 AWS KMS 获取的 KMS Key ARN
      8. 点击 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 Support
        • <region> 是你希望创建集群的区域,例如 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 控制台恢复该项目下的所有集群。

      文档内容是否有帮助?