第二十章 数据库安全机制与实现技术
20.1 数据库安全机制与实现技术
20.1.1 数据库安全概述
数据库安全是指数据库的机密性、完整性、可用性能够得到保障,主要涉及数据库管理安全、数据安全、数据库应用安全以及数据库运行安全。
国外数据库系统:MS SQL、MySQL、Oracle、DB2等
国产数据库系统:有人大金仓、达梦等。
20.1.2 数据库安全威胁

20.1.3 数据库安全隐患
1.数据库用户账号和密码隐患。
2.数据库系统扩展存储过程隐患。[缓存/索引等]
3.数据库系统软件和应用程序漏洞。
4.数据库系统权限分配隐患。
5.数据库系统用户安全意识薄弱。
6.网络通信内容是明文传递。
7.数据库系统安全机制不健全。
20.1.4 数据库安全机制与实现技术

20.1.5 数据库加密
数据库加密方式主要分为两种类型:
①数据库网上传输的数据,通常利用SSL协议来实现
②数据库存储的数据,通过数据库存储加密来实现
按照加密组件与数据库管理系统的关系,数据库存储加密可以分成两种加密方式:
库内加密:指在DBMS内部实现支持加密的模块。
库外加密:库外加密指在DBMS范围之外,由专门的加密部件完成加密/解密操作。

数据库存储加密的常用技术方法有基于文件的数据库加密技术、基于记录的数据库加密技术(行)、基于字段的数据库加密技术(列)。其中,基于文件的数据库加密技术将数据库文件作为整体,对整个数据库文件进行加密,形成密文来保证数据的机密性。基于记录的数据库加密技术将数据库的每一个记录加密成密文并存放于数据库文件中。基于字段的数据库加密技术加密数据库的字段,以不同记录的不同字段为基本加密单元进行加密。
20.1.6 数据库防火墙
数据库防火墙:根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。提供虚拟补丁包功能:数据库系统不用升级、打补丁,即可完成对主要数据库漏洞的防控。

数据库防火墙的安全作用主要如下:
(1)屏蔽直接访问数据库的通道。数据库防火墙部署介于数据库服务器和应用服务器之间,屏蔽直接访问的通道,防止隐蔽通道对数据库的攻击。
(2)增强认证。应用程序对数据库的访问,必须经过数据库防火墙和数据库自身两层身份认证。
(3)攻击检测。可实时检测用户对数据库进行的SQL注入和缓冲区溢出攻击,并报警或者阻止攻击行为,记录攻击操作发生的时间,来源IP、登录数据库的用户名、攻击代码等详细信息。
(4)防止漏洞利用。捕获和阻断数据库漏洞攻击行为,如利用SQL注入特征库可以捕获和阻断数据库SQL注入行为。实现虚拟化补丁,保护有漏洞的数据库系统。
(5)防止内部高危操作。可以限定更新和删除影响行、限定无 Where的更新和删除操作、限定 drop、裁剪等高危操作避免大规模损失。
(6)防止敏感数据泄露。可以限定数据查询和下载数量、限定敏感数据访问的用户、地点和时间。
(7)数据库安全审计。对数据库服务器访问情况进行独立审计,审计信息可以包括用户名、程序名、IP地址、请求的数据库、连接建立的时间、连接断开的时间、通信量大小、执行结果等信息。
20.1.7 数据库脱敏
数据库脱敏:利用数据脱敏技术将数据进行变换处理,在保持数据按需使用目标的同时,又能避免敏感数据外泄。数据脱敏指按照脱敏规则对敏感数据进行变换,去除标识数据,数据实现匿名化处理,从而实现敏感数据的保护。常见的数据脱敏技术方法有屏蔽、变形、替换随机、加密,使得敏感数据不泄露给非授权用户或系统。
20.1.8 漏洞扫描
数据库漏洞扫描:模拟黑客使用的漏洞发现技术,对目标数据库的安全性尝试进行安全探测分析,收集数据库漏洞的详细信息,分析数据库系统的不安全配置,检查有弱口令的数据库用户。通过数据库漏洞扫描,跟踪监控数据库安全危险状态变化,建立数据库安全基线,防止数据库安全危险恶化。
数据库漏洞扫描的商业产品有NGSSQuirrel for Oracle, xSecure-DBScan等。
NGSSQuirrel for Oracle可以检查几千个可能存在的安全威胁、补丁状况、对象和权限信息登录和密码机制、存储过程以及启动过程。NGSSQuirrel提供强大的密码审计功能,包括字典和暴力破解模式。
20.2 主流数据库安全分析与防护
20.2.1 Oracle数据库安全分析与防护

