#行访问控制
# 基本原理
LBAC是强访问控制的一种方式,通过在表中应用安全策略保护数据、向用户应用安全标签授予读写权限,当用户尝试访问受保护数据时,该用户的安全标签将与受保护数据的安全标签进行比较,从而约束或允许用户对数据的访问。
一个安全策略可以应用到多张表上,表中每应用一个安全策略便会自动添加一列,用于该安全策略的访问控制。应用安全策略后,表中的每一行与对应的安全标签相关联以行级别对数据进行保护。
安全管理员通过向用户授予安全标签来允许用户访问相应的受保护数据。当用户尝试访问受保护数据时,该用户的安全标签将与受保护数据的安全标签进行比较:
用户只允许查询到被LBAC授权可读的行。
要求用户的安全标签的级别高于目标数据的安全标签的级别,且用户的安全标签的范围包含目标数据的安全标签的所有范围,用户才能正常读取相应行。
用户只允许修改、删除或插入被LBAC授权可写的行。
要求用户的安全标签的最低级别低于目标数据的安全标签的级别,且用户的安全标签的范围包含目标数据的安全标签的所有可写范围,用户才能正常写入相应行。
# 配置行访问控制
所有LBAC相关的配置均由安全管理员或具有内置角色LBAC_DBA的用户来执行。
LBAC配置包括创建和管理LBAC安全策略、策略组件(包括级别和范围)以及策略中的安全标签(Label),应用和移除安全策略、对用户安全标签进行授权管理等。
通过DBA_SA_COMPARTMENTS、DBA_SA_LABELS、DBA_SA_LEVELS、DBA_SA_POLICIES、DBA_SA_TABLE_POLICIES、DBA_SA_USER_LABELS视图可获取LBAC安全策略相关信息。
如需使用行访问控制,需执行以下操作:
- 通过DBA_YLS_STATUS视图获取行访问控制功能的状态,若暂未开启,可调用YLS_ENFORCEMENT.ENABLE_YLS开启该功能。
- 调用SA_SYSDBA.CREATE_POLICY,创建LBAC安全策略。
- 调用SA_COMPONENTS.CREATE_LEVEL为LBAC安全策略创建级别,调用SA_COMPONENTS.CREATE_COMPARTMENT为LBAC安全策略创建范围。
- 调用SA_POLICY_ADMIN.APPLY_TABLE_POLICY,为表关联LBAC安全策略。
- 调用SA_LABEL_ADMIN.CREATE_LABEL,为LBAC安全策略创建安全标签。
- 调用SA_USER_ADMIN.SET_USER_LABELS,为用户关联安全标签,从而建立用户与LBAC安全策略的关联关系。