4.4 审计
前面讲的用户身份鉴别、存取控制是数据库安全保护的重要技术(安全策略方面),但不是全部。为了使数据库管理系统达到一定的安全级别,还需要在其他方面提供相应的支持。例如按照 TDI/TCSEC 标准中安全策略的要求,审计(audit)功能就是数据库管理系统达到C2以上安全级别必不可少的一项指标。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃、破坏数据的人总是想方设法打破控制。审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。还可以通过对审计日志分析,对潜在的威胁提前采取措施加以防范。
审计通常是很费时间和空间的,所以数据库管理系统往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活地打开或关闭审计功能。审计功能主要用于安全性要求较高的部门。
可审计事件有服务器事件、系统权限、语句事件及模式对象事件,还包括用户鉴别、自主访问控制和强制访问控事件。换句话说,它能对普通和特权用户行为、各种表操作、身份鉴别、自主和强制访问控制等操作进行审计。它既能审计成功操作,也能审计失败操作。
01审计事件
审计事件一般有多个类别,例如,
● 服务器事件:审计数据库服务器发生的事件,包含数据库服务器的启动、停止、数据库服务器配置文件的重新加载。
● 系统权限:对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
● 语句事件:对SQL语句,如DDL、DML、DQL(Data Query Language,数据查询语言)及DCL语句的审计。
● 模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计。模式对象包括表、视图、存储过程、函数等。模式对象不包括依附于表的索引、约束、触发器、分区表等。
02审计功能
审计功能主要包括以下几方面内容:
● 基本功能,提供多种审计查阅方式:基本的、可选的、有限的,等等。
● 提供多套审计规则,审计规则一般在数据库初始化时设定,以方便审计员管理。
● 提供审计分析和报表功能。
● 审计日志管理功能,包括为防止审计员误删审计记录,审计日志必须先转储后删除对转储的审计记录文件提供完整性和保密性保护;只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录;等等。
● 系统提供查询审计设置及审计记录信息的专门视图。对于系统权限级别、语句级别及模式对象级别的审计记录也可通过相关的系统表直接查看。
03AUDIT语句和NOAUDIT语句
AUDIT 语句用来设置审计功能,NOAUDIT语句则取消审计功能。
审计一般可以分为用户级审计和系统级审计。用户级审计是任何用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SOL操作。
系统级审计只能由数据库管理员设置,用以监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作。
例4.15 对修改SC表结构或修改SC表数据的操作进行审计。
AUDIT ALTER, UPDATE ON SC;
例4.16 取消对SC表的一切审计。
NOAUDIT ALTER,UPDATE ON SC;
审计设置以及审计日志一般都存储在数据字典中。必须把审计开关打开(即把系统参数audit trail设为true),才可以在系统表SYS_AUDITTRAIL中查看到审计信息。
数据库安全审计系统提供了一种事后检查的安全机制。安全审计机制将特定用户或者特定对象相关的操作记录到系统审计日志中,作为后续对操作的查询分析和追踪的依据。通过审计机制,可以约束用户可能的恶意操作。