数据库审计详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
大量的数据存到存贮介质上可以使用dump或bulk copy 。
审计级别
•
sql server 级 包括如下操作login ,logout ,reboot ,remote procedue call , fatal error, privileged command.
• • •
database 级 包括操作grant , revoke, truncate table, drop, use object 级 包括table/view access , procedure, trigger执行 user 级 包括table/view access , command text
sybsecurity数据库
•
sybsecurity库是sqlserver审计系统的基础,它是由审计系统的安装程 序sybinit 来建立的,除包括model库中所有表之外,还另有两张系统 表。
• •
sysaudits 审计记录表。所有审计信息均被记载在这个表中 sysauditoptions 审计选择设置记录
•
在创建审计时,你必须给它指定一个名称和事件输出的目标位置。目 标文件可以是二进制的文件、Windows Security日志或Windows Application日志。你还可以给审计对象指定一个或更多个可选参数。
•
你可以用CREATE SERVER AUDIT语句,如下所示:
USE master GO CREATE SERVER AUDIT SrvAudit TO FILE (FILEPATH='C:\Data', MAXSIZE=5 MB) WITH (QUEUE_DELAY = 3000)
数据库知识点
审计
审计概述
• • • • • • • •
审计的概念? 审计系统的构成? Sybsecurity数据库? 内存审计队列? 审计级别 安装审计系统 审计数据管理 实例演示(sql 2008)
审计的概念
• •
审计,英文称之为“audit”,检查、验证目标的准确性和完整性,用以防止虚假数据和欺骗行为, 以及是否符合既定的标准、标竿和其它审计原则。 审计概念最早用于财务系统,主要是获取金融体系和金融记录的公司或企业的财务报表的相关信息。 随着科技信息技术的发展,大部份的企业、机构和组织的财务系统都运行在信息系统上面,所以信 息手段成为财务审计的一种技术的同时,财务审计也带动了通用信息系统的审计。审计已开始包括 信息技术审计。
创建数据库审计规范
•
和服务器的审计规范不一样,数据库审计规范是具体针对数据库的。 但是它和服务器审计规范相同的是,你可以增加审计活动组,但是它 们仅仅针对数据库。此外,你可以给规范增加单独的审计活动。审计 活动就是数据库具体的活动,如删除数据或运行存储程序。
•
创建数据库审计规范,在目标数据库中运行CREATE DATABASE AUDIT SPECIFICATION语句,例如
ຫໍສະໝຸດ Baidu
内存审计队列
•
当定义的审计事件发生时,审计记录首先被放在内存审计队列,在它被审计处理程序存放审计记录 之前,将一直存在这里。如果系统发生故障,内存审计队列记录可能丢失。内存审计队列溢出会影 响整个系统的性能。当审计队列没有空间时,如果用户执行一个被定义的审计的操作,那么审计处 理程序将进入一种睡眠状态,等待有足够的内存空间才运行用户的命令。内存审计队列空间可由 sp-configure来设置,参数为audit queue size 。
注意,你必须在主数据库中创建一个审计。由于审计是和SQL Server实 例相联系的,因此你不能在用户数据库中创建。 第一行的CREATE SERVER AUDIT语句仅规定审计名称(如SrvAudit)。 第二行的TO 子句确定事件输出时的目标位置。例如,我想将输出结果保 存在文件中,所以我必须指定TO FILE并规定FILEPATH 值。注意这只 是一个路径名。SQL Server将自动命名输出文件,如下所示:
实例演示(sql 2008)
• •
创建SQL Server审计 创建 审计 第一步你应该在SQL Server 2008的一个实例上创建审计,这样就能 创建一个SQL Server审计。审计就是为与数据库引擎相关的具体事件 集合配置的安全对象。你可以在SQL Server 2008里的一个实例上创 建多个审计。
CREATE SERVER AUDIT SrvAudit2 TO APPLICATION_LOG WITH (QUEUE_DELAY = 3000)
就像你看到的一样,TO FILE子句已经被TO APPLICATION_LOG 子句所替代并且还没有另外规定其他的参数。 最后一行在CREATE SERVER AUDIT 语句中的就是一个 WITH子 句。该子句支持很多个选项,限制了创建审计的方法。在这种情况 下,我使用的是QUEUE_DELAY参数并将它的值设为3000。这个 参数指定了在创建审计之前要耗费的毫秒数并且。默认数字为 1000 毫秒(即1秒)。
•
信息技术审计,是一个信息技术( IT )基础设施控制范围内的检查。信息系统审计是一个通过收 集和评价审计证据,对信息系统是否能够保护资产的安全、维护数据的完整、使被审计单位的目标 得以有效地实现、使组织的资源得到高效地使用等方面做出判断的过程。
•
数据库审计作为信息安全审计的重要组成部分,同时也是数据库管理系统安全性重要的一部分。通 过审计功能,凡是与数据库安全性相关的操作均可被记录下来。只要检测审计记录,系统安全员便 可掌握数据库被使用状况。
创建服务器审计规范
你创建SQL Server审计之后,必须创建一个服务器审计规范或者是一个 数据库审计规范或者是其中的每个。一个服务器审计规范就是和具体的 SQL Server审计相关的一个或多个服务审计。活动组就数据库引擎暴露 出来的一组相关的事件,例如,我们在进行安全审计操作时, SERVER_OPERATION_GROUP行动组就出现了,如当用户在改变服务 器设置时。你可以在每个审计上只创建一个服务器审计。但是,你可以 对审计规范增加多个活动组。创建一个服务器审计规范,你需要在主数 据库上运行CREATE SERVER AUDIT SPECIFICATION,如下所示:
USE master GO CREATE SERVER AUDIT SPECIFICATION SrvAuditSpec FOR SERVER AUDIT SrvAudit ADD (SUCCESSFUL_LOGIN_GROUP), ADD (FAILED_LOGIN_GROUP) WITH (STATE=ON)
<audit_name>_<audit_GUID>_<partition_number>.sqlaudit
在上面的例子中,TO FILE语句还包括了MAXSIZE参数,MAXSIZE 参数将文件大小限制为5 MB。该参数是TO FILE子句可选参数之一。 如果你将审计数据迁到Application日志或 Security 日志,你就只需要 指定日志名选项,示例如下:
•
第一行CREATE DATABASE AUDIT SPECIFICATION语句指定了规范 (DbAuditSpec),第二行为FOR SERVER AUDIT 子句,用它可以判断和规范相关的 审计。接下来,我增加了一个审计活动组,在这里就是 DATABASE_OBJECT_CHANGE_GROUP。在对AdventureWorks2008 数据库执行 CREATE、ALTER 或DROP语句时就会出现这个活动组。
USE AdventureWorks2008 GO CREATE DATABASE AUDIT SPECIFICATION DbAuditSpec FOR SERVER AUDIT SrvAudit ADD (DATABASE_OBJECT_CHANGE_GROUP), ADD (SELECT, INSERT, UPDATE, DELETE ON Schema::HumanResources BY dbo) WITH (STATE=ON)
•
例如,检查库中实体的存取模式,监测指定用户的行为。审计系统可以跟踪用户的全部操作,这也 使审计系统具有一种威慑力,提醒用户安全使用数据库。
审计系统的构成
• • • • • •
审计系统的构成 sybsecurity 数据库 存放在sybsystempocs中的一组系统存储过程 master库中的配置选项 内存审计队列 审计处理程序
审计数据管理
•
记录审计事件的表sysaudits增长很快,对这些记录信息必须做有效的管理,定期将审计记录归档。 归档可以由手工操作完成,也可以用系统threshold manager来完成。如果用threshold 那么必须将 sysaudit表放在独自的段上。
• • • • • • • • • •
现提供几种方法处理审计记录信息,用户可根据自己系统需求选择其中之一。 将审计记录拷贝到档案表中存放或直接将数据存放外存介质。 截断sysandits表,不保存审计记录。 将档案表中数据存放于外存介质。 审计记录表sysaudits溢出,会导致以下的问题 审计处理过程会死掉 当前内存审计队列的数据将丢失 用户程序向内存审计队列发送数据时被杀掉 取消审计系统功能 sp-auditoption "enable auditing","off" 停止审计系统工作之后,删除sybsecurity 库 drop database sybsearuity
第一行CREATE SERVER AUDIT SPECIFICATION语句规定了审计规范名 (SrvAuditSpec)。第二行FOR SERVER AUDIT子句指定了与审计规范相 关的审计名(SrvAudit)。第三行和第四行为 增加了规范活动组的ADD 子 句。在这种情况下,我增加了SUCCESSFUL_LOGIN_GROUP和 SUCCESSFUL_LOGIN_GROUP FAILED_LOGIN_GROUP活动组,跟踪试图登录到SQL Server实例的安全 主管。 最后一行 CREATE SERVER AUDIT SPECIFICATION语句为WITH 子句。 WITH 子句包括激活规范的在STATE参数。默认值不能激活审计规范 (STATE=OFF)。如果你在创建时不能激活审计规范,你就必须过段时间 再激活,在你能够审计活动组之前进行激活。
安装审计系统
• • • • • • • • • • • • •
审计系统由sybase安装程序sybinit安装。整个安装过程完成以下操作 执行disk init初始化用户指定使用的设备,并在其上创建sybsecurity数据库。 运行sp-auditinstall建立一个段空间,并将sysaudit表建在这个段上。 运行installsecurity,建立sysauditoptions 表,建立审计系统存储过程 重新启动sql server 。 建议不在sybsecurity库中建立任何用户表,存贮过程等。因为sysaudits表是相当动态变化的, 必须监控其设备的使用情况。 用于审计的系统存储过程 sp-auditdatabase 设置数据库级事件审计 sp-auditobject 设置访问表与视图事件的审计 sp-auditsproc 设置执行系统存储过程与触发事件审计 sp-auditlogin 设置指定用户全部操作的审计 sp-auditoption 设置审计选项 sp-addauditrecord 增加用户定义的审计记录
• • • • • •
审计数据流图
用户将要在tablea中插入记录,insert已被定义为审计事件。 检查操作权限,关于这条命令和处理的信息被记录在内存审计队列。 审计处理过程被调度的,将内存审计队列的信息写入sybsecurity库的sysaudits表中。 审计信息被存在sysaudit表中,这些信息随系统运输愈来愈多,如果需要的话,可将这些数据倒到 另外一个表中存放起来,或挎贝到磁带上存放。这些工作可以由threshold manager来做建议使用 insert into …select 来备份ysaudit数据,因为这个操作记log。