暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES 强制访问控制的初步学习

数据猿 2023-11-17
176


金仓数据库 强制访问控制的初步学习

关键字:

KingbaseES、安全、强制访问控制、人大金仓、KingbaseES

基本使用和相关参数说明

准备工作

修改 kingbase.conf 文件中 shared_preload_libraries 参数,

shared_preload_libraries = 'sysmac'

sysmac.enable_mac = true

重启数据库

----对视图,函数,触发器进行标记

\c - system

CREATE USER U1;

CREATE USER U2;

CREATE TABLE tt(ID INT, NAME CHAR(10));

insert into tt values(1, '111');

insert into tt values(2, '222');

--创建视图

create view tv as select * from tt;

grant all on tt to U1;

grant all on tt to U2;

grant all on tv to U1;

grant all on tv to U2;

--创建函数

\set SQLTERM /

CREATE OR REPLACE FUNCTION ff(

)returns bool

AS $$

BEGIN

RAISE NOTICE 'function test';

return true;

END $$LANGUAGE PLSQL;

/

--创建存储过程

CREATE OR REPLACE PROCEDURE pp() AS

BEGIN

RAISE NOTICE 'procedure test';

END;

/

\set SQLTERM ;

2、授权

grant all on function ff to U1;

grant all on function ff to U2;

grant all on procedure pp to U1;

grant all on procedure pp to U2;

alter user U1 with password '12345678ab';

alter user U2 with password '12345678ab';

3、创建策略

\c - sso

CALL SYSMAC.CREATE_POLICY ('P1','P1_COLUMN',false);

参数说明:

policy_name:指定策略的名称,该名称必须在数据库中唯一。

column_name:当策略应用于表上时,将自动在表上增加一列,该参数就是用于指定策略列的名称。该名称必须在数据库中唯一。

hide_column:指定当策略用于表上时,是否隐藏策略列。TRUE代表隐藏,FALSE代表不隐藏。

4、建立等级

CALL SYSMAC.CREATE_LEVEL('P1','L1',10);

CALL SYSMAC.CREATE_LEVEL('P1','L2',20);

CALL SYSMAC.CREATE_LEVEL('P1','L3',30);

功能:

创建指定策略名下的等级,并指定等级的ID。用户指定的ID值的大小决定了等级的敏感性级别,数值越大级别越高。

参数说明:

policy_name:指定数据库中已经创建的安全策略名称。

level_name:指定等级的名称,等级名称在策略下唯一。

levid:指定等级的ID值,等级ID的取值范围为[1,9999],并在策略下唯一。

5、建立范围

CALL SYSMAC.CREATE_COMPARTMENT ('P1','C1',100);

CALL SYSMAC.CREATE_COMPARTMENT ('P1','C2',200);

CALL SYSMAC.CREATE_COMPARTMENT ('P1','C3',300);

功能:

创建指定策略下的范围,并指定范围ID。用户指定的范围ID值决定了范围在标记字符串中出现的先后顺序。

参数说明:

policy_name:指定数据库中已经创建的安全策略名称。

comp_name:指定范围的名称,范围名称在策略下唯一。

comp_id:指定范围的ID值,范围ID的取值范围为[1,9999],并在策略下唯一。

6、创建标记

CALL SYSMAC.CREATE_LABEL('P1','L1:C1',50);

CALL SYSMAC.CREATE_LABEL('P1','L2:C1',60);

CALL SYSMAC.CREATE_LABEL('P1','L3:C1',70);

参数说明:

policy_name:指定数据库中已经创建的安全策略名称。

label:指定标记字符串,关于标记的字符串的语法格式请参见“标记的语法格式”。

labelid:指定标记的ID值,标记ID的取值范围是[1,99999999],并且必须是同一数据库下唯一。

7、授予用户标记

CALL SYSMAC.SET_USER_LABELS('P1','U1','L3:C1','L3:C1','L3:C1', 'L3:C1','L3:C1');

CALL SYSMAC.SET_USER_LABELS('P1','U2','L1:C1', 'L1:C1','L1:C1','L1:C1','L1:C1');

参数说明:

policy_name:指定数据库中已经创建的安全策略名称。

username:指定用户名称。

max_read_label:指定用户的最大读标记,该标记包含授予用户的最大等级和具有读权限的范围集合。

max_write_label:指定用户的最大写标记,该标记包含授予用户的最大等级和具有写权限的范围。

row_label:指定用户的写入标记。

min_write_label:指定用户的最小写标记,该标记包含授予用户的最小等级和最小写范围。

def_label:用户的默认会话标记。

8、增加对象标记 

CALL sysmac.apply_obj_policy('P1', 'view', 'PUBLIC', 'tv', 'L2:C1');

CALL sysmac.apply_obj_policy('P1', 'function', 'PUBLIC', 'ff', 'L2:C1');

CALL sysmac.apply_obj_policy('P1', 'procedure', 'PUBLIC', 'pp', 'L2:C1');

参数说明:

policy_name:指定数据库中已经创建的安全策略名称。

object_type:指定被策略policy_name保护的对象类型。支持的对象类型有:table、view 、function、procedure、trigger、sequence、index、package、synonym。

schema_name:指定数据库下的模式名称。

object_name: 指定被策略policy_name保护的对象名称。

label:指定标记字符串,关于标记的字符串的语法格式请参见数据标记。

支持的对象有:“TABLE”、“VIEW”、“INDEX”、“PROCEDURE”、“FUNCTION”、“PACKAGE”、“SEQUENCE”、“TRIGGER”、 “SYNONYM”。可通过系统表sysmac.sysmac_obj查询对象标记信息。

9、验证强防设置是否成功

--U1 下列三个操作都成功

\c - u1

select * from tv;

call ff();

call pp();

--U2 下列三个操作都失败

\c - u2

select * from tv;

call ff();

call pp();

10、删除对象标记

\c - sso

call sysmac.drop_obj_policy('P1', 'view', 'PUBLIC', 'tv');

call sysmac.drop_obj_policy('P1', 'function', 'PUBLIC', 'ff');

call sysmac.drop_obj_policy('P1', 'procedure', 'PUBLIC', 'pp');

11、删除

call sysmac.drop_user_access('P1', 'U1');

call sysmac.drop_user_access('P1', 'U2');

12、删除策略

call sysmac.drop_policy('P1', true);

13、清理环境

\c - system

drop view tv;

drop table tt;

drop function ff();

drop procedure pp();

drop user U1;

drop user U2;

参考文档:

《KingbaseES安全指南.pdf》

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

评论