【关键词】GBase 8s 数据库安全
在《GB/T 20273-2019 信息安全技术 数据库管理系统安全技术要求》国家标准中,“评估对象(TOE)是指数据库管理系统(DBMS)所包含的管理软件及其管理的数据库对象”。
GBase 8s安全功能旨在确保只有获得授权的用户才可以访问评估对象及其资源;根据用户的身份来控制其对资源的访问,允许获得授权的用户指定哪些用户可以访问哪些资源;根据所访问信息的敏感程度和类别以及尝试访问该信息的主体许可来控制对资源的访问;记录评估对象用户与安全性有关的动作,向获得授权的管理员呈现这些信息;当再次利用受保护的资源时,确保不释放受保护数据库对象中已包含的任何信息;为负责评估对象安全管理的获得授权的管理员提供全部必要的操作命令。
GBase 8s在下列方面提供安全性支持:
- 安全审计
- 用户数据保护
- 标识和鉴别
- 安全管理
- 评估对象安全功能的保护
一、安全审计
1、产生审计记录
GBase 8s提供通过获得授权的管理员来启用或禁用的审计机制。当启用审计时,GBase 8s根据获得授权的管理员配置的审计掩码来产生与安全性相关的事件记录。GBase 8s支持两类审计掩码:全局审计掩码用于定义始终要审计的审计事件、从不审计的审计事件以及没有指定审计掩码的用户缺省使用的那些审计事件;用户审计掩码为特定用户定义要审计的审计事件,取代缺省的全局审计掩码。GBase 8s提供onaudit操作命令来管理审计配置。
GBase 8s支持的审计事件类型主要包括:
- 打开、关闭、创建和删除数据库;
- 授予和撤销数据库访问权限;
- 修改、创建和删除索引或数据表;
- 创建和删除视图;
- 插入、更新、选择和删除数据行;
- 创建、删除、执行例程;
- 创建和删除同义词或类型;
- 使用特权SQL 语句;
- 更改用户身份;
- 设置日志记录模式;
- 请求客户端连接。
2、查阅审计记录
当启用审计时,GBase 8s根据配置在文件中记录审计事件。GBase 8s提供onshowaudit操作命令将审计记录提取至一个文件内。提取后,即可使用操作系统工具(例如,grep)来查阅该文件。GBase 8s还提供dbload 操作命令将该文件加载至GBase 8s数据库内。加载后,管理员可以使用SQL语句对审计记录进行搜索和排序。GBase 8s不提供任何在评估对象之中修改审计记录的能力。
GBase 8s审计记录包含以下信息:
- 时间戳——审计事件的日期和时刻
- 用户名——承担责任的用户身份
- 事件助记码——特定的审计事件名称
- 数据库名称——适用的数据库名称
- 数据表标识符——适用的数据表的标识
- 客体名称——适用的客体的标识
- 成功抑或失败——操作成功的标志
3、防止审计数据丢失
当不能完成审计数据写时,GBase 8s认定审计数据已填满。通过配置GBase 8s,在审计数据填满时,获得授权的管理员可以停止审计或停止当前SQL语句或其他可审计事件。
二、用户数据保护
1、自主访问控制
GBase 8s提供自主访问控制(DAC)机制。针对不同的用户,GBase 8s授予或撤销其对GBase 8s数据库对象的访问权限,并使用户能够控制其他用户对这些对象的访问。只有用户已获得授权或在缺省情况下根据自主访问控制策略可以访问数据库中的信息,方可访问这些信息,否则,任何用户都无法访问。
GBase 8s自主访问控制机制保护数据库中存储的信息,信息粒度可达到给定数据表中的数据列。GBase 8s数据库的系统目录包括存储访问控制列表(ACL)的数据表。访问控制列表标识用户及其对数据库中特定对象的访问权限。GBase 8s系统为数据库、数据表、视图、同义词、类型和例程定义访问权限。可以使用适当的SQL语句来授予和撤销这些访问权限。通过用户名将访问权限授予单个用户,或者通过使用特殊名称PUBLIC将访问权限授予所有用户。
GBase 8s支持角色,可以与允许执行特权SQL 语句的用户相关联。
2、强制访问控制
获得授权的管理员可以定义基于标签的访问控制(LBAC)安全标签,获得授权的用户可以将LBAC 安全标签分配给数据表。一旦将LBAC 安全标签分配给数据表,如果该数据表包含一个安全标签数据列,则该数据表受保护的粒度为数据行;根据数据表定义,如果该数据表具有由安全标签保护的一个数据列,则该数据表受保护的粒度为数据列。此后,当用户尝试创建、修改或以其他方式访问该数据表中的数据时,除了受自主访问控制规则限制之外,还会根据与其会话相关联的LBAC安全标签、与该数据表相关联的LBAC安全标签以及强制访问控制规则来限制用户对数据表中数据的访问。
除了上述规则之外,GBase 8s还可以将特定LBAC豁免分配给用户,以便绕过上述的一个或多个规则。
3、保护残余信息
当创建或扩展数据库对象时,GBase 8s将添加相应资源,但直到使用时才能读取。当使用新添加的资源时,GBase 8s初始化适用的资源并管理其内容,以确保只读取自行写入的那些内容。
三、标识和鉴别
1、自主访问控制的标识和鉴别
宿主操作系统通过建立与GBase 8s的会话来执行GBase 8s功能。宿主操作系统负责识别和鉴别用户,并提供生成的用户名。
当初始创建会话时,GBase 8s将用户名和相关的操作系统组与会话相关联,标识用户身份和用户角色,并允许在访问控制列表中查找权限,以确定其对特定数据库对象的自主访问控制权限。
2、强制访问控制的标识和鉴别
当初始创建会话时,GBase 8s将用户名与会话相关联,标识用户身份,确定该用户会话的LBAC安全标签和LBAC豁免,以确定其对特定数据库对象的强制访问控制权限。
四、安全管理
1、安全管理角色
GBase 8s支持下列安全管理角色,提供这些角色所必需的操作命令:
- 数据库系统安全员(DBSSO)负责管理GBase 8s的安全属性,例如,配置审计。
- 数据库安全管理员(DBSECADM)负责管理LBAC安全标签和LBAC豁免的定义、修改和分配。
- 审计分析员(AAO)负责查阅和分析审计记录。
2、初始化安全属性
当创建新对象时,在缺省情况下会建立初始的访问权限。
- 如果该对象是数据库,则将数据库管理员(DBA)权限授予创建它的那个用户,即,该用户成为该数据库的数据库管理员。
- 如果该对象是数据表,则创建数据表的用户成为所有者,并获得对该数据表的所有数据表权限。
- 如果该对象是视图、同义词、约束或索引,则创建该对象的用户成为所有者,但不会获得特定的特权,因为尚未定义任何权限。
- 在缺省情况下,GBase 8s对象没有LBAC安全标签。必须由用户明确地定义LBAC安全标签。
除创建者之外,没有用户能初始地获得对该对象的任何权限,但数据库管理员(DBA)是例外。数据库管理员具有对相关联的数据库中所创建数据表的隐含权限。
3、管理安全属性
当用户将对给定对象的权限授予用户或从用户撤消时,会更改用户对该对象的访问权限。
- 除非用户拥有数据库的数据库管理员(DBA)权限,否则,该用户不能将数据库权限授予另一用户,或从另一用户撤销。
- 非数据表所有者的用户不会拥有数据表权限,除非另一用户之前授予了该权限。当撤销一用户的权限,而该用户已将该权限授予了其他用户时,会导致级联撤销,即,当撤销用户的权限时,也撤销由该用户授予了的所有用户的该权限。用户不能撤销自己的权限。
- 当撤销对数据表或视图的权限时,自动地删除基于该数据表或视图的所有其他视图。
五、评估对象安全功能的保护
1、不可旁路性
GBase 8s运行于由宿主操作系统提供的一组进程之内。GBase 8s不支持与非评估对象实体共享进程。
GBase 8s提供的接口仅在通过必要安全检查之后,才提供适当的功能或访问权限。GBase 8s接口不向未经授权的用户提供任何可能损坏或不恰当地访问评估对象的功能。
2、可靠的时间戳
GBase 8s以正确且一致的方式从其宿主操作系统收集当前时间信息。一旦收集到了这些信息,GBase 8s确保不损坏时间戳信息,确保信息始终可靠。
总之,第四级是《GB/T 20273-2019 信息安全技术 数据库管理系统安全技术要求》国家标准的最高等级。权威检测再次证明,在保护用户数据资产方面,GBase 8s是一款高安全性的通用关系型数据库管理系统。