功能概述
在不删除角色的前提下,在本地库内使角色失效
,
使失效的角色再生效。
加载插件
修改
kingbase.conf
文件中
shared_preload_libraries
参数。
shared_preload_libraries
=
'roledisable'
create extension roledisable;
查看角色状态
SYSTEM
可以通过
roledisable.sys_role_status
视图来查看系统所有角色在当前库内的启用
/
禁用状态。
SELECT
*
FROM roledisable
.
sys_role_status;
字段说明
oid
角色在数据库内的
ID
。
rolename
角色在数据库内的名称。
status
角色的状态
Enable
表示角色被启用,
Disable
表示角色被禁用。
启用角色
将角色设置为启用状态。
ALTER ROLE rolename ENABLE;
•
执行权限
:
需要以系统管理员权限执行,以非系统管理员执行时报告错误。
•
角色要求:被启用的角色需事先存在。
•
新建角色:新创建的角色默认为启用状态。
禁用角色
将角色设置为禁用状态。
ALTER ROLE rolename DISABLE;
•
执行权限
:
需要以系统管理员权限执行,以非系统管理员执行时报告错误。
•
角色要求:被禁用的角色需事先存在。
•
系统内置角色;系统内置角色无法被禁用。如初始化用户、
sao
、
sso
等无法被禁用。
被禁用角色的表现
•
当角色被禁用后,断开权限继承关系,不能从该角色直接和间接继承权限,间接使用被禁用角色的权
限时应该报角色被禁用或权限错误。
•
以
SET ROLE
切换到被禁用的角色时报告错误。
•
当会话使用的系统管理员角色被禁用时,因系统管理员绕过权限检查因此不会对其造成权限的影响。
•
当前会话使用的非系统管理员角色被禁用时,被禁用角色对权限继承关系产生影响因缓存机制可能不
会立即生效,当切换角色权限检查或重新登录后生效。
•
角色在使用期间被禁用时,以被禁用角色(非系统管理员)执行需检查权限的操作时,报当前角色被
禁用错误。
•
角色被禁用状态下,可以修改角色权限和角色关系。如使用
GRANT
和
REVOKE
对其操作,使用
ALTER ROLE
对其操作。