干货分享 | 优炫数据库安全功能之四:强访控制
强制访问控制(MAC)是系统强制主体服从访问控制策略,是由系统对用户所创建的对象,按照规规则控制用户权限及操作对象的访问。它通过强制的存取限制来阻止主体对客体的直接和间接非法访问。支持强制访问控制的系统为主体和客体分配了各自的安全标识,系统通过比较主客体的安全标识来决定主体能否访问客体。
主体和客体
强制访问控制模型
优炫数据库(UXDB)将强制访问控制部署在自主访问控制模块之后。当用户发出访问某个客体的请求时,系统首先根据访问控制列表判断用户是否具有访问客体的权限,如果有权访问,进入强制访问控制模块,获取主客体的敏感度标记,根据请求访问的类型对主客体的标记进行比较。如果比较结果通过,那么准许此次访问,否则提示用户无权访问,终止连接。
标记的概念
1.主体标记
数据库中的主体有五个标记:最大读标记,最大写标记,最小写标记,默认会话标记和默认写标记。安全员为用户设置标记时,一次性指定这五个标记的内容。
2.标记比较
标记比较关系运算定义:如果(policyid1,level1,scope1)≥(policyid2,level2,scope2)成立,那么policyid1必须与policyid2相等(没有标记时,policyid为0),level1数值大于等于level2(没有标记是,level数值为0),scope1包含scope2(没有标记时scope为空)。Scope采用位编码,类型是OID(unsigned int)方便集合运算。
行级保护比较:
select: max_read >= row_label
insert: 直接插入,标记为default_write
update: max_write >= row_label >= min_write
delete: max_write >= row_label
列级保护比较:
select: max_read >= column_label
insert: max_write >= column_label >= min_write
update: max_write >= column_label >= min_write
delete: max_write >= column_label
访问控制规则
读访问控制规则较为简单。优炫数据库(UXDB)先获取客体标记,然后获得主体在同一策略上的最大读标记。下面两种情况下允许主体读客体数据:
1 客体没有标记; 2 客体有标记,主体在同一策略上有标记且满足客体标记≤用户最大读标记。写访问控制的规则中,优炫数据库(UXDB)首先获取客体标记,然后获得主体在同一策略上的最大写标记和最小写标记。下面两种情况下允许主体写客体数据:
1 客体没有标记; 2 客体有标记,主体在同一策略上有标记,且满足主体的最小写标记≤客体标记≤用户的最大写标记。