7.1.3 数据库安全

7.1.3 数据库安全

1.数据库安全定义

关于数据库安全,国内外有不同的定义。国外以Pfleeger C P在Security in Computing中对数据库安全的定义最具有代表性,被国外许多教材、论文和培训所广泛应用。该定义从以下方面对数据库安全进行了描述。

①物理数据库的完整性:数据库中的数据不被各种自然的或物理的问题,如电力问题或设备故障等而破坏。

②逻辑数据库的完整性:对数据库结构的保护,如对其中一个字段的修改不应该破坏其他字段。

③元素安全性:存储在数据库中的每个元素都是正确的。

④可审计性:可以追踪存取和修改数据库元素的用户。

⑤访问控制:确保只有授权的用户才能访问数据库,这样不同的用户被不同的访问方式所限制。

⑥身份验证:不管是审计追踪还是对某一数据库的访问,都要经过严格的身份验证。

⑦可用性:对授权的用户应该随时可进行应有的数据库访问。

本书采用我国《计算机信息系统安全保护等级划分准则》中的《中华人民共和国公共安全行业标准(GA/T 389—2002)》中的“计算机信息系统安全等级保护数据库管理系统技术要求”对数据库安全的定义:数据库安全就是保证数据库信息的保密性、完整性、一致性和可用性。保密性指保护数据库中的数据不被泄露和未授权地获取;完整性指保护数据库中的数据不被破坏和删除;一致性指确保数据库中的数据满足实体完整性、参照完整性和用户定义完整性要求;可用性指确保数据库中的数据不因人为和自然的原因对授权用户不可用。当数据库被使用时,应确保合法用户得到的数据的正确性,同时要保护数据免受威胁,确保数据的完整性。数据库不仅储存数据,还要为使用者提供信息。应该确保合法用户在一定规则的控制和约束下使用数据库,同时应当防止入侵者或非授权者非法访问数据库。数据库的安全主要应由数据库管理系统(DBMS,DataBase Management System)来维护,但是操作系统、网络和应用程序与数据库安全的关系也是十分紧密的,因为用户要通过它们来访问数据库,而且和数据库安全密切相关的用户认证等其他技术也是通过它们来实现的。

2.数据库安全策略

数据库安全通常通过存取管理、安全管理和数据库加密来实现。存取管理就是一套防止未授权用户使用和访问数据库的方法、机制和过程,通过正在运行的程序来控制数据的存取和防止非授权用户对共享数据库的访问。安全管理指采取何种安全管理机制来实现数据库管理权限分配,一般分为集中控制和分散控制两种方式。数据库加密主要包括:库内加密(以一条记录或记录的一个属性值作为文件进行加密)、库外加密(以整个数据库,包括数据库结构和内容作为文件进行加密)、硬件加密等3大方面。虽然数据库安全模型和安全体系结构以及数据库安全机制对于数据库安全来说也非常重要,但是对它们的研究和应用进展缓慢。迄今为止,在数据库安全模型上已做了很多工作,但仍然有许多难题,安全体系结构方面的研究工作还刚刚开始,安全机制上仍保持着传统的机制。20世纪90年代以来,数据库安全的主要工作围绕着关系数据库系统的存取管理技术的研究展开。数据库安全策略主要包括以下5方面。

(1)身份鉴别

身份鉴别是为了确认用户的真实身份与其声称的身份是否相符。使用身份鉴别策略可以很好地确保合法用户获得数据库的使用权限。常用的身份鉴别手段有:静态口令鉴别、动态口令鉴别、生物特征鉴别等。静态口令鉴别需要用户输入口令,与事先存储在数据库中静态不变的口令进行比较。动态口令正如其名,其口令是动态变化的,即采用一次一密的方法,常用的方式有短信密码与动态令牌。生物特征鉴别主要是利用图像处理等技术对生物个体唯一、稳定的生物特征如指纹、虹膜、声纹进行采样,然后与数据库中预先存入的生物特征进行匹配鉴定。

(2)存取控制

存取控制是指对系统内的所有数据规定每个用户对它的操作权限,使用存储控制策略可以让数据只能在规定范围内使用,从而达到保护的目的。常用的存取控制策略有自主存取控制、强制存取控制、角色存取控制等。自主存取控制(DAC):对系统内的所有数据规定每个用户对它的操作权限定义并检查用户权限,使数据在合法范围内使用自主存取控制、强制存取控制、角色存取控制。强制存取控制(MAC):用户不能更改自己或他人的操作权限,一切操作权限由系统管理员统一分配。角色存取控制(RBAC):数据权限相同的用户被定义为同一角色,系统管理员确定用户角色并分配权限。

(3)真实性检测

真实性检测是指对系统内的所有数据进行数据准确性、可靠性和防篡改性等检查。真实性检测主要是为了防止数据库中存在不正确的数据,防止恶意破坏和非法存取完整性约束、断言、触发器、杂凑运算等。

(4)数据加密

数据加密是指通过算法将明文变换为不可直接识别的密文,合法用户才可解密。数据加密能够有效解决数据明文存储引起的泄密风险,防止入侵和越权访问行为,主要算法有私钥加密算法和公钥加密算法。常用的加密形式有以下几种:数据库级加密,对数据库中的所有表格、视图、索引等都要执行数据加密,易实现,密钥管理简单,但查询效率较低,适合移动存储设备的机密数据加密;表级加密,对数据库中的每一个表格使用专门的函数来进行加密,效率略低,灵活度提高;记录级加密,对数据库中每一条记录使用专门的函数来进行加密,比表级加密有更高的灵活性,查询性能更好,但对单个字段查询需要对整条数据进行查询;数据项级加密,对数据库中记录的每个字段采用不同密钥进行加密,安全强度高,抗攻击,但在密钥的管理使用、定期更新方面较复杂。

(5)审计检测

审计检测是指启用专用的审计日志(Audit Log)来记录用户对数据库的操作。通过审计日志可以追踪操作信息,找出非法存取数据的恶意用户。

3.数据库安全挑战

据Verizon 2015年的数据安全报告分析,在针对数据库的攻击中,有60%的攻击可以在数分钟内实现对数据库信息的窃取(如图7.2所示)。因此加强数据库安全是非常急迫并且十分有必要的。

图7.2 Verizon 2015年数据安全报告