The English version of CloudQuery is officially launched!

自动化授权和回收,让细粒度的权限管理不再沉重繁琐!

 二维码
发表时间:2024-03-29 16:35作者:CloudQuery

“每次新人入职,都要手动为他们创建数据库账号、分配权限!这真是太繁琐了!”


“同事离职了,我万一忘记及时回收他们的数据库账号,给数据库带来安全风险怎么办?”


“谁换个部门工作,我又得重新调整他们的数据库权限,这效率也太低了吧!”


这是我们有时会听到的一些来自 DBA 的“抱怨”。在国内某头部医院工作的小帅和我们聊到过,在他们单位内部,信息系统存储着大量的病人信息、病历诊疗记录、治疗方案等个人隐私敏感数据,接触数据的人员必须做好严格的权限管控,而大量的人员导致的权限管理复杂化、新员工的权限分配、离职人员的账号回收等情况使得原本的手动授权显得繁琐,耗费大量时间精力,一旦出错还会对数据安全造成威胁。

这些也不仅仅是小帅在工作中遇到的问题,通过与很多大型单位客户的交流,我们总结出了一些共性问题:

1、账号与权限分配的复杂与准确性问题:随着企业规模的扩大和数据库多样化,账号与权限的管理变得更加复杂。管理员需要精确配置每个数据库、每个应用甚至每个用户的权限,以确保数据得到安全合规的访问和使用。

2、员工账号权限回收的便捷性问题:员工离职后,账号必须尽快回收,以防止其利用原个人账号违规操作访问。但在实际操作层面,由于账号权限梳理回收不方便、信息流转问题等原因,往往导致个人账号回收的不及时。个人账号一般会捆绑与该账号相关的管理权限、数据访问权限等,会有潜在的安全风险。以往需要先对数据库进行深度的账号梳理和检查,才能够做权限回收,工作量较大且容易被遗漏。

3、新员工账号权限分配效率问题:新员工入职后,如果让其使用原有账号,存在账号混用风险。而数据库账号和权限的重新分配,通常需要花费大量的时间和精力。

4、人员变动时权限变更的准确性问题:人员跨部门变动时,原始权限需要做出及时变更,以保证数据访问的合法性和控制权限的精确性。

在上面这些问题场景中,如果 DBA 使用常规的手动授权方式,针对每个用户进行权限的配置、回收等操作,效率必然低下,且容易出错图片

CloudQuery 则针对以上场景,提出了「自动授权」的概念,根据用户的属性和时间来配置权限生效策略以实现灵活的批量授权。这种方法根据部门岗位和工作职责,可让管理员匹配到职责自动分配和回收权限,从而有效的补充了手动授权效率的不足,让单一方式的授权体系变得更加全面,从而减少在一些场景中的时间耗费,大大提升工作效率。

具体该如何操作呢?

图片

首先,我们需要了解 CloudQuery 「自动授权」中的一个重要概念,就是「权限集」。「权限集」是一个集不同数据库对象权限于一体的一个集合。通过展开权限集,我们可以清晰地看到所有关联的数据库以及它们对应的权限设置。

接下来,让我们深入了解「编辑权限集」的具体操作。在编辑权限集时,我们可以对资源进行选择,比如下图中,我们选择了 MySQL 和 PG 两个数据源,并对这两个数据源配置了相应的权限。完成配置后,可以通过右侧的列表查看权限的开放情况,确保一切设置无误后,即可完成「权限集配置」。

图片

当完成「权限集」创建及配置后,下一步是配置策略以实现自动授权的目标。我们可以通过自动授权模块将权限集与用户属性进行关联。例如,我们可以设置某个「权限集」对满足特定部门属性的用户开放。当用户的部门属性发生变化时,他们的权限也会相应地自动调整。在下图中我们选择了对权限集“运维 B 组”中所有满足 cqUser 的人开放对应的权限 。当某个用户的部门属性从 cqUser 变换为其它时,则会自动失去对应的权限。

图片


CQ 提供了丰富的条件属性供大家使用,包括用户属性(如邮箱、登录账号、部门、性别、组别)和时间属性(如星期几、一天中的几点、每月的几号、具体的日期和时间),这些条件属性使得我们可以精确地定义自动授权的规则。

  • ${USER.Email}   系统中用户配置的邮箱${USER.Email} == "xx@qq.com",表示邮箱为xx@qq.com的用户符合规则

  • ${USER.UserId} 系统中用户的登录帐号{USER.UserId} != "user1",表示只有登录帐号为user1的用户不符合规则,其余人都符合规则

  • ${USER.Dept}   系统中的部门,${USER.Dept} == "test",表示test部门下的所有人都符合规则

  • ${USER.Gender} 用户的性别属性,${USER.Gender} == "男",表示所有性别为男的用户符合规则

  • ${USER.Group}   用户管理处组织架构中的组,${USER.Group} == "group1",表示组group1下的所有用户符合规则

  • ${TIME.DayOfWeek}   星期几的意思,具体周一到周日由1-7表示,${TIME.DayOfWeek} <= 5,表示周五之前(含周五)符合规则

  • ${TIME.TimeOfDay}   一天中几点的意思,为4为数字,24小时制,${TIME.TimeOfDay} > 1430,表示每天下午两天半后符合规则

  • ${TIME.DayOfMonth} 每个月的几号,${TIME.DayOfMonth} <= 20,表示每个月20号之前符合规则

  • ${TIME.FullTime}   日期 + 时间,${TIME.FullTime} > 202307271430,表示2023年7月27日下午两点半之后符合规则

当我们对某一权限集完成了「自动授权」后,为了确保授权的准确性,CloudQuery 还提供了「审计分析」功能。通过该功能,我们可以查看某一用户的具体权限等级和类型,从而验证自动授权或手动授权的结果是否符合预期。


  • 进入「审计分析」-「用户审计」点击用户名称,查看我们对该用户赋予的权限等级,及权限类型。

    图片

最后需要提醒一下的是,自动授权并非适用于所有场景。在某些特定情况下,手动授权仍然具有不可替代的作用。例如:

  • 临时性权限需求:当业务人员需要临时访问某些数据以进行报表制作或数据分析时,手动授权能够更快速、灵活地满足这种临时性需求。

  • 特殊权限配置:对于某些特殊的权限配置需求,如针对同一项目组中不同成员的资源权限差异,手动授权能够提供更精细化的控制。通过手动调整权限设置,我们可以确保每个成员都拥有他们所需的最合适的权限。

  • 紧急情况下的权限调整:在紧急情况下,如系统故障或数据泄露事件,我们可能需要迅速调整用户的权限。此时,手动授权能够更快地响应并作出调整,以确保系统的安全和稳定。

  • ......

在 CloudQuery 的发展过程中,我们始终重视并倾听社区用户的建议和反馈。在 V2.9.0 中我们听取了大家的建议,对自动授权优化了创建权限集功能,即创建权限集时记录选择了那些资源,优化策略,测试时支持检索所有用户并展示命中策略条件的用户,欢迎大家下载体验。


因为这些宝贵的意见,我们的产品功能才会不断优化,但我们的工作并未止步于此,后续,我们计划对「自动授权」模块进行升级,其中策略中引用的用户参数将支持到所有用户属性,这将极大地扩展自动授权的应用范围和灵活性。此外,我们还将推出「授权预填」功能,根据个人账号属性,分析业务侧授权使用习惯,提供个性化授权建议,自动化预填授权信息。这将帮助大家更快速、更准确地完成授权操作,提高工作效率。


最后,我们非常欢迎广大用户加入我们的社区,共同为提升权限管理的效率和准确性贡献力量。