多模型构建的多层级权限管控体系 二维码
发表时间:2023-07-13 15:28 在阐述 CloudQuery 权限体系之前,想先跟大家分享下我们团队在客户侧收集到了的一些真实场景与诉求:
这些诉求涵盖了对数据库操作的权限管理、数据保护、访问安全控制等,看上去这些需求好像比较离散,但总结下来我们可以将它们归纳为「不同维度的管控需求」。 那让我们来回顾下 CloudQuery 社区版 1.x 系列是如何来满足这些需求的。在产品形态上,CloudQuery 1.x 系列将用户的管控需求统一称为“权限”。在「数据库连接管理」模块之下,通过数据操作权限、时间权限、受限资源权限、动态脱敏管理以满足用户不同的“管控”诉求。 然而,“权限”这个词包含了太多的需求,基于此前提, 2.x 系列中,我们希望以更加具体、明确的方式来引用它。在 CloudQuery 权限概念上,通过采用不同的“术语”来区分这些权限需求,所以我们设计了全新「多模型、多层级」的权限体系。 程序员眼中的"权限"有多种模型,包括 ACL、DAC、MAC、RBAC、ABAC,针对主体(人)与资源(数据库资源)不同模型对应着不同的交互表现。在进行权限改造之前,我们围绕着管控需求、系统菜单、功能菜单进行分类,拆分系统与业务,并对20多种数据库的 SQL 语法和数据类型重新进行了整理。 功能介绍 在 2.x 系列的产品中,我们对业务进行拆分,将以往的权限管理分为两个不同的模块:数据库管理和数据保护,其中数据库管理又拆分成连接管理与授权管理两部分,这样的拆分旨在实现更精确的管控目的。 连接管理 连接管理,是针对访问数据库时创建的连接进行管理。在连接管理中,我们增加了连接管控与资源纳管。
授权管理 授权管理,则是针对我们纳管的资源进行授权管控。值得注意的是,授权管理又分为针对纳管资源的最大单位(schema)管控、针对最小单位(数据库对象)的细粒度授权。
通过功能上的细分,我们可以更加精确地管理和控制人员对数据库资源的访问行为,确保数据的安全性和可控性。 值得一提的是,在 2.x 系列中,我们对权限一词进行了简化,它仅代表数据库 SQL 操作的聚合以构建权限体系。目前,我们发布了资源授权视图,并计划在后续版本中推出主体授权和项目封装授权,以满足更多的授权需求。我们致力于提升权限体系的完备性和灵活性,以满足用户在数据安全管控方面的多样需求。 数据保护 在 2.x 系列产品中,提供了数据保护功能,旨在增强数据的安全性和隐私保护。 数据保护经常会涉及两个关键词:数据脱敏和数据过滤。通常,数据查询结果以二维表的形式展示,其中相似类型的数据以列的方式存储。然而,数据保护的需求并不仅限于特定数据类型,而是适用于所有相关数据的展示和保护。因此,我们将对相似类型数据进行安全处理称为脱敏,而对相关展示数据进行安全处理称为过滤。 简而言之,脱敏关注的是表的列,而过滤涉及表的行。我们的数据保护功能正是基于这两个概念而设计的。 关于脱敏和过滤的实现,我们采用了两种技术方式,分别是前置规则和后置规则。前置规则使用 SQL 改写方式对数据进行处理,而后置规则则通过结果集命中方式进行改写。虽然后置规则相对简单,但容易被绕过。因此,我们建议在使用时主要采用前置规则,辅以后置规则来实现数据展示的保护。通过这种组合方式,能更有效地确保数据的安全性。 在 2.x 系列产品中,具体实现了以下数据保护功能: 脱敏
过滤
总结 CloudQuery 2.x 系列通过多维度的权限体系,满足用户对数据安全管理和访问控制的需求。连接管理和授权管理的拆分,实现对连接和资源的管控与纳管,以及对资源的授权管理。数据保护功能包括数据脱敏和数据过滤,通过前置规则和后置规则对敏感数据进行处理和结果集的筛选。 这种多维度权限体系可满足各种离散的管控需求,实现数据的安全管理和访问控制。 - End - |