5.3.?访问控制规则

5.3.1. 读访问控制
5.3.2. 写访问控制
5.3.3. 强访相关系统表
5.3.4. 强访相关函数
5.3.5. 强访相关查看

UXDB的强制访问控制在BLP模型的基础上作了一定的改进,采用“向下读,区间写”的原则,实现主客体的访问控制。

5.3.1.?读访问控制

读访问控制规则较为简单。UXDB首先获取客体标记,然后试图获得主体在同一策略上的最大读标记。下面两种情况下允许主体读客体数据:

  • 客体没有标记。

  • 客体有标记,主体在同一策略上有标记且满足客体标记用户最大读标记。

否则,禁止主体对客体数据的访问。

5.3.2.?写访问控制

写访问控制的规则中,UXDB首先获取客体标记,然后试图获得主体在同一策略上的最大写标记和最小写标记。下面两种情况下允许主体写客体数据:

  • 客体没有标记。

  • 客体有标记,主体在同一策略上有标记,且满足主体的最小写标记客体标记用户的最大写标记。

否则,禁止主体对客体数据的访问。

5.3.3.?强访相关系统表

UXDB安全数据库通过以下系统表来存储强访相关元数据:

  1. ux_mac_policy,ux_label_level,ux_label_scope,用于存储策略定义和内部编码。

  2. ux_user_label存储主体标记,主体标记可以有多个。

  3. 在ux_class的reloptions选项中mac_policy_id存储策略id,隐藏列plcol,plcol_level,plcol_scope存储行的标记。

  4. 在ux_attribute的attoptions选择中mac_policy_id,mac_label_level,mac_label_scope存储列标记。

5.3.4.?强访相关函数

  1. 创建策略:

    mac_create_policy('policyname','level_list','scope_list')

    policyname:策略名称。

    level_list:等级列表,从高到低。

    scope_list:范围列表,最大为32。

  2. 主体标记:

    mac_set_user_label('username','policyname','max_read','max_write','min_write','default_session','default_write')

    参数依次为:主体名(用户名)、策略名、最大读标记、最大写标记、最小写标记、默认会话标记、默认写标记。

    标记规则:

    max_read>=max_write>=default_write>=min_write
    max_read>=default_session

    注意

    主体标记可以有多个。

  3. 客体标记——行级:

    mac_apply_row_policy('schema_name','table_name','policyid')

    schema_name:需要标记的表所在的模式名。

    table_name:需要标记的表名。

    policyid:标记使用的策略名。

    注意

    一个客体只能有一个标记。

  4. 客体标记——列级:

    mac_set_column_label('schema_name','table_name','column_name','label')

    schema_name:需要标记的表所在的模式名。

    table_name:需要标记的表名。

    column_name:需要标记的列名。

    label使用的标记。

    注意

    一个客体只能有一个标记。

  5. 删除策略:

    mac_drop_policy('policyname')

    policyname:删除策略的名称。

  6. 删除表级标记:

    mac_drop_row_policy('schema_name','table_name')

    schema_name:带有标记的表所在模式名称。

    table_name:带有标记的表的表名。

  7. 删除列级标记:

    mac_drop_column_label('schema_name','table_name','column_name')

    schema_name:带有标记的表所在模式名称。

    table_name:带有标记的表的表名。

    column_name:带有标记的列名。

5.3.5.?强访相关查看

  1. 查看当前主体标记:

    select?useid,policyid?from?ux_user_label;
  2. 删除主体标记:

    select?mac_drop_user_label('主体名','策略名');
  3. 删除策略:

    select?mac_drop_policy('策略名');
  4. 查看当前策略:

    select?*?from?ux_mac_policy;
  5. 查看客体行标记:

    select?relname,reloptions?from?ux_class?where?reloptions?is?not?null;
  6. 删除行标记:

    select?mac_drop_row_policy('模式名','表名');
  7. 客体列标记:

    select?attname,attoptions?from?ux_attribute?where?attoptions?is?not?null;
  8. 删除列标记:

    select?mac_drop_column_label('模式名','表名','列名');
XML 地图 | Sitemap 地图