在 Azure 上使用客户管理的加密密钥进行静态数据加密
客户管理的加密密钥(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
如果你希望使用自己账户拥有的加密密钥对数据进行加密,请按照以下步骤操作。
步骤 1. 创建支持 CMEK 的项目
如果你在组织中拥有 Organization Owner
角色,可以通过以下步骤创建支持 CMEK 的项目:
- 在 TiDB Cloud 控制台 中,使用左上角的下拉框切换到目标组织。
- 在左侧导航栏中,点击 Projects。
- 在 Projects 页面,点击右上角的 Create New Project。
- 填写项目名称。
- 选择启用项目的 CMEK 功能。
- 点击 Confirm 完成项目创建。
步骤 2. 完成项目的 CMEK 配置
你可以通过 TiDB Cloud 控制台,结合 Azure 门户或 Azure Resource Manager,完成项目的 CMEK 配置。
要通过 TiDB Cloud 控制台和 Azure 门户配置 CMEK,请按照以下步骤操作:
在 TiDB Cloud 控制台 中,使用左上角的下拉框切换到目标项目。
在左侧导航栏中,点击 Project Settings > Encryption Access。
在 Encryption Access 页面,点击 Create Encryption Key。
在 Key Management Service 下,选择 Azure Key Vault,并选择将要使用加密密钥的区域。
如果你的租户中尚未存在 TiDB 提供的企业应用的 Service Principal,请创建一个。TiDB Cloud 控制台会显示 Microsoft Entra Application Name 和 ID,你在本步骤及后续步骤中需要用到。要创建 Service Principal,请在 Create Service Principal 部分运行以下命令:
az ad sp create --id {Microsoft_Entra_Application_ID}更多信息请参见 Microsoft Entra ID 中的应用程序和服务主体对象。
在你的 Azure 账户中创建一个 Key Vault,或选择已有的 Key Vault。确保:
- 已启用 Purge protection。
- region 与集群的区域一致。
在 TiDB Cloud 控制台中,输入 Key Vault 名称和 Key 名称。TiDB Cloud 会为密钥名称添加唯一后缀以增强安全性。复制完整密钥名称,并在 Azure 门户中创建加密密钥。更多信息请参见 创建你的加密密钥。
为当前用户分配 Key Vault Crypto Officer 角色:
- 在 Azure 门户 中,导航到你的 Key Vault。
- 点击 Access control (IAM),然后点击 Add > Add role assignment。
- 搜索并选择 Key Vault Crypto Officer 角色,然后点击 Next。
- 在 Members 标签页,将 Assign access to 设置为 User, group, or service principal。
- 点击 + Select members,搜索并选择当前用户作为成员。然后点击 Select。
- 检查设置后,点击 Review + assign。
为加密密钥分配 Key Vault Crypto Service Encryption User 角色给 TiDB 提供的企业应用:
- 在你的 Key Vault 中,进入你创建的加密密钥对象。
- 点击 Add > Add role assignment。
- 搜索并选择 Key Vault Crypto Service Encryption User 角色,然后点击 Next。
- 在 Members 标签页,将 Assign access to 设置为 User, group, or service principal。
- 点击 + Select members,输入 TiDB 提供的 Enterprise Application Name,并选择为成员。然后点击 Select。
- 检查配置后,点击 Review + assign。
在 TiDB Cloud 控制台中,点击 Test Encryption Key and Create 以验证配置并创建加密密钥。
要通过 TiDB Cloud 控制台和 Azure Resource Manager 配置 CMEK,请按照以下步骤操作:
在 TiDB Cloud 控制台 中,使用左上角的下拉框切换到目标项目。
在左侧导航栏中,进入 Project Settings > Encryption Access。
在 Encryption Access 页面,点击 Create Encryption Key。
在 Key Management Service 下,选择 Azure Key Vault,并指定加密密钥可用的区域。
如果你的租户中尚未存在 TiDB 提供的企业应用的 Service Principal,请创建一个。要创建 Service Principal,请在 Create Service Principal 部分运行以下命令:
az ad sp create --id {Microsoft_Entra_Application_ID}更多信息请参见 Microsoft Entra ID 中的应用程序和服务主体对象。
在 Azure 门户中打开 TiDB 针对 Azure Resource Manager 的自定义部署模板。选择你的 Subscription 和 Resource Group,然后在 Instance Details 部分按如下填写:
- Region:选择你希望创建 Key Vault 的位置。该区域必须与你的集群区域一致。
- Key Vault Name:输入你的 Azure Key Vault 名称。
- Key Name:填写将在 Key Vault 中创建的完整密钥名称。在 TiDB Cloud 控制台中输入密钥名前缀并点击 Copy 获取完整密钥名称。
- Enterprise App Service Principal ID:输入 TiDB 提供的企业应用的 Service Principal ID。要获取 Service Principal ID,请运行以下命令(将
{microsoft_enterprise_app_id}
替换为 TiDB Cloud 控制台显示的实际 ID):
az ad sp show --id {microsoft_enterprise_app_id} --query id -o tsv
步骤 3. 创建集群
在 步骤 1 创建的项目下,创建一个托管在 Azure 上的 TiDB Cloud Dedicated 集群。详细步骤请参见 创建 TiDB Cloud Dedicated 集群。
当你选择云服务提供商和区域时,系统会自动匹配相应的加密密钥。如果所选云服务提供商和区域没有可用密钥,控制台会显示提示,帮助你创建密钥。
轮换 CMEK
你可以在 Azure Key Vault 中配置 加密密钥自动轮换。启用轮换后,无需在 TiDB Cloud 项目的 Encryption Access 设置中进行更新。
禁用和重新启用 CMEK
如果你需要临时撤销 TiDB Cloud 对 CMEK 的访问权限,请按照以下步骤操作:
- 在 TiDB Cloud 控制台 中,暂停项目中的对应集群。
- 在 Azure Key Vault 控制台中,右键点击加密密钥并选择 Disable。
在禁用 TiDB Cloud 对 CMEK 的访问后,如果需要恢复访问权限,请按照以下步骤操作:
- 在 Azure Key Vault 控制台中,选择加密密钥并点击 Enable。
- 在 TiDB Cloud 控制台中,恢复项目中的对应集群。