人大金仓数据库KingbaseES 强制访问控制-4:读写权限判断

134 阅读4分钟

金仓数据库KingbaseES 强制访问控制4-:读写权限判断

关键字:

KingbaseES、强制访问控制、标记与策略、人大金仓、KingbaseES

标记与强制访问控制

KingbaseES支持标记和强制访问控制,保护用户数据,防止非法窃取。强制访问控制(Mandatory AccessControl——MAC)与自主访问相比,MAC提供更严格和灵活的控制方式。MAC首先为所控制的主体和客体指派安全标记,然后依据这些标记进行访问仲裁。并且,只有主体标记能支配客体标记时才允许主体访问。标签和强制访问的定义如下:

标记

标记是由等级、范围和组三种组件构成,三种组件中等级为必须选项,范围和组可选,标记是可以比较的,三种组件的比较规则各不相同,其比较结果的含义是代表了数据的敏感程度。如果赋予用户某些标记,然后给数据再赋予标记,这样,将用户的标记和数据的标记进行比较,按照一定规则来决定用户是否可以对数据进行访问。

强制访问控制

用于将系统中的信息分密级和类进行管理,以保证每个用户只能访问到那些被标明可以由他访问的信息的一种访问约束机制。通俗的来说,在强制访问控制下,用户(或其他主体)与元组(或其他客体)都被标记了固定的安全属性(如安全级、访问权限等),在每次访问发生时,系统检测安全属性以便确定一个用户是否有权访问该元组。

开启强制访问控制

  1. 加载插件:修改 kingbase.conf 文件中 shared_preload_libraries 参数,并重启数据库。
  2. 控制参数:

sysmac.enable_mac(boolean) :控制强制访问控制是否打开,由sso负责开关,默认为false,表示不启用强制访问控制。

sysmac.enable_col_mac(boolean) :控制列级强制访问控制是否打开,由sso负责开关,默认为false,表示不启用列级强制访问控制。

标记的比较

  1. 用户标记比较

用户标记包含最大读标记、最大写标记、默认写入标记、最小写标记、默认可读标记,这几个标记遵循最大读标记>=最大写标记,最大写标记>=默认写标记,默认写标记>=最小写标记,默认写标记>=默认可读标记。

其中标记中的等级为大小比较,level_id越大的等级权限越高。范围为集合之间的包含关系,若标记b中的范围构成的集合是标记A的子集,则标记b在范围上的权限小于标记a。关于组的比较为树形结构之间父子关系的比较,若标记b中的每一个组都能在标记a中找到自身或者任意祖先,则集合b在组上 的权限小于b,当同时反过来也成立,即标记a中的每一个组也都能在标记b中找到自身或者任意祖先,则认为两标记在组上的权限相等。

  1. 主客体标记比较

主体在对客体进行读写访问时,需要保证用户的读或写权限标记>=客体的标记。

主客体之间组与范围的比较与上文中用户标记比较相同。主客体之间组的比较为:若客体中的存在一个组,可以在主体的标记上找到其本身或者任意祖先,则认为主体对客体具有读或写权限。

读写访问权限判断

Kingbase依据“向下读,区间写”的规则,判断用户的读写权限。

在强制访问控制的使用过程中,系统会自动为用户计算出用户的当前可读标记(cur_read_label)。

当前可读标记用最小写标记和默认可读标记计算得出,等级取两者较小值,范围取两者交集,组取两者全部子组的交集。

依据主客体之间标记比较的规则,若主体的最大写标记 >= 客体的标记,且客体的标记 >= 主体的最小写标记,则认为主体对客体有写权限。若主体的当前可读标记 >= 客体的标记,则认为主体对客体具有读权限。

参考文档:

《KingbaseES产品手册-标记和强制访问控制》