#加密

# 数据透明加密

采用数据透明加密(TDE,Transparent Data Encryption)技术可以实现在用户和应用程序完全无感知的情况下,由数据库自动完成数据的加密和解密过程。数据在被写入存储介质时自动加密,最终以密文形式进行存储;从存储读取至数据库buffer中时自动解密,以明文形式进行结果呈现。加/解密过程对应用程序完全透明,数据库层的访问控制、数据操作以及SQL查询等都不会受任何影响。

YashanDB支持表空间级别、表级别和列级别的数据透明加密,每个加密对象都拥有各自独立的数据密钥。为了提高安全性,YashanDB通过多级密钥管理体系进一步对数据密钥进行加密保护。

# 密钥管理体系

YashanDB使用钱包机制和三级密钥体系对数据密钥进行管理,既保证了密钥的安全,也兼顾了数据加解密的效率。

3-key

  • 钱包:是一个虚拟容器,用于对数据库安全凭证进行独立的外部存储与管理,并实现数据库集群中各服务器之间密钥共享。

    • 本地密钥管理:将主密钥持久化在数据库服务器本地的钱包文件中。

    • 第三方密钥管理:对接第三方提供的密钥管理服务,由第三方保护主密钥,例如腾讯云KMS。

  • 三级密钥体系:

    • 主密钥(MEK,Master Encryption Key):又称一级密钥,通过钱包的机制加密持久化在数据库外部的钱包文件(例如ewallet.p12文件)中,用于加/解密全局密钥。

    • 全局密钥(GEK,Global Encryption Key):又称二级密钥,通过主密钥进行加密后持久化在数据库控制文件中,用于加/解密数据密钥。

    • 数据密钥(DEK,Data Encryption Key):又称三级密钥,通过全局密钥进行加密后持久化在数据库中,用于加密表空间、加密表和加密列的数据加/解密。

# 加密颗粒度

YashanDB支持三种数据透明加密颗粒度,分别是表空间级别、表级别和列级别。

# 加密算法

支持加密算法AES128和国密算法SM4。

# 备份集加密

为保证备份数据文件的安全性,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/TLCP等建立可信信道,以保障通信过程中数据的机密性和完整性,同时可对通信双方进行身份认证。

  • SSL协议属于应用层(YashanDB会话)和传输层(TCP)之间的协议,对应用层透明,用户无感知。

  • YashanDB对登录请求采用标准的X509数字证书进行身份认证,该证书可以经过自签名或者由权威机构签名颁发。

  • SSL/TLCP可信信道默认关闭,在需要通信加密时开启,开启必须同时配置数字证书,否则将导致数据库无法正常启动。

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流