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

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;
评论
热门帖子
- 12023-05-09浏览数:18992
- 22023-09-25浏览数:12136
- 32020-05-11浏览数:11934
- 42019-04-26浏览数:11406
- 52023-07-04浏览数:10609