目录
1. backup_pri插件介绍
backup_pri 是KingbaseES的一个扩展插件,主要用于对备份/恢复操作使用权限限制。
backup_pri插件增加了一个新的管理特权,SYSBACKUP,允许物理备份sys_basebackup连接到目标数据库,执行物理备份操作。
2. 加载插件
在使用 backup_pri 之前,需要将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,并重启 KingbaseES 数据库。
shared_preload_libraries = 'backup_pri'
3. 参数配置
backup_pri.enable_backup_pri
启用备份恢复权限功能,取值范围为ture或者false,缺省为 false。
SHOW backup_pri.enable_backup_pri;
backup_pri.enable_backup_pri
-------------------------------
false
(1 row)
ALTER SYSTEM SET backup_pri.enable_backup_pri to on;
select pg_reload_conf();
SHOW backup_pri.enable_backup_pri;
backup_pri.enable_backup_prih
-------------------------------
t
(1 row)
4. 查询示例
如何赋予和收回这个新的权限用例。
create user test;
select * from sys_privilege;
userid | sysbackup
--------+-----------
16401 | f
(1 row)
alter user test sysbackup;
select * from sys_privilege;
userid | sysbackup
--------+-----------
16401 | t
(1 row)
alter user test nosysbackup;
select * from sys_privilege;
userid | sysbackup
--------+-----------
16401 | f
(1 row)
create user test1 sysbackup;
select * from sys_privilege;
userid | sysbackup
--------+-----------
16401 | f
16402 | t
(2 rows)
drop user test;
select * from sys_privilege;
userid | sysbackup
--------+-----------
16402 | t
(1 row)
drop user test1;
select * from sys_privilege;
userid | sysbackup
--------+-----------
(0 rows)
5. 三个视图
backup_pri.dba_sys_privs。
查询出所有的用户的sysbackup权限和其他系统权限,若用户没有sysbackup权限,有可能显示的是空,或者nosysbackup两种情况。
backup_pri.user_sys_privs。
查询出当前的用户的sysbackup权限和其他系统权限,若当前用户没有sysbackup权限,有可能显示的是空,或者nosysbackup两种情况。
backup_pri.role_sys_privs。
查询出角色的sysbackup权限和其他系统权限,若角色没有sysbackup权限,有可能显示的是空,或者nosysbackup两种情况。
backup_pri.dba_sys_privs视图的每个字段意义:
username | userid | superuser | inherit | createrole | createdb | canlogin | replication | bypassrls | sysbackup
----------+--------+-----------+---------+------------+----------+----------+-------------+------------+-----------
用户名 | 用户id | 超级用户 | 继承 | 创建角色 | 创建库 | 登录 | 流复制 | 安全测试RLS| 备份恢复
backup_pri.user_sys_privs视图的每个字段意义:
username | userid | superuser | inherit | createrole | createdb | canlogin | replication | bypassrls | sysbackup
----------+--------+-----------+---------+------------+----------+----------+-------------+-----------+-----------
用户名 | 用户id | 超级用户 | 继承 | 创建角色 | 创建库 | 登录 | 流复制 |安全测试RLS | 备份恢复
backup_pri.role_sys_privs视图的每个字段意义:
rolname | rolid | superuser | inherit | createrole | createdb | canlogin | replication | bypassrls | sysbackup
--------------------------+-------+-----------+---------+------------+----------+----------+-------------+-----------+-----------
角色名 | 用户id| 超级用户| 继承 | 创建角色 | 创建库 | 登录 | 流复制 |安全测试RLS| 备份恢复
6. 备份恢复权限流程
存储sysbackup权限的系统表 sys_privilege:
物理备份sys_basebackup时,检查否持有这个权限,若没有,报错退出。
具体流程如下:
(1)备份恢复权限与其他普通权限一样,都是限制一些用户进行指定的操作;
(2)备份恢复权限是用户级别的,在执行备份恢复时,步骤如下:
检查当前用户是否对要备份还原的数据库有备份恢复的权限;
①检查备份恢复权限,才可以进行备份恢复的操作;
②无备份恢复权限,SYSTEM或SUPERUSER用户为其授予备份恢复权限。才可以执行备份恢复的操作。在执行备份恢复时,增加一项备份恢复的权限检查;
(3)权限名:SYSBACKUP/sysbackup
7. 备份恢复权限的授予与回收
权限的授予与回收:
在数据库初始化之后,SYSTEM用户级SUPERUSER用户不具有备份恢复的权限;但具有该权限的授予与回收的权利,SYSTEM用户级SUPERUSER用户也可以给自身赋权。
授予与回收的语法:
alter user u1 sysbackup;
Alter user u1 nosysbackup;
同时建用户的时候可以直接授予或回收:
Create user u1 sysbackup;
Create user u1 (nosysbackup);
不带默认nosysbackup,或者建库初始化时的用户也是默认nosysbackup的,想要赋予权限,可以用alter语句实现。
删除用户的时候语法:
Drop user u1;
会自动删除这个用户的备份恢复权限,和其他系统权限一样,记录将不存在。
参考资料
更多金仓数据库 KingbaseES 信息,详见 KingbaseES 产品手册