测试数据库是否支持强制访问控制 修改kingbase.conf参数 shared_preload_libraries值里添加sysmac sysmac.enable_mac=on 重启数据库 |
1、SYSTEM创建用户 Drop user u1; Drop user u2; Drop user u3; CREATE USER U1 WITH SUPERUSER PASSWORD '12345678ab'; CREATE USER U2 WITH SUPERUSER PASSWORD '12345678ab'; CREATE USER U3 WITH SUPERUSER PASSWORD '12345678ab'; 2、SYSTEM 创建测试表,授予权限 CREATE TABLE TU_INFO(ID INT, NAME CHAR(10)); GRANT ALL ON TU_INFO TO U1; GRANT ALL ON TU_INFO TO U2; GRANT ALL ON TU_INFO TO U3; 3、以SSO创建策略 CALL SYSMAC.CREATE_POLICY ('P1','P1_COLUMN',FALSE); 4、以SSO创建等级 CALL SYSMAC.CREATE_LEVEL('P1','L1',10); CALL SYSMAC.CREATE_LEVEL('P1','L2',20); CALL SYSMAC.CREATE_LEVEL('P1','L3',30); 5、创建策略名 CALL SYSMAC.CREATE_LABEL('P1','L1:',100); CALL SYSMAC.CREATE_LABEL('P1','L2:',200); CALL SYSMAC.CREATE_LABEL('P1','L3:',300); 6、SSO对表应用策略 CALL SYSMAC.APPLY_TABLE_POLICY('P1', 'PUBLIC','TU_INFO'); 7、SSO设置用户表级范围 CALL SYSMAC.SET_USER_LABELS('P1','U1', 'l1:', 'l1:','l1:', 'l1:', 'l1:'); CALL SYSMAC.SET_USER_LABELS('P1','U2', 'l3:', 'l3:','l2:', 'l2:', 'l2:'); CALL SYSMAC.SET_USER_LABELS('P1','U3', 'l3', 'l3','l3', 'l3', 'l3'); 8、U1、U2、U3用户分别登录插入数据 U1: INSERT INTO TU_INFO values(1); INSERT INTO TU_INFO values(2); INSERT INTO TU_INFO values(3); U2: INSERT INTO TU_INFO values(4); INSERT INTO TU_INFO values(5); INSERT INTO TU_INFO values(6); U3: INSERT INTO TU_INFO values(7); INSERT INTO TU_INFO values(8); INSERT INTO TU_INFO values(9); 9、分别打开三个终端 查询 select * from TU_INFO; U1更新 update TU_INFO SET ID=2 where id=1; U1会话查询: U2会话查询: U3会话查询: U2更新 update TU_INFO SET ID=10 where id=5; |
用户U1只能查询和修改自已插入的元组。 用户U2可以查询U1和U2的元组,不能修改U1的元组,可以修改U2和U3的元组。 用户U3可以查询U1、U2、U3的元组,不能修改U1和U2的元组。 |
KESR6强制访问控制
最新推荐文章于 2024-09-27 11:30:45 发布