数据库加密工具/数据库透明加密概述_入门白客详细教程
数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密,即透明加密(简称 TDE)。数据在写入存储设备前自动进行加密,读取时自动解密,该过程对用户是透明的,黑客和恶意用户无法从数据文件、数据库备份或磁盘中读取到敏感数据。
数据库的用户数据和备份最终都是以二进制的形式,存储在磁盘或其它形式的永久存储上。无数据访问权限的用户可能会接触到这些存储,再通过外部操作对数据存储进行读取和解读,从而导致数据泄露。虽然 数据库的数据以压缩形式保存,具备一定的保密性,但仍旧有被破解的风险。为了保护存储在内存和硬盘中数据的安全, 数据库现阶段支持国际上主流的加密算法 AES,与此同时,还支持国密算法 SM4。
两级密钥体系
透明数据加密使用两级密钥体系实现加解密功能。开启加密的最小粒度为数据库中的一个表,需要开启加密的表需要放到一个加密的表空间()中。 数据库数据的加密单位为表空间,表空间仅是为了兼容 数据库而设计的概念,可以简单理解为表空间是一组表的集合。每个加密的表空间设置有加密算法及对应的数据密钥,用于给表空间中的数据进行加密。每个租户有一个主密钥,用于对表空间的数据密钥进行加密,为了防止未经授权的解密操作,通常将主密钥存储于专门的 中。
为了保证数据的安全性,用户无法使用 直接查看主密钥和加密密钥信息,也无法指定主密钥和加密密钥,主密钥和加密密钥由系统生成,并且不会直接通过明文存储到磁盘上,大大提高了系统的安全性。
是主密钥的管理模块,提供密钥管理服务。 的功能包括:
开启透明加密时需要指定其主密钥存储方式,通过配置项 来控制,其取值如下:
取值含义
none
关闭存储加密
开启,主密钥存储于内部表
bkmi
开启,主密钥存储于外部 BKMI 系统
在 数据库中,当前仅 “私有云” 支持 方式的透明表空间加密。 方式的存储主密钥,其加密信息主要在内部表中进行管理。为了避免日志回放时的循环依赖,该加密方式下的 Clog 不做加密。
开启加密时,使用主密钥对数据密钥进行加密后得到加密的数据密钥密文,该密文会存储在内部表、宏块头部、Clog 头部中,数据密钥不会明文存储在任何地方。需要加解密数据时,使用主密钥解密该密文后得到数据密钥,从而对宏块或 Clog 中的用户数据进行加解密操作。
使用限制:
加密生效机制
用户存储在磁盘上的数据包括了 clog 和宏块两类,只有在将数据实际写到磁盘上时加密才会生效,内存中的数据是不加密的。若将原本不加密的表改为加密后,原先已经存储在磁盘上的未加密的 clog 和宏块数据不会变为加密,后续新写到磁盘上的数据才是加密的。由于每一条 clog 和每一个宏块都会记录加密元信息,因此加密和未加密的数据可以同时存在。
clog 是采用追加写的方式写到磁盘上的,因此旧的未加密的 clog 永远不会变为加密。等开启加密一段时间,旧的 clog 都被回收后,磁盘上的 clog 数据就会都成为加密数据了。对于宏块数据,只有在转储或合并时才会发生写入,可以手动触发全量合并将未加密的宏块数据重写为加密的。
支持的加密算法
数据库现阶段支持国际上主流的加密算法 AES,与此同时,还支持国密算法 SM4。
算法密钥长度模式
AES
128 bits 192 bits 256 bits
ecb
SM4
128 bits
cbc
~
网络安全学习,我们一起交流
~