1

mogdb/opengauss 数据库中user/role 使用 -m6米乐安卓版下载

原创 高云龙 云和恩墨 2022-06-14
1140

mogdb/opengauss 数据库中关于用户角色这部分有一个大家熟知的特性:三权分立,即从安全性考虑将系统管理的权限分离出安全管理员和审计管理员,这里暂时先不考虑三权分立这个特性,仅从user/role 开发运维层面进行整理。

mogdb数据库版本:3.0.0

定义

角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。
从创建用户和角色的语义(create user/role)上看也没有区别,唯一的区别就是用户默认带有login权限。官方文档里也明确的指出 image.png

查询用户相关信息可以查看视图pg_user,查看角色相关信息可以查看pg_roles,但如果你查看pg_user和pg_roles的视图定义,会发现这两个视图都来源于基表pg_authid。

我们可以认为在mogdb/opengauss里,用户就是带有login属性的角色。

角色管理

私有用户

角色的属性有很多,可以通过\h create user/role来查看,也可以直接在pg_authid系统表中查看。
这里主要介绍一个比较重要的属性:independent,即在非三权分立模式下,创建具有independent属性的私有用户,
针对该私有用户的对象,系统管理员和拥有createrole属性的安全管理员在未经其授权前,只能进行控制操作(drop、alter、truncate),无权进行insert、delete、select、update、copy、grant、revoke、alter owner操作。

--创建私有用户,不会立即创建同名schema,在创建对象的时候会创建
mogdb=# create user inu independent password 'inu@1234';
notice:  the encrypted password contains md5 ciphertext, which is not secure.
warning:  please carefully use independent user as it need more self-management.
hint:  self-management include logical backup, password manage and so on.
create role
mogdb=# select * from information_schema.schemata where schema_name='inu';
 catalog_name | schema_name | schema_owner | default_character_set_catalog | default_character_set_schema | default_character_set_name | sql_path
-------------- ------------- -------------- ------------------------------- ------------------------------ ---------------------------- ----------
(0 rows)
mogdb=# \c postgres inu
password for user inu:
non-ssl connection (ssl connection is recommended when requiring high-security)
you are now connected to database "postgres" as user "inu".
mogdb=> create table it(id int);
create table
mogdb=> select * from information_schema.schemata where schema_name='inu';
 catalog_name | schema_name | schema_owner | default_character_set_catalog | default_character_set_schema | default_character_set_name | sql_path
-------------- ------------- -------------- ------------------------------- ------------------------------ ---------------------------- ----------
 postgres     | inu         | inu          |                               |                              |                            |
(1 row)
--超级管理员用户无法取消independent属性,只有私有用户自己有权限
mogdb=# alter user inu noindependent;
error:  only user himself can remove his own independent attribute.
mogdb=# \c postgres inu
password for user inu:
non-ssl connection (ssl connection is recommended when requiring high-security)
you are now connected to database "postgres" as user "inu".
mogdb=> alter user inu noindependent;
alter role
--超级管理员无法访问私有用户对象数据
mogdb=> insert into it values(1);
insert 0 1
mogdb=> select * from it;
 id
----
  1
(1 row)
mogdb=> \c postgres omm
non-ssl connection (ssl connection is recommended when requiring high-security)
you are now connected to database "postgres" as user "omm".
mogdb=# select * from inu.it;
error:  permission denied for relation it
detail:  n/a

角色权限继承

在角色级别授予或撤消权限时,这些更改将作用到角色下的所有成员。删除角色时只删除角色本身,不会删除角色中的成员用户。

mogdb提供了一个隐式定义的拥有所有角色的组public,所有创建的用户和角色默认拥有public所拥有的权限。要撤销或重新授予用户和角色对public的权限, 可通过在grant和revoke指定关键字public实现。

添加/移除角色成员

--添加角色
grant role to user;
--删除角色
revoke role from user;

账号安全策略

失败登录次数:failed_login_attempts=10
密码锁定时间:password_lock_time=1(d)
手工锁定:alter user name account lock;
手工解锁:alter user name account unlock;

密码安全策略

密码加密方式:password_encryption_type=1
是否开启密码策略:password_policy=1
密码重用时间:password_reuse_time
密码重用次数:password_reuse_max
密码有效期:password_effect_time
密码到期提醒:password_notify_time

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

网站地图