CMK、CEK

一、CMK(Customer Master Key)

翻译

  • 客户主密钥

  • 也常称为:主密钥 / 根密钥

英文

  • Customer Master Key

本质

  • 用来保护其他密钥的密钥

  • 不直接用于数据加解密

特点

  • 长期存在

  • 安全级别最高

  • 一般存放在:

    • KMS(云密钥管理服务)

    • HSM(硬件安全模块)

    • 本地安全文件(仅限低安全场景)

作用

  • 只做一件事 :

    👉 加解密 CEK


二、CEK(Column Encryption Key / Data Encryption Key)

翻译

  • 列加密密钥

  • 也可泛指:数据加密密钥

英文

  • Column Encryption Key

  • 在某些体系中也叫 DEK(Data Encryption Key)

本质

  • 真正用于数据加解密的密钥

特点

  • 生命周期短

  • 可轮换

  • 明文通常不会落盘

  • 使用时在客户端内存中存在

作用

  • 对数据库列数据进行:

    • 加密(INSERT / UPDATE)

    • 解密(SELECT)


三、CMK 与 CEK 的关系(一句话版)

CMK 管 CEK,CEK 管数据

或者更直白:

CMK 不碰数据,CEK 不暴露主密钥


四、典型加解密流程(以 JDBC 客户端加密为例)

1️⃣ 初始化阶段

  1. 客户端生成 CEK

  2. 使用 CMK 加密 CEK

  3. 加密后的 CEK 存储在:

    • 数据库系统表

    • 或密钥配置表中

👉 数据库里永远不会有 CEK 明文


2️⃣ 写数据(INSERT / UPDATE)

  1. JDBC 从数据库读取 加密的 CEK

  2. 调用 CMK 解密出 CEK(在内存中)

  3. 使用 CEK 加密列值

  4. 密文写入数据库


3️⃣ 读数据(SELECT)

  1. JDBC 读取密文列

  2. 使用 CEK 解密

  3. 返回明文给应用


五、在 openGauss Client Logic 中的对应关系

概念 openGauss 中对应
CMK CREATE CLIENT MASTER KEY
CEK CREATE COLUMN ENCRYPTION KEY
加密执行 JDBC ClientLogic + JNI
密钥存储 LOCAL / KMS(通过 KeyAdpt)
相关推荐
这个DBA有点耶8 小时前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
SelectDB9 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB9 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB9 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
这个DBA有点耶11 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
对象存储与RustFS12 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
..Dauntless..14 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划14 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
ly768914 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档