Bootstrap

金仓数据库KingbaseES V8R3 运维案例 -- sys_dump备份故障“SYS_MAC_POLICY_ENFORCEMENT”

案例说明:
在KingbaseES V8R3执行sys_dump时出现“ERROR: permission denied for relation SYS_MAC_POLICY_ENFORCEMENT”故障,此前做过一些安全相关的配置,比如修改syssao和syssso用户口令等操作。

适用版本: KingbaseES V8R3

案例复现:

1、查看sys_authid视图

TEST=# select * from sys_authid ;
       ROLNAME        | ROLSUPER | ROLUSERTYPE | ROLINHERIT | ROLCREATEROLE | ROLCREATEDB | ROLCANLOGIN | ROLREPLICATION | ROLBYPASSRLS | ROLCONNLIMIT |             ROLPASSWORD             | ROLVALIDUNTIL | PWDEXPIRETIME
----------------------+----------+-------------+------------+---------------+-------------+-------------+----------------+--------------+--------------+-------------------------------------+---------------+---------------
 SYS_SIGNAL_BACKEND   | f        | N           | t          | f             | f           | f           | f              | f       |           -1 |                                     |               |
 SUPERMANAGER_V8ADMIN | t        | D           | t          | t             | t           | t           | t              | t       |           -1 | md5f7902af5f3f7cdcad02b5ca09320d102 |               |
 SYSSSO               | f        | S           | t          | f             | f           | t           | f              | f       |           -1 | md506de7a576af7f2791face19665f08a10 |               |
 SYSSAO               | f        | A           | t          | f             | f           | t           | f              | f       |           -1 | md5ce2668ef745c2a09d32010b185466e91 |               |
 TOM                  | f        | N           | t          | f             | f           | t           | f              | f       |           -1 | md5a6b0d86ccb61b5cee406b28da51b3aa4 |               |
 SYSTEM               | t        | D           | t          | t             | t           | t           | t              | t       |           -1 | md53afebd0fba6df9fc2cf82c0b09926bcc |               |
 NCSOAYC              | f        | N           | t          | f             | f           | t           | f              | f       |           -1 | md5c579e0960f7d03228db41a49f45f9713 |               |
(7 rows)

=如下所示:默认syssso用户的rolusertype的字段值为‘S’。= file

2、更新syssso的rolusertype字段

TEST=# update sys_authid set ROLUSERTYPE='N' where  ROLNAME='SYSSSO';
UPDATE 1

TEST=# select * from sys_authid  where rolname='SYSSSO';
 ROLNAME | ROLSUPER | ROLUSERTYPE | ROLINHERIT | ROLCREATEROLE | ROLCREATEDB | ROLCANLOGIN | ROLREPLICATION | ROLBYPASSRLS | ROLC
ONNLIMIT |             ROLPASSWORD             | ROLVALIDUNTIL | PWDEXPIRETIME
---------+----------+-------------+------------+---------------+-------------+-------------+----------------+--------------+-----
---------+-------------------------------------+---------------+---------------
 SYSSSO  | f        | N           | t          | f             | f           | t           | f              | f            |
      -1 | md506de7a576af7f2791face19665f08a10 |               |
(1 row)

3、执行sys_dump备份

[kingbase@node101 bin]$ ./sys_dump -U SYSTEM -W 123456 -d PROD >prod.sql
sys_dump: [archiver (db)] query failed: ERROR:  permission denied for relation SYS_MAC_POLICY_ENFORCEMENT
sys_dump: [archiver (db)] query was: select c.oid from SYS_CATALOG.sys_namespace n JOIN SYS_CATALOG.sys_class c ON (n.oid=c.relnamespace) JOIN SYS_CATALOG.sys_mac_table_policies p ON (n.nspname = p.schema_name and c.relname = p.table_name)

=如下所示,sys_dump备份出现权限错误。
file

4、故障解决

系统表sys_authid:
sys_authid 包含关于数据库授权标识符(角色)的信息。角色把“用户”和“组”的概念包含在内。一个用户实际上就是一个 rolcanlogin 标志被设置的角色。任何角色(不管 rolcanlogin 设置与否)都能够把其他角色作为成员,参见 sys_auth_members 。
由于这个目录包含口令,它不能是公共可读的。 sys_roles 是在 sys_authid 上的一个公共可读视图,它隐去了口令域。
用户的权限和角色 包含关于用户和权限管理的详细信息。
由于用户标识符是集簇范围的, sys_authid 在一个集簇的所有数据库之间共享:在一个集簇中只有一份 sys_authid 拷贝,而不是每个数据库一份。

1)更新rolusertype字段

TEST=# UPDATE SYS_AUTHID SET ROLUSERTYPE='S' where rolname='SYSSSO';
UPDATE 1

TEST=# select * from sys_authid  where rolname='SYSSSO';
 ROLNAME | ROLSUPER | ROLUSERTYPE | ROLINHERIT | ROLCREATEROLE | ROLCREATEDB | ROLCANLOGIN | ROLREPLICATION | ROLBYPASSRLS | ROLCONNLIMIT |             ROLPASSWORD             | ROLVALIDUNTIL | PWDEXPIRETIME
---------+----------+-------------+------------+---------------+-------------+-------------+----------------+--------------+--------------+-------------------------------------+---------------+---------------
 SYSSSO  | f        | S           | t          | f             | f           | t           | f              | f            |      -1 | md506de7a576af7f2791face19665f08a10 |               |
(1 row)

2)执行备份

[kingbase@node101 bin]$ ./sys_dump -U SYSTEM -W 123456 -d PROD -t public.TB1 >~/prod_tb1.sql

[kingbase@node101 bin]$ more ~/prod_tb1.sql
--
-- Kingbase database dump
--

-- Dumped from database version V008R003C002B0290
-- Dumped by sys_dump version V008R003C002B0290

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT sys_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: TB1; Type: TABLE; Schema: PUBLIC; Owner: SYSTEM
--

CREATE TABLE "PUBLIC"."TB1" (
    "ID" INTEGER,
    "A_DATE" DATE,
    "B_TM" TIMESTAMP WITHOUT TIME ZONE
);
.......

---如上所示,执行sys_dump备份成功。

5、总结
系统表 sys_authid 包含关于数据库授权标识符(角色)的信息。在对syssao、syssso用户执行相关操作时,字段会被更新,当出现此故障信息时,DBA可以按照以上的方法解决。 更多信息,参见https://help.kingbase.com.cn/v8/index.html

;