【概述】
审计,是 DBMS 达到 C2 以上安全级别必不可少的一项指标
审计功能将用户对数据库的所有操作自动记录下来存入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列审计事件,找出非法存取数据的人、时间、内容
可审计事件有服务器事件、系统权限、语句事件、模式对象事件等,其能对普通和特权用户行为、各种表操作、身份鉴别、自主和强制访问控制等操作进行审计
由于审计是十分浪费时间和空间的,其主要用于安全性要求较高的部门,因此 DBMS 往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活地打开或关闭审计功能
审计设置与审计日志一般存于数据字典中,必须要将审计开关打开,即系统参数 audit_trail
设为 true
,才可以在系统表 SYS_AUDITTRAIL
中看到审计信息
【审计事件】
审计事件一般有多个类别,常见的有:
- 服务器事件:审计数据库服务器发生的事件,包含数据库服务器的启动、停止、配置文件的重新加载
- 系统权限:对系统拥有的结构或模式对象进行操作的审计,要求改操作的权限是通过系统权限取得的
- 语句事件:对 SQL 语句的审计
- 模式对象事件:对特定模式对象上进行的 SELECT 或 DML 操作的审计
【审计功能】
审计功能主要包括以下几方面的内容:
- 基本功能:提供基本的、可选的、有限的三种审计查阅方式
- 审计规则:一般在数据库初始化时设定,以方便审计员管理
- 审计日志管理功能:包括防止审计员误删审计记录、只允许审计员查阅和转储审计记录等
- 审计分析与报表:提供供审计员查看的审计分析记录与报表
- 审计设置与审计记录的视图:系统提供查询审计设置、审计记录的视图,通过相关的系统表直接查看
【审计类型】
审计一般分为用户级审计和系统级审计
用户级审计是任何用户可设置的审计,主要针对用户对自己创建的数据库表或视图,记录所有用户对这些表或视图成功、不成功的访问要求与 SQL 操作
系统级审计只能由数据库管理员设置,用来监控成功或失败的登录要求、监测授权与收回操作、其他数据库级权限下的操作等
【SQL 中的审计】
在 SQL 中,RDBMS 提供了 AUDIT
语句和 NOAUDIT
语句来设置、取消审计功能
例如,对修改 sc 表结构或修改 sc 表数据的操作进行审计
1 | AUDIT ALTER, UPDATE |
例如,取消对 sc 表的所有审计
1 | NOAUDIT * |