OLS是在VPD之后起作用,它们都是针对行进行访问控制。当用户发起一个SQL访问数据时,其大致过程如下:
1)Check DAC (Data Access Control):查看用户对该表是否有访问(select)权限
2)VPD SQL Modification:如果在该表上有定义VPD,则启用VPD,加上相应的谓词条件
3)OLS:如果在该表上有定义OLS,则启动OLS,只返回用户可以看到的数据
其原理大致如下:
1)在表上定义伪列(Data Label),在该伪上定义每行数据的级别(如上例中Highly Sensitive, Sensitive, Confidential)
2)对用户也定义相应的级别(User Label),表上该用户能访问的最高级别
3)当用户访问表中数据时,Oracle会比较用户的Label和表中数据的Label,只有当用户的Label >= 数据的Label时,数据才会返回给用户
最后欢迎大家访问我的个人网站:1024s