背景
数据安全中的三权主要包括如下:
数据库中的三权分立的主要目的其实是为了防止出现数据事故的时候,由于事故方权利过于集中,通过自己拥有的高权限把事故的原因进行掩盖。从需求上来说,三权分立的确非常重要。因此,无论国外还是国产数据库都有这方面的要求,这也是为什么三权分立会成为信创测试的必选项,但在真正使用过程中,数据库的三权分立绝对是做冷板凳的功能。
脱离实际的数据库三权分立
为什么说数据库“三权分立”功能脱离实际情况,笔者主要总结如下几点:
听起来有点难以理解,下面就让我们逐一分析一下。
1.使用难度高,风险大
数据库这种软件本身是没有图形界面,管理数据库主要是通过SQL指令。数据库上的三权分立也不例外。要在数据库中实现三权分立,并且查询里面的权限状态,全部SQL语句、系统视图、函数等等指令,如下图所示:

这些语句用起来复杂,用错了可能直接导致业务故障,严重的时候直接会导致业务停摆。
2.数据库的权限做不到频繁变更
数据库,特别是生产数据库那就是各种应用系统中的大熊猫,平时都是小心翼翼的呵护,在上面修改任何一点东西都要经过审批。在这种情况下,业内其实形成了一种无奈的潜规则。数据库的权限都一直扩大,没有把握没有人敢缩小,就算有一定把握也没有人愿意去尝试,因为弄错一点可能整年的绩效都木有了。这种潜规则造成数据库的某些账号权限越来越高,基本上都三权归一了,但没人敢降低权限。

安全策略和数据库不同,根据不同的安全形式,策略要进行对应调整,而且很有可能第一次调整的不到位,马上就需要二次、三次的继续优化。这种调整需求频度的操作在数据库上是不可能允许的。
3.数据库的性能&稳定的重要性大于安全
根据审计的要求,数据库中的业务SQL都要保持3个月。如果用数据库的审计功能,大量的审计数据需要保存在数据库中。无论保存、删除、查询这些审计功能都需要消耗大量的数据库资源,而这些消耗肯定会影响性能,从而降低稳定性。

解决方案
使用数据库本身的“三权分立”功能根本不能落地,其内置功能也只能是个“噱头”。换个思路,三权分立其实是来管理人的,而在数据库领域,每个人都是需要使用工具来进行数据库管理的。如果我们在工具层面实现对于人的合理管控,不但能够实现系统管理员、安全管理员、审计管理员的相关场景,更重要的是不会给数据库增加任何负担。
正是基于这种思路,加上DeskUI三兄弟中的老三“XGuard”登场了。平台不但能够补充替代传统堡垒机功能,而且克服了堡垒机“依赖客户端”、“审计粒度不够”、“不支持事中拦截”的三个安全性弊端,而且能够满足支持国内外20多种主流数据库、文件上传下载、操作系统远程接入等数据运维、开发需求的安全管控,并且可部署于信创环境,是企业纳管各种资源,用防兼备“玄武之域”。

总结
数据库主要的功能还是高效、灵活的数据存取。让数据库承担过重的权限、审计等操作不但会严重影响数据库的性能,也不符合数据库“稳定胜过一切”的设计初衷。因此,三权分立等细粒度的管控措施向工具侧倾斜是大趋势。因为,工具层面的管控对于数据库的影响非常小,这样用户就可以在工具侧调整、测试不同的安全策略。只要所有的运维用户都通过带有管控策略的工具进行数据库的使用,就能达到包括三权分立的各种安全管控的目标。