受限DBA可以对当前DBA的权限进行一定限制。当功能开启后DBA将不能读取、更改和执行不属于他的以下对象:
Table
Database
Function
Language
large object
Namespace
Tablespace
Foreign data wrapper
Foreign server
Type
Relation
Operator
Operator class
search dictionary
search configuration
conversion
extension
schema
KingbaseES通过插件的方式来进行受限DBA。这种方式更为灵活,当数据库的实用场景需要进行受限DBA管理时,加载插件即可。而不需要该功能时,卸载插件即可。
KingbaseES通过 1 个全局级参数配合插件来实现受限DBA管理。
加载插件
修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库,创建插件并切换用户为安全管理员sso打开受限DBA开关。
shared_preload_libraries = 'restricted_dba'
\c - system
create extension restricted_dba;
show restricted_dba.restricted_enable;
restricted_dba.restricted_enable
----------------------
off
(1 行记录)
\c - sso
alter system set restricted_dba.restricted_enable = true;
select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 行记录)
show restricted_dba.restricted_enable;
restricted_dba.restricted_enable
----------------------------------
on
(1 行记录)
参数配置
restricted_dba.restricted_enable 受限DBA开关,默认为关闭状态。
show restricted_dba.restricted_enable;
restricted_dba.restricted_enable
----------------------
off
(1 行记录)
\c - sso
alter system set restricted_dba.restricted_enable = true;
ALTER SYSTEM
select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 行记录)
show restricted_dba.restricted_enable;
restricted_dba.restricted_enable
----------------------------------
on
(1 行记录)
\c - system
create user u1 with password '123456';
\c - u1
create table t1 (a int);
\c - system
select * from t1;
错误: 对表 t1 权限不够
卸载插件
修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库。
shared_preload_libraries = ‘’