金融行业数据库安全审计
数据库安全审计
行业要求:
审计内容是否至少包括:用户的添加和删除、审计功能的启动和关闭、审计策略的调整、权限变更、系统资源的异常使用、重要的系统操作(如用户登录、退出)等。
数据库开启情况:
需开启相关内容的数据库审计功能,方能满足需求。
审计内容 |
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相当的测试中,测试结果如下
可见审计对性能影响很小,针对具体的系统需要测试审计对系统性能的影响。