综合示例
本章节创建一个用户usr_1,并创建两张表插入数据,对主体(用户)和客体(表)添加不同的安全等级,用户通过对表进行查询、修改等操作进行示例。
SYSDBA用户登录,创建用户并创建表插入值。
sql-- 创建用户与授权 SQL> CREATE USER usr_1 IDENTIFIED BY 'QWEasd12#@'; SQL> GRANT DBA TO usr_1; -- 创建表并插入值 SQL> CREATE TABLE usr_1.tab_test_1(c1 INT, c2 VARCHAR); SQL> CREATE TABLE usr_1.tab_test_2(c1 INT, c2 VARCHAR); SQL> INSERT INTO usr_1.tab_test_1 VALUES(1, 'a'); SQL> INSERT INTO usr_1.tab_test_1 VALUES(2, 'b'); SQL> INSERT INTO usr_1.tab_test_2 VALUES(1, 'alpha'); SQL> INSERT INTO usr_1.tab_test_2 VALUES(2, 'beta');
SYSSSO用户登录,创建安全策略,包括3个等级,并为用户和表添加不同的等级。
sql-- 创建安全策略 SQL> CREATE POLICY policy_1 ADD LEVEL level_1 AS 1,ADD LEVEL level_2 AS 3,ADD LEVEL level_3 AS 5; -- 用户等级为3 SQL> ALTER USER POLICY usr_1 ADD policy_1 LEVEL level_2; -- 表等级分别为1、5 SQL> ALTER TABLE POLICY usr_1.tab_test_1 ADD policy_1 COLUMN c3 NOT HIDE LABEL 'level_1:'; SQL> ALTER TABLE POLICY usr_1.tab_test_2 ADD policy_1 COLUMN c3 NOT HIDE LABEL 'level_3:';
usr_1用户登录,等级为3,大于tab_test_1的等级1,小于tab_test_2的等级5,因此修改表tab_test_1出现错误,并无法读取表tab_test_2数据。
sql-- 修改表数据 SQL> UPDATE tab_test_1 SET c2 = 'c' WHERE c1 = 2; [E18028] 更改操作违反强制安全控制策略 -- 读取表数据 SQL> SELECT * FROM tab_test_1; C1 | C2 | C3 | ------------------------------------------------------------------------------ 1 | a| 281474976710656 | 2 | b| 281474976710656 | SQL> SELECT * FROM tab_test_2; C1 | C2 | C3 | ------------------------------------------------------------------------------