一文带你学习DWS数据库用户权限设计与管理

本文将介绍DWS基于RBAC(Role-Based Access Control,基于角色的访问控制)的数据库用户权限管理。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系。

通过本节,我们将学习到DWS数据库权限管理的相关知识并进一步学会如何进行权限管理。

1 对象基本概念

集群:集群是由一组服务器和其它资源组成的一个单独的系统,可以实现高可用性。有的情况下,可以实现负载均衡及并行处理。

数据库:数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。一套集群包含一个或多个已命名数据库。

用户和角色:用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。

模式:数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引、集群及数据库链接。

表:表是由行与列组合成的。每一列被当作是一个字段。每个字段中的值代表一种类型的数据。

它们之间的关系如下:

一文带你学习DWS数据库用户权限设计与管理

集群中可以创建多个库,库与库之间物理隔离,集群中的用户和角色是唯一并且全局共用的,访问库的权限通过用户进行控制,同一个库中,schema是唯一的,不同schema下可以创建同名表,表与表之间通过schema进行区分,不同用户之间的数据访问通过权限控制进行隔离,不同用户间表的访问权限通过用户进行维护,通过角色进行权限统一管理,一个用户下可创建不同schema区别不同的业务模块,通过不同用户提供给不同业务使用。

使用CREATE USER和ALTER USER可以创建和管理数据库用户。数据库集群包含一个或多个已命名数据库。用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。

非三权分立下,DWS用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户员和安全管理员创建。

在用户登录DWS时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪个对象。除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。

角色是一组用户的集合。通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤消权限时,这些更改将作用到角色下的所有成员。

Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。

每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的Schema,且所有用户都拥有此Schema的权限。可以通过Schema分组数据库对象。Schema类似于操作系统目录,但Schema不能嵌套。

相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。例如,a_schema和b_schema都可以包含名为mytable的表。具有所需权限的用户可以访问数据库的多个Schema中的对象。

2 角色、用户与用户组

Ø 角色(ROLE)本质上是一组权限的集合,通常情况下使用ROLE来组织权限,使用用户进行权限的管理和业务操作。

Ø 角色之间的权限可以继承,用户组的所有用户可自动继承对应角色的权限。

Ø 数据库中USER与ROLE的关系为,USER的权限来自于ROLE。

Ø 用户组包含了具有相同权限的用户集合。

Ø 用户可以看作是具有登录权限的角色。

Ø 角色可以看作是没有登录权限的用户。

根据不同业务场景需要,管理员使用 “管控面”创建并管理不同用户组。用户组通过绑定角色获取操作权限,用户加入用户组后,可获得用户组具有的操作权限。用户组同时可以达到对用户进行分类并统一管理多个用户。最大支持5000个用户组(包括系统内置用户组)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzzzy.html