风险防不胜防?看 YashanDB 如何守护你的数据库安全(下篇)
前言上一篇文章,咱们主要讲了数据库安全机制中的访问管理~今天继续深入聊聊威胁监测以及数据保护🧐 (文末可回顾上篇文章噢📖)
02 威胁监测
//安全审计
YashanDB 语法上支持权限审计、行为审计和角色审计,逻辑上包括了系统级、语句级、对象级进行审计,支持对指定用户或所有用户进行审计,并支持对系统权限进行审计。审计记录保存在物理表中,拥有 AUDIT_ADMIN 或 AUDIT_VIEWER 角色权限的用户可以通过审计视图 UNIFIED_AUDIT_TRAIL 查看审计日志信息。
权限审计指的是对 YashanDB 的所有系统权限进行审计,当对某个系统权限启用审计策略后,只要在 SQL 语句或其他操作中使用了这个系统权限,就会被审计,也是语句级审计。
行为审计包括系统审计和对象审计
系统审计:包括对象创建/删除、建库/关库、提交/回滚等所有的操作行为的审计。
对象审计:表示对某个具体对象的操作行为的审计。
此外,YashanDB 提供角色审计功能,在某个角色上启用审计策略后,所有直接被赋予给该角色的系统权限就可以被审计。
审计日志被记录在系统表中,只有审计管理员可以查看和分析该表。为了降低审计对系统的影响,YashanDB 支持审计日志异步入库。
为减少审计对数据库性能的影响,YashanDB 默认采用异步审计的方式写审计记录(由 AUDIT_QUEUE_WRITE 参数控制开关)。
异步审计将审计数据信息先写入审计数据队列,当审计数据队列达到阈值(数据刷新时间间隔、数据队列满)时 ,再将数据批量插入审计记录表中。这些阈值可通过 AUDIT_FLUSH_INTERVAL 和 AUDIT_QUEUE_SIZE 进行调整。异步审计可以减少对数据库性能的影响,但在一些异常情况下(例如数据库异常宕机)可能导致丢失部分审计数据。
//反漏洞
YashanDB 使用以下的机制,降低漏洞的危害。
1)安全漏洞扫描:代码安全静态扫描、开源代码扫描,并及时发布的安全补丁和更新版本,以修复已知的安全漏洞。
2)使用已经取得安全资质的硬件和操作系统。
03 数据保护
//通信加密
在数据库客户端和服务端之间,在数据库各节点之间应建立安全的通信信道,保障通信数据的机密性和完整性。YashanDB 可以通过 TLCP/TLS 协议进行通信信道加密和服务端身份认证,可通过配置文件进行密码协议的选择和关键参数的配置。
《信息安全技术传输层密码协议(TLCP)》是 2020 年 11 月 1 日开始实施的一项中国国家标准,是国密版 SSL。国密 SSL 参照了 TLS 规范,但和 TLS 并不兼容。协议架构如下所示:
//存储加密
数据加密对于数据库安全具有十分重要的意义,是一种主动保护技术。关于存储加密的模型,通常有多种实现方式,比如应用系统加密、前置代理加密、后置代理加密、透明加密、文件加密、磁盘加密等等。YashanDB 平衡了各种技术的优缺点,采用了表空间透明加密 TDE,这种技术的优点是:
1)对于数据库用户和应用程序是透明的。
2)不对数据库功能有任何影响。
3)性能损耗极小,通常可以忽略
TDE 要求在数据库写入存储介质时自动加密,从存储读取至数据库 buffer 内时解密,对应用程序是透明的,数据库层的访问控制、SQL 查询等都不会改变。
YashanDB 采用国密 SM4 的加密算法进行表空间数据加密,用户无需指定策略,在保证密文的破解难度外,同时兼顾了加解密对数据库的低性能损耗,可适用于大数据量的表空间加密。对某个表空间是否启用加密,需要在创建时就确定,且不可更改。
对于分区表,YashanDB 支持各分区可以任意存储在加密或非加密的表空间,即可对表进行部分数据加密。
//备份加密
YashanDB 支持在备份时指定加密策略,保障备份集数据的安全。用户可依据自身需求选择不同的加密算法,YashanDB 提供 AES128、AES192、AES256 和 SM4 四种流行的加密算法供选择。
备份加密的密钥采用与 YashanDB 用户口令一致的策略,并使用与其相同的密钥保护机制,保证在没有明文密码的情况下永远不会被破解,进一步保障了数据的安全。
//密匙管理
密钥管理是指对加密系统中使用的密钥进行全面管理和保护的过程和实践。在计算机安全和信息安全领域中,加密算法通常使用密钥来对数据进行加密和解密,而密钥管理则涉及生成、存储、分发、轮换、撤销和销毁这些密钥的活动。
YashanDB 支持软件硬件统一的密钥管理框架,并采用三级密钥管理体系,这可以在一定程度上提高加密系统的安全性和合规性,同时也能够提供更大的灵活性和管理便利性。
//备份和恢复
对数据库的备份分为冷备和热备,其中冷备表示将数据库关闭后,通过操作系统命令进行文件系统的复制,热备表示在数据库正常运行期间所进行的在线备份,YashanDB 所支持的备份功能为热备。以备份集的形式持久化,恢复则是使用备份集还原出数据库文件,恢复到备份时的状态。管理员应定期执行备份,可有效避免意外场景下的数据损坏。
数据库备份又分为全量备份和增量备份:
1)全量备份:对某一时间点上的所有数据进行完全复制,不依赖之前的备份集。一个全量备份集可以恢复出所有数据
2)增量备份:在有全量备份基线(level0)的情况下,增量备份(level1)只备份上一次备份后,发生过变化的数据。增量备份可以减少备份时间,减少磁盘占用,但是恢复时,需要按增量备份集链逐个恢复。
3)累计增量备份:第一次增量备份,必须是 LEVEL 0,即全量备份。后续每次备份自上一次完全备份之后有变化的数据。
YashanDB 支持如下方式的数据备份:
1)使用 BACKUP DATABASE 语句发起备份操作,备份集将生成在数据库服务端。
2)使用 yasrman 工具发起远程备份操作(对分布式可以发起多节点的统一备份操作),备份集可以选择生成在工具端或者数据库服务端。
用户可以选择任一种方式进行备份操作,两种方式均支持如下备份策略:
1)支持选择全量备份和增量备份。
2)支持选择对备份集数据进行压缩。
3)支持选择对备份集数据进行加密。
YashanDB 支持按指定时间点恢复 Point-in-Time Recovery,恢复操作需要指定时间点或者 SCN。约束条件是:
1)从备份结束时间到指定 TIME 或 SCN 的归档日志都在。
2)TIME 或 SCN 要大于备份结束时间(精确点,是指 data 文件备份结束时间,但 data 文件备份结束时间<备份结束时间)。
3)指定时间点恢复会有 1s 误差。
4)指定时间点比最后一条日志的时间都大时,不报错,即时间太大,回放不到指定时间不报错,与 oracle 保持一致。
5)需要回放的归档,resetid 需要和备份集 reset id 相同,否则 restore 阶段无法注册不同 reset id 的归档。
//安全销毁
安全销毁又叫剩余信息保护或者客体重用:在普通的环境下,数据库客体(主要指数据库对象、数据文件、缓存区)回收后不做处理,直接分配给新来的请求,但是有些攻击者会利用这一点编写特殊的非法进程通过数据库管理系统的内存泄露来获取数据库系统的信息。
YashanDB 通过两者手段实现了基本的剩余信息保护:
1)在释放表空间内存之前,将对应内存区域清空(置零)
2)在删除表空间文件之前,将文件内容用零值覆盖。
YashanDB 能够建立相对完整的安全保护机制,保护数据和数据库管理系统不因偶然和恶意的原因而遭到泄漏、破坏和滥用,保障数据和系统的保密性、完整性、可用性和可审查性。随着数据安全形势的变化和客户安全需求的更新,YashanDB 的安全规划和安全能力建设仍然一直在路上。
相关阅读:
风险防不胜防?看YashanDB如何守护你的数据库安全(上篇)_YashanDB_InfoQ写作社区
评论