点击上方蓝字关注我们
一个月前,QueryX的第一个内测版本正式发布。在首个版本中,我们基于安全的理念,重新设计了整个SQL工作台,它是QueryX的基础功能。文章发出后,收到了不少用户的试用申请。欣喜之余,更多的是感谢,同时也给予了我们更大的动力。
就在上周五,QueryX的第二个内测版也已经发布。这个版本中我们完成了一大部分核心功能的开发,也就是和安全息息相关的权限功能。QueryX将权限划分为系统功能权限和数据访问权限两大类,可以实现“三权分立”的权限控制。让我们一起来看看它的设计理念和功能特性吧。
数据库安全管控中的“三权分立”
政治学中的“三权分立”想必大家都听过,即立法权、行政权和司法权三种国家权力分属不同机构所有,各自独立行使,达到相互制约制衡的目的。而在数据库的场景中,“三权分立”指的是把数据库系统的管理使用人员划分为三种不同的角色。

数据库安全员 - 负责定义数据库的访问控制权限及其他安全规则,并赋予相关的权限。
数据库管理员/操作员 - 基于被授予的权限,完成对数据库系统的管理以及数据库对象的存取操作。
数据库审计员 - 负责安全员和管理员/操作员的行为审计和监督。
这种角色划分的方式分工明确,人员各司其职,既相互制约又相互配合,是一种比较合理的权限分配方式。
为什么需要“三权分立”
绝大部分关系型数据库在创建过程中,通常都默认带有一些超级用户,它们是数据库中的“上帝”。例如Oracle数据库中的sys和system用户,IBM DB2数据库的db2admin用户, Microsoft SQL Server或Sybase数据库的sa用户。这些用户拥有至高无上的权力,包括创建/删除用户,修改密码,分配/回收权限等等,只要用他们登录数据库,就可以看到数据库中所有用户的数据,也可以修改任何用户的数据。
大家都听过一句话:权力越大,责任越大。但凡事都有两面性,权力越大,意味着风险也越大。数据库作为存储核心数据的系统,过度集中的权力会带来严重的安全隐患。拥有上述超级用户的人,可以不留痕迹地做任何他想做的事情。所以,这类用户的密码,只能掌握在极少数人手里。但现实却往往事与愿违,我们调研过的许多政企客户,依然在使用传统的C/S架构的客户端工具去访问数据库,因为缺乏安全意识,再加上权限配置和维护工作的繁琐,超级用户被多人共用的情况依然比较常见。各行各业每年都会出现的数据安全事故,也很好地印证了这一点。
根据中华人民共和国公安部发布的《计算机信息系统安全等级保护通用技术要求》以及《计算机信息系统安全等级保护数据库管理系统技术要求》中强制访问控制的相关内容,如果政企用户想要建设或改造数据库系统,使其满足3级及其以上的安全等级标准,就必须要采用“三权分立”的权限体系,如下图所示:


我们来看看QueryX的权限体系是如何实现“三权分立”的。
QueryX的权限体系
QueryX将权限划分为两大类:一类是系统功能权限,另一类是数据访问权限。在上周发布的内测版本中,我们已经实现了完整的系统功能权限。
QueryX基于经典的RBAC模型来实现系统功能权限体系。用户通过角色来绑定权限,角色就是不同权限的集合。我们将QueryX上的功能点几乎都细化成了权限,总共有35项。每一项权限都是独立的,可以自由组合出不同职能的角色。
比如之前提到的“数据库安全员”的角色,其实就相当于QueryX这个平台的管理员,他需要负责数据源管理、用户管理、SQL拦截规则管理、访问控制列表管理等操作,我们可以通过【角色管理】页面来创建这个角色。注意,拥有该角色的用户,并没有访问数据源中数据的权限。但他们可以根据要求给其他用户赋予数据访问权限。

如果需要创建“数据库审计员”这个角色,只需要勾选相应的查看日志权限即可。拥有这个角色的用户除了可以查看所有的事件日志、操作日志之外,没有其他权限。

数据访问权限是通过访问控制列表和拦截规则来实现的。访问控制列表提供了白名单和黑名单两种类型。前者用来定义数据库中哪些表/列允许做什么操作,后者则正好相反。在白名单中,还可以定义敏感表,当有用户访问这些表时,会向管理员发出报警,并且需要提交工单,经过审批之后才能继续。数据库安全员可以为每个数据源创建多个访问控制列表,同一个数据源的不同用户可以关联不同的控制列表。另外,对于SQL拦截规则,我们采用了基于DSL语言的规则引擎来实现,方便用户编写自定义的拦截规则。
QueryX通过系统功能权限的细化,以及和数据访问权限的分离,可以创建出不同职能的角色,从而达到“三权分立”的效果。数据访问权限将在第三个内测版本中实现,敬请期待!
对于DBA或者部门领导来说,为不同用户配置不同数据库中的数据访问权限,是一件非常痛苦的差事,更不用说人员调岗或离职后产生的巨大的维护成本了。这也是为什么,虽然大家都知道数据安全的重要性,但对于数据库种类和数量繁多的政企用户来说,精细化的数据库权限管控一直很难落地。所以我们在设计QueryX时也充分考虑到了这一点,主要体现在:
当数据库管理员或操作员需要访问数据时,安全员不需要为每个用户在每个数据库中都创建一个账号,再进行权限的分配。只需要在QueryX上为每个用户创建一个账号,通过绑定数据源和访问控制列表,即可快速完成配置,后期维护成本也大幅降低。
对于一些授权动作,我们都提供了两个维度的操作。比如对于用户绑定数据源,我们既可以将多个数据源批量绑定到一个用户上(用户视角),也可以将多个用户批量绑定到一个数据源上(数据源视角),这样的设计能满足不同的使用场景。
内置了多个符合业界标准的角色、访问控制列表以及拦截规则等,可以帮助用户快速进行权限及安全规则的分配。
逐渐完善的QueryX
在第二个内测版本中,除了权限功能以外,我们还实现了事件日志、组织架构、密码复杂度和安全登录配置等功能。QueryX的形态正在逐渐完善,最终的版本计划在本月底发布。欢迎行业用户申请试用,产品的完善离不开你们宝贵的意见和建议。
作者:森叔
简介:云趣科技产品负责人
出品:云趣科技


云趣 ,等您关注




