SuperAPI AI 工具集

enabling-cmek-encryption

安全与审计

查看项目

更新于 10-15 14:00

技能介绍

Enabling CMEK Encryption 是一项用于在 CockroachDB Cloud 集群上启用客户管理加密密钥(Customer-Managed Encryption Keys,CMEK)的技能。启用后,静态数据加密由组织自有云服务商 KMS(AWS KMS、GCP Cloud KMS 或 Azure Key Vault)中的密钥控制,组织由此掌握密钥的生命周期、轮换与吊销。

适用场景

该技能适用于以下情况:为满足监管或合规要求(SOC 2、HIPAA、PCI DSS)而启用 CMEK;在初始设置后验证 CMEK 是否正确配置;按组织密钥轮换策略轮换 CMEK 密钥;响应关于静态加密的安全审计发现;以及了解 CMEK 的要求与计划前提。

前提条件

使用 CMEK 需要满足:集群为 CockroachDB Cloud Advanced 计划(Basic 或 Standard 计划不支持 CMEK);Advanced 计划集群上已启用 Advanced Security Add-on;已配置云服务商 KMS——AWS 需与集群同区域的 KMS 密钥及相应 IAM 策略,GCP 需同区域的 Cloud KMS 密钥环与密钥及相应 IAM 绑定,Azure 需同区域的 Key Vault 密钥及相应访问策略;ccloud CLI 已通过 Cluster Admin 角色认证;跨账号访问方面,CockroachDB Cloud 服务账号须具备使用该 KMS 密钥的权限。

核验计划资格可使用命令:ccloud cluster info <cluster-name> -o json,并查看其中的 "plan": "ADVANCED" 以及 Advanced Security Add-on 状态。

配置决策

开始前需确定用户使用哪个云服务商的 KMS,并仅执行对应子章节的步骤。AWS KMS 适用于集群运行在 AWS 时,需要与集群同区域的对称加密密钥;GCP Cloud KMS 适用于集群运行在 GCP 时,需要同区域的密钥环与密钥;Azure Key Vault 适用于集群运行在 Azure 时,需要同区域且含密钥的 Key Vault。

操作步骤

第一步,核验计划与附加组件资格,运行 ccloud cluster info <cluster-name> -o json。若为 Standard 计划,CMEK 不可用,升级路径为升级到 Advanced 计划并启用 Advanced Security Add-on;若为 Advanced 计划但未启用 Advanced Security Add-on,需先在 Cloud Console 中启用。

第二步,在云服务商中创建 KMS 密钥,仅执行对应云厂商的子章节。AWS KMS 使用 aws kms create-key 创建对称加密密钥,并授予 CockroachDB Cloud 服务账号访问权限(kms:Encrypt、kms:Decrypt、kms:GenerateDataKey、kms:DescribeKey)。GCP Cloud KMS 先创建密钥环再创建对称加密密钥,并通过 add-iam-policy-binding 授予 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。Azure Key Vault 在已有 Key Vault 中创建密钥,并通过 Key Vault 访问策略授予 CockroachDB Cloud 托管标识访问权限。

第三步,在集群上配置 CMEK,使用 ccloud cluster update <cluster-id> --cmek-key-spec '<key-spec-json>',密钥规格 JSON 格式因云服务商而异,具体结构需参考 CockroachDB Cloud 文档。

第四步,验证 CMEK 配置,运行 ccloud cluster info <cluster-name> -o json,确认 cmek_config 显示已启用状态及正确的密钥 URI。CMEK 状态不作为 SQL 集群设置暴露,对于托管集群,Cloud Console 的 Cluster → Settings → Encryption 页面是权威来源。

第五步,测试密钥可访问性,启用后通过创建、查询测试表验证读写正常,示例:CREATE TABLE cmek_test (id INT PRIMARY KEY, data STRING); INSERT INTO cmek_test VALUES (1, 'encryption test'); SELECT * FROM cmek_test; DROP TABLE cmek_test;。

安全注意事项

CMEK 配置错误可能导致数据无法访问。若 KMS 密钥被删除、禁用或访问被吊销,集群将无法读写数据。启用前应确保 KMS 密钥已启用适当的删除保护,核实 IAM/访问策略授予正确,确认 KMS 密钥区域与集群区域一致,并记录密钥 URI 与访问策略。密钥管理风险包括:删除 KMS 密钥会使集群所有数据永久不可访问;吊销 CockroachDB 对密钥的访问会导致集群停止提供读写服务;密钥轮换需按组织策略规划,CockroachDB 支持使用轮换后的密钥自动重新加密。

回滚

CMEK 一旦在集群上启用便无法禁用。但可以随时轮换到新密钥;若访问被误吊销,恢复 IAM/访问策略即可恢复运行;若 CMEK 配置根本性错误,可创建新集群并迁移数据。紧急情况下密钥访问丢失时,应立即恢复 KMS 密钥访问(IAM 策略、重新启用密钥),密钥访问恢复后集群即可恢复运行;若密钥已被永久删除,则无法恢复数据。

参考资料

相关技能:auditing-cloud-cluster-security(运行完整的安全态势审计)。官方 CockroachDB 文档包括 CMEK Overview、Managing CMEK for Dedicated Clusters、CockroachDB Cloud Security Overview。云服务商 KMS 文档包括 AWS KMS、GCP Cloud KMS、Azure Key Vault。