20.2.2 Oracle安全最佳实践
(1)增强Oracle数据库服务器的操作系统安全。最小化系统服务,安装最新补丁,关闭不需要的网络通信端口。
(2)最小化安装Oracle,删除不必要的组件。
(3)安装最新的安全补丁。
(4)删除或修改默认的用户名和密码。
(5)启用认证机制。
(6)设置好的口令密码策略。
(7)设置最小化权限。
(8)限制连接Oracle的IP地址。在打补丁的同时限制连接的IP,避免攻击者的IP访问到数据库。
(9)传输加密。Oracle采用的是TNS协议传输数据,在传输过程中不能保证其中的数据不被窃听乃至修改,因此最好对传输进行加密。例如,采用SSL加密机制。
(10)启用Oracle审计。记录所有的用户失败访问和分析安全事件日志。
(11)定期查看Oracle漏洞发布信息,及时修补漏洞。
(12)实施Oracle灾备计划。监测Oracle的安全运行,定期进行备份。针对可能安全事件,制定安全应急预案。
20.2.3 MS SQL数据库安全分析与防护
MS SQL安全机制主要包括:
(1)用户身份认证。支持Windows认证和混合认证两种方式。Windows认证是默认认证方式。
(2)访问控制。采用基于角色的访问控制机制。SQL Server的角色分为三种类型:即固定服务器角色、固定数据库角色和应用角色。
(3)数据库加密。SQL保密Server提供Transact-SQL函数、非对称密钥、对称密钥、证书、透明数据加密机制。MS SQL Server 2008提供透明数据库加密服务.透明加密使用不同密钥对不同敏感数据进行加密处理,其中密钥类型有服务主密钥、数据库主密钥、数据库密钥。
·(4)备份恢复机制。支持静态备份和动态备份。有四种备份方案:文件和文件组备份、事务日志备份、完全备份、差异备份。恢复机制有三种模型:简单恢复、完全恢复和批量日志记录恢复。SQL Server系统可运用Transact-SQL语句或企业管理器实现数据的恢复或备份操作。
(5)安全审计。


20.2.4 MS SQL Server安全最佳实践
1.设置好的数据库密码安全策略。
2.加强扩展存储过程管理,删除不必要的存储过程。SQL Server的系统存储过程容易被利用来提升权限或进行破坏。为保护SQL Server的安全,删除不必要的存储过程。
3.网上数据加密传输。SQL Server使用的Tabular Data Stream协议用明文传输数据,容易导致数据库敏感数据网上泄露,建议使用SSL协议。
4.修改数据库默认的TCP/IP端口号。更改SQL Server原默认的1433端口。
5.对SQL数据库访问的网络连接进行IP限制。通过防火墙或Windows操作系统的安全功能对SOL数据库IP连接进行限制,只保证授权的IP能够访问,降低数据库的网络安全威胁来源。
6.启用SQL Server日志审计,记录所有的用户访问和分析安全事件日志。
7.定期查看MS SQL Server漏洞发布信息,及时修补漏洞。
8.保证MS SQL Server的操作系统安全。
9.MS SQL Server安全检测,制定安全容灾备份计划。
20.2.5 MySQL数据库安全分析与防护
MySQL安全分析:MySQL提供的安全机制主要包括如下内容:
·用户身份认证。MySQL支持用户名/口令认证方式。
·访问授权。MySQL具有5个授权表:user、db、host、tables priv和col umns-priv.通过授权表, MySQL提供非常灵活的安全机制。MySQL具有grant和revoke命令,可以用来创建和删除用户权限,便于分配用户权限。MySQL管理员可以用grant和revoke来创建用户、授权和撤权、删除用户。
·安全审计。MySQL内置了审计机制,可以记录MySQL的运行状况。
20.2.6 MySQL安全最佳实践
1.MySQL安装。建立单独启动的用户和组。安装最新的软件包,选择合适的静态参数编译数据库。
2.建立MySQL Chrooting运行环境。形成“沙箱”保护机制,增强系统抗渗透能力。
3.关闭MySQL的远程连接。关闭MySQL的默认监听端口3306,避免增加MySQL的远程攻击风险。
4.禁止MySQL导入本地文件。禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。
5.修改MySQL的root用户ID和密码。
6.删除MySQL的默认用户和db。删除MySQL的默认数据库test。除了root用户外,其他的用户都去掉。
7.更改MySQL的root用户名,防止口令暴力破解。
8.建立应用程序独立使用数据库和用户账号。要求这些账号只能访问应用程序用到的数据库。
9.安全监测。安全监控MySQL数据库运行,及时修补MySQL数据库漏洞。
10.安全备份,定期备份MySQL数据库系统及数据。
20.2.7 国产数据库安全分析与防护
国产数据库是指由国家自主研发力量研制的数据库系统,具有较强的可控性和安全性。围绕数据库安全,我国制定了国家标准《信息安全技术数据库管理系统安全技术要求》(GB/T20273-2019),该标准规定了数据库管理系统的五个安全等级及其所需要的安全技术要求。
国产数据库安全分析:
1.国产数据库安全漏洞。
2.国产数据库依赖第三方系统组件的安全。例如OpenSSL协议安全漏洞,对国产数据库网络传输数据有安全影响。
3.国产数据库系统安全配置的安全。对国产数据库系统的安全敏感配置不当,构成系统安全威胁。常见的安全配置不当包括未启用国产数据库安全功能、设置数据库弱口令、开放过多的服务端口、使用非安全远程登录工具等。
4.国产数据库支持平台的安全。国产数据库受制于操作系统而产生的安全问题。例如,操作系统的安全问题导致数据库文件被窃取或破坏,甚至失去控制。
国产数据库安全增强措施:
1.国产数据库安全漏洞挖掘及扫描
2.国产数据库加密
3.国产安全数据库