YashanDB 加密方法
本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%E6%89%8B%E5%86%8C/%E5%AE%89%E5%85%A8%E7%AE%A1%E7%90%86/%E5%8A%A0%E5%AF%86.html
存储加密
YashanDB 支持表空间级和列级的数据透明加密(TDE,Transparent Data Encryption)。
表空间透明加密在数据库写入表空间存储介质时自动加密,从存储读取至数据库 buffer 内时解密,加解密过程对应用程序透明,数据库层的访问控制、SQL 查询等都不会受任何影响。
支持采用 ASE128 或 SM4 加密算法进行表空间数据加密。
在创建表空间时需确定该表空间是否启用加密,创建后不能更改。
对于分区表,YashanDB 支持各分区可以任意存储在加密或非加密的表空间,即允许只对表的部分数据进行加密。
在加密表空间里创建的表对象,其索引也必须位于一个加密表空间。
# 列透明加密
列加密在数据经过 SQL 层时对数据进行透明的加密和解密,用户对加解密过程无感知。插入或更新已加密的列时,会先对目标列值进行截获、加密,然后以密文形式进行保存。查询已加密的列时,会先对目标列值进行解密,然后以明文形式进行结果呈现。
支持采用 ASE128 或 SM4 加密算法进行列数据加密。
同一个表中的不同列,加密算法必须统一。
列加密属性一经指定无法修改,且加密列的其他属性也无法修改。
对于 LSC 表的稳态数据列,如果同时指定了列加密和表空间加密,目标列将采用列加密算法。
备份集加密
为保证备份数据文件的安全性,YashanDB 支持在备份时指定加密策略。
用户可依据自身需求选择不同的加密算法,YashanDB 支持 AES128、AES192、AES256 和国密 SM4 四种加密算法。
备份加密的密钥采用与 YashanDB 用户口令一致的密码策略,并使用与其相同的密钥保护机制,保证在没有明文密码的情况下不会被破解。
可以对控制文件、数据文件、redo 文件和 bucket 文件执行加密备份。
备份加密可以在 YashanDB 提供的任一种备份方式里使用。
增量备份的每个备份集需要保证统一都加密或都不加密,且每个备份集的密钥必须保持一致。
解密时采用输入密码的方式进行校验。
PL 源码加密
默认情况下,用户创建的各项 PL 对象源代码作为文本被存储在数据库表中。某些源代码可能涉及企业核心业务逻辑等隐私信息,对其进行加密存储也是企业信息安全的重要一环。
yaswrap 是 YashanDB 提供的专用于对 PL 源代码进行加密包装的工具。
可以使用 yaswrap 对指定代码文件进行加密并输出包装后的文件,避免他人通过数据库视图(例如*_SOURCE)查看到 PL 源码。
可以直接执行 yaswrap 加密后的密文创建 PL 对象(数据库表中存储的也是密文),该 PL 对象后续仍可正常执行,用户对系统的加/解密无感知。
如需重建加密包装后的 PL 对象,不允许直接在数据库中编辑(直接编辑会导致过程体无法正常执行),需先修改源文本文件再重新使用 yaswrap 进行加密包装。
网络加密/传输加密
YashanDB 对客户端与服务端之间、数据库服务端不同的节点之间的网络通信采用密码协议 SSL/TLS 等,以保障通信过程中数据的机密性和完整性,同时可对通信双方进行身份认证。
SSL 协议属于应用层(YashanDB 会话)和传输层(TCP)之间的协议,对应用层透明,用户无感知。
YashanDB 对登录请求采用标准的 X509 数字证书进行身份认证,该证书可以经过自签名或者由权威机构签名颁发。
SSL/TLCP 连接默认关闭,在需要通信加密时开启,开启必须同时配置数字证书,否则将导致数据库无法正常启动。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/7e34a710459556aa6c4e39868】。文章转载请联系作者。
评论