文档下载建议反馈入口

  • 强制访问控制

访问控制

访问控制是数据库安全管理的重要组成部分,旨在通过限制用户对数据库资源的访问权限,禁止非法用户或进程访问数据库,确保只有被授权的用户才能访问数据库资源并对表、视图、列等特定数据对象执行合法的操作。访问控制也可以记录用户操作,便于后续追查。 基于实现的基本理念不同,访问控制可以分为以下两种:

  • 自主访问控制(Discretionary Access Control,DAC)
  • 强制访问控制(Mandatory Access Control,MAC)

  • 主体(Subject):指主动对其它实体施加动作的实体,例如用户、角色。
  • 客体(Object):指被动接受其他实体访问的实体,例如数据库、表和列。
  • 控制策略(Policy):指主体对客体的操作行为和约束条件。

默认情况下,KaiwuDB 未开启自主访问控制和强制访问控制。如需开启,用户可以使用 SQL 语句设置以下参数。有关详细信息,参见集群参数配置

SET CLUSTER SETTING security.enhanced.items = 'DAC_COLUMN', 'MAC';

强制访问控制

::: 说明 目前,强制访问控制只适用于 KaiwuDB 关系库和关系表。 :::

强制访问控制,是为了弥补 DAC 权限控制过于分散的问题而诞生的。通过基于标记的访问控制,使用户只能访问与自己安全级别相符的数据对象。标记包括密级和范围。其中,密级是必选项,范围是可选项。一个标记只能设置一个密级,但是可以设置 0 个或多个范围。密级和范围之间使用冒号(:)隔开。多个范围之间之间使用逗号(,)隔开。

当需要加强数据库系统的访问控制力度和粒度的时候,管理员依据业务需要,创建合适的标记组件和标记并将标记应用于主体和客体,从而可以根据主体和客体标记的密级和范围来实现强制访问控制。

强制访问控制策略

KaiwuDB 支持以下强制访问策略:

  • 读访问控制(下读):主体能够对客体进行读访问,需要同时满足以下条件:
    • 用户标记密级大于等于表标记密级和列标记密级。
    • 客体范围是主体范围的子集。
    • 进行行筛选时,主体标记密级需要大于等于行数据标记密级,并且行数据标记范围是主体标记范围的子集。否则系统会筛选过滤掉目标行。
    • 进行列筛选时,主体标记密级需要大于等于列标记密级,并且列范围是主体范围的子集。否则,该列设置为列数据类型的零值。
  • 写访问控制(上写):主体能够对客体进行写访问,需要同时满足以下条件:
    • 主体标记密级小于等于客体标记密级。
    • 主体标记密级小于等于行数据标记密级。
    • 行数据标记范围是主体范围的子集。
    • 主体范围是客体范围的子集。