关键字:
KingbaseES、强制访问控制、安全功能
1.什么是强制访问控制?
强制访问控制(Mandatory Access Control, MAC),用于将系统中的信息分密级和类进行管理,以保证每个用户只能访问到那些被标明可以由他访问的信息的一种访问约束机制。通俗的来说,在强制访问控制下,用户(或其他主体)与文件(或其他客体)都被标记了固定的安全属性(如安全级、访问权限等),在每次访问发生时,系统检测安全属性以便确定一个用户是否有权访问该文件。
MAC与自主访问控制(Discretionary Access Control, DAC)相比,MAC提供更严格和灵活的控制方式。DAC的数据存取权限由用户控制,系统无法控制;MAC安全等级由系统控制,用户无法直接控制。首先为所控制的主体和客体指派安全标记,然后依据标记进行访问仲裁。
2.强制访问控制要素
- 数据标记
安全管理员为数据定义标记:等级(数据的敏感程度)+范围(用于数据分类)
标记是可以比较的,其比较结果的含义是代表了数据的敏感程度。如果赋予用户某些标记,然后再给数据赋予标记。这样将用户的标记和数据的标记进行比较,按照一定规则来决定用户是否可以对数据进行访问。
- 授予权限
安全员授予权限,以决定用户可以以何种形式访问那些数据。当表中的元组被标记标识后,只有用户被授予了访问该标记的权限后,可以读写该元组的数据。当元组有多个数据标记时,用户必须具有所有标记的权限才能访问该元组。
- 策略特权
策略下的特权允许用户饶开部分标记仲裁规则访问数据。安全员可以给用户授予策略下的特权,使用户可以不依靠会话标记对数据执行读写操作。
3.数据库强制访问控制的操作方式
(1)加载插件
修改kingbase.conf文件中 shared_preload_libraries 参数,增加sysmac参数,并在最后增加ysmac.enable_mac=on,重启数据库。
(2)SSO开启强制访问控制
使用SSO用户登录数据库,开启强制访问控制
alter system set sysmac.enable_mac=on;
select sys_reload_conf();
(3)system创建用户和表
CREATE USER U1 WITH SUPERUSER PASSWORD '12345678ab';
CREATE USER U2 WITH SUPERUSER PASSWORD '12345678ab';
CREATE TABLE TU_INFO(ID INT, NAME CHAR(10));
(3)sso创建策略、等级和范围
创建P1安全策略,策略列为P1_COLUMN,并隐藏该策略列。
创建P1安全策略下,范围名称为MANAGER,ID范围值为40的范围
创建P1安全策略下,等级名称为GENERAL,等级值为10的等级
(4)设置标记
创建标记ID为123的标记。等级为pricavl,范围为RD
创建标记ID为1234的标记,等级为general。
(5)为用户添加标记
只为U1添加标记,U2未添加标记
(6)使用U1对表进行插入
切换U1用户,对表进行数据插入,标签栏有123标记。
(7)使用U2对表进行查看
由于U2没有123标签,故无法查到数据
(8)给U2赋予标签
①标签等级低于U1数据标签等级,U2用户下仍未查到数据
②标签等级大于等于U1数据标签等级,可以查看到数据