VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

三权分立

5.2.1默认权限机制和5.2.2管理员两节的描述基于的是Vastbase创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。

在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立。

三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。关于CREATEROLE属性和AUDITADMIN属性的更多信息请参考12.19.44CREATE ROLE。

三权分立后,系统管理员只会对自己作为所有者的对象有权限。

初始用户的权限不受三权分立设置影响。因此建议仅将此初始用户作为DBA管理用途,而非业务应用。

三权分立的设置办法为:将参数enable_separation_of_duty设置为on。

三权分立前的权限详情及三权分立后的权限变化,请分别参见表5-9和表5-10。

表5-9 默认的用户权限

对象名称 初始用户(id为10) 系统管理员 监控管理员 运维管理员 安全管理员 审计管理员 普通用户
表空间 具有除私有用户表对象访问权限外,所有的权限。 对表空间有创建、修改、删除、访问、分配操作的权限。 不具有对表空间进行创建、修改、删除、分配的权限,访问需要被赋权。
对所有表有所有的权限。 仅对自己的表有所有的权限,对其他用户的表无权限
索引 可以在所有的表上建立索引。 仅可以在自己的表上建立索引。
模式 对除dbe_perf以外的所有模式有所有的权限。 仅对dbe_perf模式和自己的模式有所有的权限,对其他用户的模式无权限。 仅对自己的模式有所有的权限,对其他用户的模式无权限。
函数 对除dbe_perf模式下的函数以外的所有的函数有所有的权限。 仅对dbe_perf模式下的和自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。 仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。
自定义视图 对除dbe_perf模式下的视图以外的所有的视图有所有的权限。 仅对dbe_perf模式下的和自己的视图有所有的权限,对其他用户的视图无权限。 仅对自己的视图有所有的权限,对其他用户的视图无权限。
系统表和系统视图 可以查看所有系统表和视图。 只可以查看部分系统表和视图。详细请参见15系统表和系统视图。

表5-10 三权分立较非三权分立权限变化说明

对象名称 初始用户(id为10) 系统管理员 监控管理员 运维管理员 安全管理员 审计管理员 普通用户
表空间 无变化。 依然具有除私有用户表对象访问权限外,所有的权限。 无变化 无变化。
权限缩小。
只对自己的表及其他用户放在public模式下的表有所有的权限,对其他用户放在属于各自模式下的表无权限。
无变化。
索引 权限缩小。
只可以在自己的表及其他用户放在public模式下的表上建立索引。
无变化。
模式 权限缩小。
只对自己的模式有所有的权限,对其他用户的模式无权限。
无变化 无变化。
函数 权限缩小。
只对自己的函数及其他用户放在public模式下的函数有所有的权限,对其他用户放在属于各自模式下的函数无权限。
无变化 无变化。
自定义视图 权限缩小。
只对自己的视图及其他用户放在public模式下的视图有所有的权限,对其他用户放在属于各自模式下的视图无权限。
无变化 无变化。
系统表和系统视图 无变化。 无变化。

在数据库初始化阶段,新增三个默认用户:管理员vbadmin、审计员vbaudit和安全员vbsso。三个默认用户的关键属性(pg_authid数据字典)如下表:

用户属性 管理员 审计员 安全员
rolsuper true false false
rolinherit true true true
rolcreaterole true false false
rolcreatedb true false false
rolcatupdate true false false
rolcanlogin true true true
rolreplication true false false
rolssoadmin false false true
rolauditadmin false true false
rolsysadmin true false false
roluseft true true false

管理员权限

三种管理员的权限和范围请分别参见表5-11、5-12、5-13和表5-14。

表5-11 审计员权限列表

序号 权限类型 说明 是否已实现
1 AUDIT.VB_AUDIT_LOG 对外部表audit.VB_AUDIT_LOG中审计日志的查询权限

其他数据字典的权限与普通用户相同。

表5-12 安全员权限列表

