本文为软考信息安全工程师个人学习笔记,依据官方考试大纲与公开技术规范整理,仅用于学习交流,不作为商业用途。
一、数据库安全概况
1.1 基本定义
数据库安全是指数据库的机密性、完整性、可用性能够得到保障。
四大组成部分:
| 组成部分 | 说明 |
|---|---|
| 数据库管理安全 | 数据库系统的管理层面安全 |
| 数据安全 | 数据本身的保密性、完整性 |
| 数据库应用安全 | 应用层访问数据库的安全 |
| 数据库运行安全 | 数据库系统运行环境安全 |
主流数据库:
| 类别 | 代表 |
|---|---|
| 国外数据库 | MS SQL、MySQL、Oracle、DB2 |
| 国产数据库 | 人大金仓、达梦等 |
CIA特性:数据库安全的核心是保障机密性(Confidentiality)、完整性(Integrity)和可用性(Availability),这是历年高频考点。
二、数据库安全威胁
| 威胁类型 | 说明 |
|---|---|
| 授权的误用(Misuses of Authority) | 合法用户越权获得不应获得的资源,窃取程序或存储介质,修改或破坏数据;授权用户将访问特权不适当地授予其他用户 |
| 逻辑推断和汇聚(Logical Inference and Aggregation) | 利用逻辑推理,把不太敏感的数据结合起来推断出敏感信息(如大数据分析) |
| 伪装(Masquerade) | 攻击者假冒用户身份获取数据库系统访问权限 |
| 旁路控制(Bypassing Controls) | 在数据库设置后门,绕过安全访问控制机制 |
| 隐蔽信道(Covert Channels) | 利用非正常通信途径传输数据以躲避安全机制控制,如共享内存、临时文件 |
| SQL注入攻击(SQL Injection) | 利用数据库应用程序输入未进行安全检查的漏洞,欺骗数据库服务器执行恶意SQL命令,常导致信息泄露甚至系统失控 |
| 数据库口令密码破解 | 利用口令字典或手动猜测密码;撞库攻击(收集已泄露的用户+口令生成字典表,批量登录其他网站) |
| 硬件及介质攻击 | 对数据库系统相关设备和存储介质的物理攻击 |
SQL注入:跨考试高频考点,利用未过滤的输入执行恶意SQL命令。
三、数据库安全隐患
- 数据库用户账号和密码隐患(默认密码或弱密码)
- 数据库系统扩展存储过程隐患(如缓存、索引等可能泄露高频访问数据)
- 数据库系统软件和应用程序漏洞
- 数据库系统权限分配隐患(未遵循最小特权原则)
- 数据库系统用户安全意识薄弱
- 网络通信内容是明文传递(应使用加密协议)
- 数据库系统安全机制不健全
四、数据库安全机制与实现技术
4.1 数据库安全机制及功能
| 安全机制 | 安全功能 |
|---|---|
| 标识与鉴别 | 用户属性定义、用户-主体绑定、鉴别失败处理、秘密验证、鉴别时机、多重鉴别机制设置 |
| 访问控制 | 会话建立控制、系统权限设置、数据资源访问权限设置 |
| 安全审计 | 审计数据产生、用户身份关联、安全审计查阅、限制审计查阅、可选审计查阅、选择审计事件 |
| 备份与恢复 | 备份和恢复策略设置、备份数据的导入和导出 |
| 数据加密 | 加密算法参数设置、密钥生成和管理、数据库加密和解密操作 |
| 资源限制 | 持久存储空间分配最高配额、临时存储空间分配最高配额、特定事务持续使用时间或未使用时间限制 |
| 安全加固 | 漏洞修补、弱口令限制 |
| 安全管理 | 安全角色配置、安全功能管理 |
4.2 数据库加密
加密方式分为两种类型:
| 类型 | 说明 |
|---|---|
| 传输加密 | 数据库网上传输的数据,通常利用SSL协议实现 |
| 存储加密 | 数据库存储的数据,通过数据库存储加密实现 |
存储加密按加密组件与DBMS关系分类:
| 方式 | 说明 |
|---|---|
| 库内加密 | 在DBMS内部实现支持加密的模块 |
| 库外加密 | 在DBMS范围之外,由专门的加密部件完成加密/解密操作 |
存储加密常用技术方法:
| 方法 | 说明 |
|---|---|
| 基于文件的数据库加密 | 将数据库文件作为整体,对整个数据库文件加密形成密文 |
| 基于记录的数据库加密(行) | 将数据库的每一个记录加密成密文并存放于数据库文件中 |
| 基于字段的数据库加密(列) | 加密数据库的字段,以不同记录的不同字段为基本加密单元(如只加密成绩列) |
考试重点:库内加密(DBMS内部实现)vs库外加密(独立加密部件);三级加密粒度(文件级/记录级/字段级)。
4.3 数据库防火墙
数据库防火墙根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计。
虚拟补丁功能:数据库系统不用升级、打补丁,即可完成对主要数据库漏洞的防控,避免业务中断。
部署位置:介于数据库服务器和应用服务器之间。
数据库防火墙七大安全作用:
| 作用 | 说明 |
|---|---|
| 屏蔽直接访问数据库的通道 | 部署在应用服务器和数据库之间,防止隐蔽通道攻击 |
| 增强认证 | 应用程序对数据库的访问必须经过数据库防火墙和数据库自身两层身份认证 |
| 攻击检测 | 实时检测SQL注入和缓冲区溢出攻击,报警或阻止,记录攻击时间、来源IP、用户名、攻击代码 |
| 防止漏洞利用 | 捕获和阻断数据库漏洞攻击行为,实现虚拟化补丁保护有漏洞的数据库系统 |
| 防止内部高危操作 | 限定更新和删除影响行、限定无Where的更新和删除操作、限定drop/truncate等高危操作 |
| 防止敏感数据泄露 | 限定数据查询和下载数量、限定敏感数据访问的用户、地点和时间 |
| 数据库安全审计 | 独立审计,记录用户名、程序名、IP地址、请求数据库、连接建立/断开时间、通信量、执行结果 |
4.4 数据库脱敏
利用数据脱敏技术将数据进行变换处理,在保持数据按需使用目标的同时避免敏感数据外泄。
脱敏原理:按照脱敏规则对敏感数据进行变换,去除标识数据,实现匿名化处理。
常见脱敏技术方法:
| 方法 | 说明 |
|---|---|
| 屏蔽 | 如信用卡号显示为"4346 XXXX XXXX 5379" |
| 变形 | 改变数据格式 |
| 替换 | 用虚构数据替换真实数据 |
| 随机 | 随机化处理 |
| 加密 | 加密敏感字段 |
4.5 漏洞扫描
数据库漏洞扫描模拟黑客使用的漏洞发现技术,对目标数据库安全性进行安全探测分析,收集漏洞详细信息,分析不安全配置,检查弱口令用户。
作用:跟踪监控数据库安全危险状态变化,建立数据库安全基线,防止安全危险恶化。
商业产品:NGSSQuirrel for Oracle(可检查几千个安全威胁、补丁状况、对象和权限、密码机制,支持字典和暴力破解模式)、xSecure-DBScan等。
五、Oracle数据库安全分析与防护
5.1 Oracle安全机制
| 安全机制 | 内容 |
|---|---|
| 用户认证 | 除Oracle数据库认证外,集成支持操作系统认证、网络认证、多级认证、SSL认证。采用"用户名+口令",具有口令加密、账户锁定、口令生命期和过期、口令复杂度验证。管理员认证支持强认证、操作系统认证、口令文件认证。网络认证支持第三方认证、PKI认证、远程认证 |
| 访问控制 | 内部集成网络访问控制和数据对象授权控制,提供细粒度访问控制,针对select/insert/update/delete等操作使用不同策略 |
| 保险库(DV) | 建立数据库保险库机制保护敏感数据,具有防止未授权变更、多因素可信授权、职责隔离、最小化特权功能。通过设置安全域和命令规则控制特权,可阻止drop table、alter system等危险操作 |
| 安全审计和数据库防火墙 | 可审计三种类型活动:登录尝试、数据库活动、对象存取。数据库防火墙提供SQL语法分析引擎,支持白名单、黑名单和基于例外名单的策略 |
| 高级安全功能 | 提供透明数据加密和数据屏蔽机制 |
5.2 Oracle安全最佳实践(12项)
- 增强Oracle数据库服务器的操作系统安全(最小化服务、最新补丁、关闭不必要端口)
- 最小化安装Oracle,删除不必要的组件
- 安装最新的安全补丁
- 删除或修改默认的用户名和密码
- 启用认证机制
- 设置好的口令密码策略
- 设置最小化权限
- 限制连接Oracle的IP地址(打补丁同时限制连接IP)
- 传输加密(Oracle采用TNS协议传输,建议使用SSL加密)
- 启用Oracle审计(记录所有用户失败访问和分析安全事件日志)
- 定期查看Oracle漏洞发布信息,及时修补漏洞
- 实施Oracle灾备计划(监测安全运行,定期备份,制定应急预案)
六、MS SQL Server数据库安全分析与防护
6.1 MS SQL安全机制
| 安全机制 | 内容 |
|---|---|
| 用户身份认证 | 支持Windows认证和混合认证两种方式,Windows认证是默认认证方式 |
| 访问控制 | 采用基于角色的访问控制机制,角色分为三种:固定服务器角色、固定数据库角色、应用角色 |
| 数据库加密 | 提供五种加密机制:Transact-SQL函数、非对称密钥、对称密钥、证书、透明数据加密(TDE)。MS SQL Server 2008提供透明数据库加密服务 |
| 备份恢复机制 | 支持静态备份和动态备份。四种备份方案:文件和文件组备份、事务日志备份、完全备份、差异备份。三种恢复模型:简单恢复、完全恢复、批量日志记录恢复 |
| 安全审计 | 记录用户访问和安全事件 |
MS SQL透明加密三级密钥体系:
Windows操作系统层 ↓ 数据保护接口(DPAPI) ↓ 服务主密钥(加密服务主密钥) ↓ 服务器实例主服务密钥 ↓ 数据库主密钥(创建证书) ↓ 数据库主密钥加密数据库密钥 ↓ 证书加密数据库密钥 ↓ 用户数据库(数据库加密密钥加密整个用户数据库)密钥层级:服务主密钥→数据库主密钥→数据库密钥(加密用户数据)。
6.2 MS SQL Server安全最佳实践(9项)
- 设置好的数据库密码安全策略
- 加强扩展存储过程管理,删除不必要的存储过程(系统存储过程易被利用提升权限)
- 网上数据加密传输(SQL Server使用Tabular Data Stream协议明文传输,建议使用SSL)
- 修改数据库默认的TCP/IP端口号(更改默认的1433端口)
- 对SQL数据库访问的网络连接进行IP限制(防火墙或Windows安全功能,只允许授权IP访问)
- 启用SQL Server日志审计,记录所有用户访问和分析安全事件日志
- 定期查看MS SQL Server漏洞发布信息,及时修补漏洞
- 保证MS SQL Server的操作系统安全
- MS SQL Server安全检测,制定安全容灾备份计划
七、MySQL数据库安全分析与防护
7.1 MySQL安全机制
| 安全机制 | 内容 |
|---|---|
| 用户身份认证 | 支持用户名/口令认证方式 |
| 访问授权 | 具有5个授权表:user、db、host、tables_priv和columns_priv。通过授权表提供灵活安全机制。具有grant和revoke命令创建/删除用户权限 |
| 安全审计 | 内置审计机制,记录MySQL运行状况 |
7.2 MySQL安全防护措施(10项)
- MySQL安装:建立单独启动的用户和组,安装最新软件包,选择合适静态参数编译
- 建立MySQL Chrooting运行环境,形成"沙箱"保护机制,增强抗渗透能力
- 关闭MySQL的远程连接,关闭默认监听端口3306
- 禁止MySQL导入本地文件(禁止"LOAD DATA LOCAL INFILE"命令)
- 修改MySQL的root用户ID和密码
- 删除MySQL的默认用户和db(删除test数据库,除root外去掉其他用户)
- 更改MySQL的root用户名,防止口令暴力破解
- 建立应用程序独立使用数据库和用户账号(只能访问应用程序用到的数据库)
- 安全监测:安全监控MySQL运行,及时修补漏洞
- 安全备份:定期备份MySQL数据库系统及数据
八、国产数据库安全分析与防护
8.1 标准依据
国家标准《信息安全技术 数据库管理系统安全技术要求》(GB/T 20273-2019),规定了数据库管理系统的五个安全等级及其所需的安全技术要求。
8.2 国产数据库安全风险
| 风险类型 | 说明 |
|---|---|
| 国产数据库安全漏洞 | 自身存在的安全漏洞 |
| 依赖第三方系统组件安全 | 如OpenSSL协议安全漏洞对网络传输数据的安全影响 |
| 系统安全配置不当 | 未启用安全功能、设置弱口令、开放过多服务端口、使用非安全远程登录工具等 |
| 支持平台安全 | 受制于操作系统而产生的安全问题(如操作系统安全问题导致数据库文件被窃取或破坏) |
8.3 国产数据库安全增强措施
- 国产数据库安全漏洞挖掘及扫描
- 国产数据库加密
- 选用经过认证的国产安全数据库
- 加强底层操作系统安全防护
本章小结
本章节系统梳理了数据库安全机制与主流数据库防护:
- 数据库安全定义:保障机密性、完整性、可用性(CIA),四大组成(管理安全/数据安全/应用安全/运行安全)
- 八大安全威胁:授权误用/逻辑推断汇聚/伪装/旁路控制/隐蔽信道/SQL注入/口令破解(含撞库)/硬件介质攻击
- 七大安全隐患:账号密码/扩展存储过程/软件漏洞/权限分配/安全意识/明文传输/机制不健全
- 八大安全机制:标识鉴别/访问控制/安全审计/备份恢复/数据加密/资源限制/安全加固/安全管理
- 数据库加密:传输加密(SSL)+存储加密(库内加密vs库外加密),三级加密粒度(文件级/记录级行/字段级列)
- 数据库防火墙:虚拟补丁(无需升级即可防护漏洞),七大作用(屏蔽通道/双重认证/攻击检测/防漏洞利用/防高危操作/防敏感泄露/独立审计)
- 数据脱敏:五种方法(屏蔽/变形/替换/随机/加密),如信用卡号"4346 XXXX XXXX 5379"
- 漏洞扫描:模拟黑客探测,商业产品NGSSQuirrel for Oracle(支持密码审计)
- Oracle安全:五种认证(数据库/OS/网络/多级/SSL)、保险库DV(防drop/alter)、三种审计类型、透明数据加密,12项最佳实践
- MS SQL安全:Windows/混合认证、三种角色(服务器/数据库/应用)、五种加密方式、三级密钥体系(服务主密钥→数据库主密钥→数据库密钥)、四种备份(文件组/事务日志/完全/差异)、三种恢复模型,9项最佳实践(改1433端口/SSL加密/IP限制)
- MySQL安全:五个授权表(user/db/host/tables_priv/columns_priv)、grant/revoke命令,10项防护(关3306/禁LOAD DATA/删test库/改root名)
- 国产数据库:GB/T 20273-2019标准五级,四大风险(自身漏洞/第三方依赖/配置不当/平台依赖),四项增强措施
上述内容中,数据库加密方式(库内vs库外/三级粒度)、数据库防火墙虚拟补丁和七大作用、SQL注入威胁、Oracle保险库功能、MS SQL三级密钥体系和默认1433端口、MySQL五个授权表和默认3306端口为高频考点,数据库安全机制和主流数据库防护配置可能出现在下午案例分析题中。
本文为软考信息安全工程师个人学习笔记,依据官方考试大纲与公开技术规范整理,仅用于学习交流,不作为商业用途。