0 引言
随着信息技术的高速发展,各类计算机应用系统活跃在各个行业的不同领域。尽管各类系统实现的功能各不相同,但无论是部署于大型企业和商业组织的企业级应用,还是开发者出于兴趣编写的个人应用,数据库系统是所有应用系统数据存储和管理的核心,存储着整个应用系统中最重要的数据。然而,数据库系统往往面临许多的安全威胁,不仅外部攻击者会攻击应用系统所在服务器,一些拥有特权的内部人员也有可能从内部对应用系统进行破坏,采用实时审计技术来对数据库用户操作进行快速准确的权限审计,能够有效防范内部管理人员的越权操作。
目前,在数据库系统领域,现有的成熟商用数据库系统包括Oracle、Microsoft SQL Server、DB2等,它们都有各自的高效安全的审计系统,但这类审计方案往往应用于国外厂商的数据库管理系统中。而在国内,在很多高机密级别的应用场景中,出于对高安全性要求的考虑,无法直接使用国外厂商提供的技术解决方案,因此在国产自主研发的数据库系统中研究并部署数据库审计系统则成为亟待解决的问题。国网数据库管理软件SG-RDB是基于开源数据库PostgreSQL内核系统进行的二次开发和封装,SG-RDB具备关系型数据库的基本功能,通过数据库安全标记和三权分立实现了强制访问控制,并开发定制了一系列异构数据库接口和主从读写分离等高可用集群功能。但SG-RDB在数据库审计方面依旧存在PostgreSQL本身数据库审计功能不足的问题,基于国产数据库SG-RDB进行安全数据审计方案的研究与开发,成为亟待解决的课题。
审计功能主要是为了确认数据库系统中用户对数据库进行访问时所遵守的访问策略的合法性[1]。如果只是对用户操作结果进行审计,往往会有许多不足之处,一方面用户可能通过多次合法操作来实现不合法的目的,另一方面过于细粒度的审计往往也会带来效率的降低。目前存在很多种针对数据库的审计方式,如基于推理的审计[2]、基于网络侦听的审计[3-4]、面向数据操作的审计[5-9]、基于日志的审计等[10]。在基于网络侦听的审计方式中,审计系统会捕获、过滤、分析数据库系统中服务器和客户端通信的数据,根据分析结果按照策略分类进行审计操作。这类审计操作对于数据包的分析方式有较高要求,同时这类系统不利于推广,解析和审计策略必须针对不同的数据库进行调整[11-12],不易针对用户的详细操作进行审计。在面向数据操作的审计操作中,审计系统会通过触发器在发生数据操作时检查数据操作语句是否拥有操作数据的权限,或某些操作是否处理了特定数据,这类审计直接基于常规的数据操作[13],审计粒度较小,但是这类审计操作往往只能针对操作进行审计,如果多个用户通过共谋或者单用户通过多次查询往往会造成数据信息的泄露[14-15]。基于日志的审计只能在事后追溯时对数据库操作及处理结果进行审计,审计操作只能在事后对系统中的非法操作进行跟踪定位,难以满足高效准确的实时审计需求。
比较以上两类审计操作可以发现,传统的数据库审计系统虽然能够较好地实现数据库审计功能,但在安全性方面的牺牲较大,一方面为了实现较为高效的审计操作,某些审计系统不得不牺牲针对系统用户的身份审计等能够提高安全保障的审计操作;另一方面,为了实现细粒度的审计操作,审计系统在性能上不得不牺牲较多资源来针对数据操作触发审计操作。为了解决以上两方面问题,本文提出了一种基于访问标记的方法,可实现权限控制和系统开销的平衡,提供高效和安全的细粒度权限实时审计功能。
1 系统及安全模型
1.1 系统模型
本文提出了一种基于访问标记的安全数据库审计方法,设计了一种数据库实时审计模型,该模型设置了2种访问标记方法以及对应的权限审计流程。基于访问标记的安全数据库审计方法原理如
为简化说明,以
此后用户发送数据操作请求时,都将经过权限审计环节,根据用户所属角色的操作授权与用户实际操作请求进行权限审计,若用户拥有高安全级别数据的操作授权,则审计系统通过用户提交的访问凭证获得用户的操作授权,将用户实际的操作请求与访问凭证的授权进行比较,从而完成权限审计。
系统模型中的应用签名和用户密钥由系统与用户共同维护,用户可以拥有多个应用签名,并为每个签名申请所需权限,由审计管理员进行审批和授权,应用签名的权限矩阵通过线性数组进行存储。
1.2 主要问题
在本文审计方法设计中,需要考虑以下几个问题,这些问题是目前数据库审计方案必须权衡的。
1)用户权限过大。基于角色的权限标记方法会综合考虑所有用户的应用需求,同时用户与角色存在多对一的关联关系,因此可能造成用户获得过多非必要的操作权限。在本文的审计模型中,由于隔离了高安全级别的数据,同时结合审计日志的操作记录,因此普通授权的用户不会造成系统损失。
2)系统开销。基于访问凭证的权限标记方法由于进行了细粒度的权限设置,因此可能存在较大的系统开销。在本文的审计模型中,对高安全级别的数据进行了程度较高的细粒度权限划分,用户只能获得非常少的操作权限,并通过访问凭证申请接口提前进行权限检测,并存储用户获得的操作授权,在实际的权限审计过程中,只需根据访问凭证即可获得用户的操作授权,直接与用户实际操作进行检验即可完成权限审计,大大降低了权限审计带来的系统开销。
3)内部操作审计。审计系统管理员通过系统内部通道获得数据的操作权限,并且操作不受监控。在本文的审计模型中,只存在一个超级管理员账户,审计管理员也要获得用户角色的授权才能进行相关操作,因此内部管理员的操作也在审计范围内。
2 基于访问标记的安全数据库审计
2.1 整体描述
基于访问标记的安全数据库审计方法原理描述中涉及的变量定义见
针对上文讨论的内容,本文提出了基于访问标记的安全数据库审计方法,基于访问标记的安全数据库审计方法原理如
在初始化阶段,用户与数据库建立连接,系统为每个用户建立Session会话,并通过用户的角色标记,提取用户的授权矩阵,授权矩阵包括可操作类型矩阵
2.2 一种基于访问标记的安全数据库审计
本节对基于访问标记的安全数据库审计方法的原理进行详细介绍,依据访问标记的生命周期依次进行原理阐述,具体分为访问标记的初始化阶段、访问凭证的申请阶段、操作请求的解析阶段和权限审计阶段。
2.2.1 访问标记初始化阶段
1)角色标记初始化。根据用户实际需求、数据安全级别和系