数据库安全审计
行业要求:
审计内容是否至少包括:用户的添加和删除、审计功能的启动和关闭、审计策略的调整、权限变更、系统资源的异常使用、重要的系统操作(如用户登录、退出)等。
数据库开启情况:
需开启相关内容的数据库审计功能,方能满足需求。
审计内容 | SQL Server | Oracle | |
1 | 用户的添加和删除 | 可满足 | 可满足 |
2 | 审计功能的启动和关闭 | 可满足 | 部分满足(关闭可审计) |
3 | 审计策略的调整 | 可满足 | 可满足 |
4 | 权限变更 | 可部分满足 (满足Login级别的权限变更,如果要细化到表级别,需要针对每个数据库都创建审计,暂时不开启细粒度的审计) | 可满足 |
5 | 系统资源的异常使用 | (不理解定义,无从开启) | (不理解定义,无从开启) |
6 | 重要的系统操作(如用户登录、退出)等 | 可满足 | 可满足 |
- SQL Server
SQL Server只开启了登录成功和失败的审计,并写入应用程序日志。
以下审计行为集合基本能满足行业审计指南的要求,鉴于目前没有旁路审计系统,该审计功能的开启会占用系统资源,消耗部分性能。可以考虑先上生产观察,如果有问题及时停止。可以满足创建的审计写入应用程序日志,并从ELK查询到。
SQL Server从2008开始引入了SQL Server审核(Audit),用于满足细粒度的审计需求。可以针对特定的行为、主体和对象,细化到单个表级别。从用户登录、登出事件,到表的创建、插入和删除等。可选择感兴趣的待审计行为集合。SQL Server审核(Audit)基于扩展事件。当事件触发时,近乎实时的分发给扩展事件引擎,由它通知调度器线程池,负责将用户创建的事件会话从内存缓存写入到文件等目标。默认,审计事件异步写入审计目标,性能影响很小。
审核操作类型 | 描述 | |
1 | AUDIT_CHNAGE_GROUP | 创建、修改或删除任何审核时,均将引发此事件。 创建、修改或删除任何审核规范时,均将引发此事件。 任何针对某审核的更改均将在该审核中审核。 |
2 | FAILED_LOGIN_GROUP | 指示主体尝试登录到 SQL Server,但是失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 |
3 | SUCCESSFUL_LOGIN_GROUP | 指示主体已成功登录到 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 |
4 | LOGOUT_GROUP | 指示主体已注销 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 |
5 | SERVER_PRINCIPAL_CHANGE_GROUP | 创建、更改或删除服务器主体时将引发此事件。 主体发出 sp_defaultdb 或 sp_defaultlanguage 存储过程或 ALTER LOGIN 语句时,将引发此事件。 此事件对 sp_addlogin 和 sp_droplogin 存储过程引发。 此事件由 sp_grantlogin、 sp_revokelogin 或 sp_denylogin 存储过程引发。 |
6 | SERVER_PERMISSION_CHANGE_GROUP | 为获取服务器范围内的权限(例如,创建登录名)而发出 GRANT、REVOKE 或 DENY 语句时,将引发此事件。 |
7 | LOGIN_CHANGE_PASSWORD_GROUP | 通过 ALTER LOGIN 语句或 sp_password 存储过程更改登录密码时,将引发此事件。 |
- Oracle
Oracle提供内部审计功能,可提供标准的数据库活动审计功能,通过参数audit_syslog_level可将审计条目写入到预先配置好的syslog中,进而由ELK抓取,基本可满足行业协会的要求,但部分功能有缺失,具体如下表:
审计策略 | 能否审计 | 操作语句 |
用户的添加和删除 | 能 | audit create user;audit drop user 或audit user(所有对user的操作,包含create,drop,alter |
审计功能的启动和 关闭 | 部分可以 | 审计功能的开启和关闭通过alter system语句的审计来实现:audit alter system; 在审计功能开启的情况下可以审计对审计功能的关闭, |
审计策略的调整 | 部分可以 | 审计策略调整通过语句system audit或权限audit system来审计,当system audit被审计时,所有对审计策略的修改均可被审计,当上述语句或权限没有被审计则无法审计策略调整,包括audit audit system本身。 |
权限变更 | 可以 | 权限变更通过对语句system grant和grant any object privilege审计 |
对性能的影响:oracle审计发生在语句执行阶段,根据oracle的白皮书《Oracle Database Auditing: Performance Guidelines》在一个tcp-c相当的测试中,测试结果如下
可见审计对性能影响很小,针对具体的系统需要测试审计对系统性能的影响。