GBase 8c
其他
文章

南大通用GBase 8c数据库授权与权限说明

GBase用户137
发表于2025-05-14 18:00:49179次浏览0个评论

1、概述

GBase 8c数据库逻辑设计思路符合行业惯性认知,沿用实例instance、数据库database、模式schema的概念。实际层次结构为实例(instance)下存在多个数据库(database),每个数据库里存在多个模式(schema),而模式下属存在众多对象,比如表、视图、序列、函数等。授权的时候需要从数据库到对象逐级授权。用户是全局的,不需要在每个库单独创建。

GBase 8c逻辑结构如下图所示:

图:GBase8c逻辑结构

2、权限介绍

GBase 8c数据库中使用GRANT完成授权,权限回收则使用REVOKE完成。

用户授权包含以下三种场景:

  • 系统权限授权给用户或角色

系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN和LOGIN等。修改系统权限一般通过CREATE/ALTER语法来指定。

  • 数据库对象授权给用户或者角色(常用)

将数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户。

NOTE:授权时参数WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,一般在给管理员用户时可以使用该参数,项目其他用户不能添加该参数;

授权时通常要进行三个步骤,1.库授权,2.schema授权,3.对象授权。

  • 将角色或用户的权限授权给其他角色或用户

将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。

3、常用授权语法

将系统权限授予指定用户:

ALTER USER user_name [ [ WITH ] option [ ... ] ];

option选项:

{CREATEDB | NOCREATEDB}
{CREATEROLE | NOCREATEROLE}
{INHERIT | NOINHERIT}
{AUDITADMIN | NOAUDITADMIN}
{SYSADMIN | NOSYSADMIN}
{MONADMIN | NOMONADMIN}
{OPRADMIN | NOOPRADMIN}
{POLADMIN | NOPOLADMIN}
{USEFT | NOUSEFT}
{LOGIN | NOLOGIN}
{REPLICATION | NOREPLICATION}
{INDEPENDENT | NOINDEPENDENT}

将数据库的权限赋予指定的用户或角色

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...]
     | ALL [ PRIVILEGES ] }
   ON DATABASE database_name [, ...]
   TO { [ GROUP ] role_name | PUBLIC } [, ...]
   [ WITH GRANT OPTION ];

将模式(schma)的权限赋予指定的用户或角色

GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
   ON SCHEMA schema_name [, ...]
   TO { [ GROUP ] role_name | PUBLIC } [, ...]
   [ WITH GRANT OPTION ];

将表或视图的权限赋予指定的用户或角色

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] 
     | ALL [ PRIVILEGES ] }
   ON { [ TABLE ] table_name [, ...]
      | ALL TABLES IN SCHEMA schema_name [, ...] }
   TO { [ GROUP ] role_name | PUBLIC } [, ...] 
   [ WITH GRANT OPTION ];

将序列的权限授予指定的用户或角色

GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] 
     | ALL [ PRIVILEGES ] }
   ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...]
      | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
   TO { [ GROUP ] role_name | PUBLIC } [, ...] 
   [ WITH GRANT OPTION ];

将函数的权限授予指定用户或角色

GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] }
   ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
      | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
   TO { [ GROUP ] role_name | PUBLIC } [, ...]
   [ WITH GRANT OPTION ];

将表的字段权限授予指定用户或角色

GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] 
     | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
   ON [ TABLE ] table_name [, ...]
   TO { [ GROUP ] role_name | PUBLIC } [, ...]
   [ WITH GRANT OPTION ];

4、授权示例

系统权限授权和回收

授予dba用户管理员(sysadmin)权限

alter user dba with sysadmin;

回收dba用户的管理员权限

alter user dba with nosysadmin;

数据库对象授权和回收

数据库授权和回收

将数据库test的访问及创建对象的权限授予给dev

GRANT CONNECT,CREATE  ON DATABASE test TO dev;

回收dev用户对test库的创建对象的权限

REVOKE CREATE on database test from dev;

模式(schema)授权和回收

将platform_dev这个schema的使用,创建对象,删除对象,给对象设置注释,修改对象权限授予给dev用户

GRANT CREATE,USAGE,ALTER,DROP,COMMENT ON SCHEMA platform_dev TO dev;

回收dev用户对 platform_dev的ALTER,DROP权限

REVOKE ALTER,DROP ON SCHEMA platform_dev FROM dev;

表授权和回收

将platform_dev这个schema的所有表的增删查改及truncate的权限赋予dev用户

GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA platform_dev to dev;

回收dev用户对platform_dev这个schema的所有表的TRUNCATE权限

REVOKE TRUNCATE ON ALL TABLES IN SCHEMA platform_dev FROM dev;

序列授权会回收

将platform_dev这个schema的所有序列的查询更新使用权限赋予dev用户

GRANT SELECT,UPDATE,USAGE,ALTER ON ALL SEQUENCES IN SCHEMA platform_dev to dev;

回收dev用户对platform_dev这个schema的所有序列的ALTER权限

REVOKE ALTER ON ALL SEQUENCES IN SCHEMA platform_dev FROM dev;

角色权限授权会回收

创建一个role_sysamdin的角色,并将该角色权限授予dba用户

create role role_sysadmin with password 'QWEqwe123' sysadmin;
create user dba with password 'QWEqwe123';
grant role_sysadmin to dba;

回收dba用户的role_sysamdin的权限

revoke role_sysadmin from dba;

评论

登录后才可以发表评论