指定格的存储过程:
以下是引用片段: PROCEDURE SET_COMPARTMENTS ( policy_name IN VARCHAR2, // 策略名 user_name IN VARCHAR2, // 用户名 read_comps IN VARCHAR2, // 读集合 write_comps IN VARCHAR2 DEFAULT NULL, // 写集合 def_comps IN VARCHAR2 DEFAULT NULL, // 默认集合 row_comps IN VARCHAR2 DEFAULT NULL); // 行插入集合 |
指定组同指定格。
指定组的存储过程:
以下是引用片段: PROCEDURE SET_GROUPS ( policy_name IN VARCHAR2, // 策略名 user_name IN VARCHAR2, // 用户名 read_groups IN VARCHAR2, // 读集合 write_groups IN VARCHAR2 DEFAULT NULL, // 写集合 def_group IN VARCHAR2 DEFAULT NULL, // 默认集合 row_groups IN VARCHAR2 DEFAULT NULL); // 行插入集合 |
用户进入系统后会生成一个会话标记和一个行插入标记。会话标签等于默认级加上默认格集合加上默认组集合。行插入标记同理可得。用户可以修改自己的会话标记和行插入标记,但必须是在合理的范围内。
(2)行级安全标记
策略能应用到表上,将在表中增加一列,以记录每一元组的标签,管理员可以选择显示或者隐藏这一列。缺省地,这一列的数据类型是NUMBER,此列在表或者模式上应用策略时增加进去,而不是在创建策略时。在删除一个策略时,凡是应用了策略的基表,可以指明将标签列删除,也可以不删除,从基表或模式中清除一个策略时,同样可以指明将标签列删除,也可以不删除。在已有数据的基表上应用安全策略,新增加的标签列取值为NULL。
一个表上可以应用多个策略,一个策略可以应用到多个表上。
在表上应用策略的存储过程:
以下是引用片段: PROCEDURE APPLY_TABLE_POLICY ( policy_name IN VARCHAR2, // 策略名 schema_name IN VARCHAR2, // 模式名 table_name IN VARCHAR2, // 表名 table_options IN VARCHAR2 DEFAULT NULL, // 表选项 label_function IN VARCHAR2 DEFAULT NULL, // 标记值 predicate IN VARCHAR2 DEFAULT NULL); // 读控制谓词 |
策略同时能应用到模式上,即对模式里的所有没有应用该策略的表都应用该策略。不管何时,在模式下创建一个新的表,则自动应用该策略。
在模式上应用策略的存储过程:
以下是引用片段: PROCEDURE APPLY_SCHEMA_POLICY ( policy_name IN VARCHAR2, // 策略名 schema_name IN VARCHAR2, // 模式名 default_options IN VARCHAR2 DEFAULT NULL); // 默认选项 |
2.3访问规则
用户必须包含表上的所有策略才能对表中数据进行访问。对其中每一个标记都进行读访问控制或写访问控制。