序号 PRIVILEGE类型 说明 是否已实现
1 CREATE SECURITY LABEL 创建敏感标记
2 DROP SECURITY LABEL 删除敏感标记
3 SECURITY LABEL ON 对数据库对象设置敏感标记
4 PG_SECLABEL 对数据字典PG_SECLABEL的查询权限
5 PG_SHSECLABEL 对数据字典PG_SHSECLABEL的查询权限
6 PG_OGMAC_SECLABEL 对数据字典PG_OGMAC_SECLABEL的查询权限
7 PG_RLSPOLICY 对系统表PG_RLSPOLICY的查询权限
8 CREATE POLICY 创建行安全策略
9 ALTER POLICY 修改行安全策略
10 DROP POLICY 删除行安全策略
11 ALTER TABLE 启用/禁用表上的行安全策略
12 CREATE RESOURCE LABEL 创建资源池
13 ALTER RESOURCE LABEL 修改资源池
14 DROP RESOURCE LABEL 删除资源池
15 CREATE MASKING POLICY 创建审计脱敏策略
16 ALTER MASKING POLICY 修改审计脱敏策略
17 DROP MASKING POLICY 删除审计脱敏策略
18 CREATE AUDIT POLICY 创建审计策略
19 ALTER AUDIT POLICY 修改审计策略
20 DROP AUDIT POLICY 删除审计策略
21 GS_POLICY_LABEL 对系统表GS_POLICY_LABEL的查询权限
22 GS_AUDITING_POLICY 对系统表GS_AUDITING_POLICY的查询权限
23 GS_AUDITING_POLICY_ACCESS 对系统表GS_AUDITING_POLICY_ACCESS的查询权限
24 GS_AUDITING_POLICY_PRIVILEGES 对系统表GS_AUDITING_POLICY_PRIVILEGES的查询权限
25 GS_AUDITING_POLICY_FILTERS 对系统表GS_AUDITING_POLICY_FILTERS的查询权限
26 GS_LABEL 对视图GS_LABELS的查询权限
27 GS_MASKING 对视图GS_MASKING的查询权限
28 GS_AUDITING 对视图GS_AUDITING的查询权限
29 GS_AUDITING_ACCESS 对视图GS_AUDITING_ACCESS的查询权限
30 GS_AUDITING_PRIVILEGE 对视图GS_AUDITING_PRIVILEGE的查询权限
31 GA_MASKING_POLICY 对视图GS_MASKING_POLICY的查询权限
32 GS_MASKING_POLICY_FILTER 对视图GS_MASKING_POLICY_FILTER的查询权限
33 GS_MASKING_POLICY_ACTIONS 对视图GS_MASKING_POLICY_ACTION的查询权限

其他数据字典权限与普通用户相同。上述表格中列举的权限仅安全员才具备。

表5-13 系统管理员权限列表

序号 PRIVILEGE类型 说明 是否已实现
1. GRANT/REVOKE 增加/移除成员关系。要求成员和父成员管理类型一致

表5-14 共有权限列表

序号 PRIVILEGE类型 说明 是否已实现
1 SET 设置会话参数
2 CREATE ROLE/USER 创建角色/用户,只允许创建同类型的管理员用户
3 ALTER ROLE/USER 修改角色/用户信息,要求被修改者与执行者管理类型一致
4 DROP ROLE/USER 删除角色/用户, 要求执行用户与被删除者管理类型一致

Vastbase可以通过ALTER ROLE/USER命令修改用户属性。在启用三权分立功能情况下,不允许修改其他类型用户的属性,不允许修改用户属性使之同时具备安全员、审计员和管理员中两种或以上权限。例如不允许管理员修改安全员的用户属性。

新增安全员属性,相关语法示例如下:

CREATE USER user1 PASSWORD 'user1@abcd' ssoadmin;

以上SQL语句创建了一个名称为user1的安全员。

不允许同时指定sysadmin、auditadmin和ssoadmin中两种或以上属性,若用户属性为auditadmin或者ssoadmin,则不允许指定createrole和createdb属性。

例如以下创建用户语句是不合法的:

CREATE USER user1 PASSWORD 'user1@abcd' ssoadmin createrole;

导入导出数据

  • pg_dump

    启用三权分立功能情况下,只允许具有系统管理员权限的用户(rolsystemadmin为true)导出数据库。

  • pg_restore

    启用三权分立功能情况下,只允许具有系统管理员权限的用户(rolsystemadmin为true)导入数据库。

  • copy语句

    copy语句在一个文件和表之间导入导出数据。

    启用三权分立功能情况下,只允许具有审计策略管理权限的用户导入导出审计系统表,安全员导入导出安全系统表,其他表只有系统管理员有权导入导出。