透明存储加密方式(Transparent Data Encryption, TDE)是一种保护数据库中静态数据的加密技术,使数据在存储时自动加密,有助于防止未授权访问和数据泄露。透明存储加密的特点是数据在加密和解密过程对应用程序透明,该过程中应用程序无需进行任何修改,从而简化了实施流程。加密操作(函数调用)与业务侧解耦合,业务只负责传递原始数据到数据库内核,后续的加密计算在数据库内部完成,从而业务侧操作上无感知。
透明加密的方案
透明加密是由自动加密与解密和加密密钥管理两部分机制组成。
- 自动加密与解密:当数据写入磁盘,TDE会自动对数据进行加密。当数据从磁盘读取时, TDE会自动对数据进行解密。整个加密与解密过程,用户和应用程序将不会感知。文件在硬盘上是密文,在内存中是明文。一旦离开使用环境,由于应用程序无法得到自动解密的服务而无法打开,从而起到保护文件内容的效果。
- 加密密钥管理:TDE通常使用对称加密算法(如AES)。加密密钥被存储在数据库管理系统外部或安全位置,加密算法的由数据库维护,包括加密算法的选择、秘钥管理,都可以由安全员独立操作完成,以确保数据安全。
开启透明存储加密
TeleDB数据库支持提供TDE功能。当用户需要对磁盘上存储的数据进行加密和解密来实现对数据的保护时,可以对该功能进行开启。
注意TDE功能仅能在实例开通时开启,且开启后无法关闭。
支持加密功能的内核版本为:5.1.5。
您可参考如下操作开启透明加密。
管控侧操作:
- 以用户名和密码登录TeleDB-DCP管理控制台。
- 进入TeleDB-DCP控制台管理页面,开通实例。您可参考《安装部署》中实例服务初始化及实例开通章节开通实例。
- 在实例开通页面,填写基本信息页面,打开KMS开关,选择KMS机器。
说明KMS开启后无法关闭,选择后无法更改。
数据库侧操作:
说明用户可以通过函数创建加密算法,之后可以通过函数将创建的算法绑定到schema,表和列上,实现加密算法和数据库对象建⽴关联。同时⽀持,将已经绑定的算法从schema,表和列上解绑,从⽽取消加密算法和数据库对象之间的关联关系。
- 创建加密算法
SELECT MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM(algo_name, password)
- 注销加密算法
SELECT MLS_TRANSPARENT_CRYPT_DROP_ALGORITHM(algo_id)
- 加密算法绑定
(1) 绑定到Schema
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_SCHEMA(schema_name, algo_id)
(2) 绑定到表
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE(schema_name, table_name, algo_id)
(3) 绑定到列
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE(schema_name, table_name, attr_name, algo_id)
- 加密算法解绑
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_UNBIND_SCHEMA(schema_name)
SELECT MLS_TRANSPARENT_CRYPT_ALGORITHM_UNBIND_TABLE(schema_name, table_name, need_cascade)
使用示例
-- 创建管理插件
CREATE EXTENSION teledbx_mls;
-- 切换为安全管理员⽤⼾
\c - mls_admin
-- 注册内置的加密算法和对应密钥(此处使⽤国测sm4加密算法进⾏注册),获得对应的algo id
select MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM('SM4','0123456789012345');
select MLS_TRANSPARENT_CRYPT_CREATE_ALGORITHM('AES128','0123456789012345');
\c - xieyuecreate table t1(id int,content int);
\c - mls_admin
-- 将加密算法绑定到表上
select MLS_TRANSPARENT_CRYPT_ALGORITHM_BIND_TABLE('public','t1',1);
insert into t1 values(1,0), (2,0), (3,0);
insert into t1 values(7, 0), (8,0), (9,0);