1. MSSQL审计简介
MSSQL是一款常见的关系型数据库管理系统,它支持多种数据库操作,而审计就是其中之一。MSSQL审计可以用来监控数据库系统的用户活动、数据访问频率和故障诊断等方面。详细了解和实施MSSQL审计可以对关键数据的保护和安全性提供重要支持,保护数据库免受非法访问或攻击。
2. MSSQL审计功能
2.1 审计策略
审计策略可以根据时间、用户或对象等多重条件来分配审计的任务,其中包括SQL Server,数据库和对象级别的策略设置。
MSSQL审计可以以几种不同方式运行,每种方式可以监视一个特定方面的活动,例如登录失败、数据库变更或查询执行等。基本的审计策略包括:服务器级别审核、数据库级别审核和对象级别审核。可以为每个策略设置一组目标筛选条件,这些条件可以选择性审核用户执行的任何操作。
例如,可以使用服务器级别审计通过创建审核日志,记录整个SQL Server中执行的所有DDL操作。这样,可以基于时间范围、数据、会话ID、请求ID、程序路径、ip地址等基本属性来筛选操作关闭、删除或更改的时间,以及相关的操作和用户。为了保护机密数据,可以在生成的审核日志中自动排除PAN数据、SSN和生日等敏感数据信息。
2.2 审计数据的查询和报告
MSSQL审计数据可以导出和报告,以支持内部合规要求。管理员可以使用各种审计查询和报告功能来生成标准和自定义报告,以及执行需要的客户端报告操作。这些报告可以为合规性提供根据多种应用程序需求生成的每日、每周或每月审计关键操作的摘要信息。
监视系统对象变更、用户活动和管理员权限变更等活动可以帮助管理员追踪和审查要求。例如,可以生成下列详细报告介绍基本的MSSQL审计用户和对象活动:
1. 用户活动报告:1) 登录成功和失败的摘要。2)高危用户的摘要报告,为按照不同的模式访问数据库的用户分类。3) 最近三个月内用户登录次数排名的报告。
2. 对象活动报告:1)每日DDL和DML活动的列表,包括对表、视图、存储过程、触发器和其他与数据库相关的元素的操作。2)数据库内每个对象活动概览的报告。例如,可以查看每个表的创建和更改日期,以及哪个用户最后执行了这些操作。
3. MSSQL审计的实施
3.1 审计准备
在实施MSSQL审计之前,需要进行审计策略设计。需要厘清的问题包括:审计范围、审计级别、数据保护和日志限制等。确定审计策略后,还需要在SQL Server上创建相应的审计对象。
3.2 审计的创建
创建审计对象是在SQL Server上执行MSSQL审计的第一步。为了创建审计对象,您需要在MSSQL Server Management Studio或SQL命令行实用程序中输入适当的命令。您需要输入以下信息以创建审计对象:
CREATE SERVER AUDIT [audit_name]
TO FILE([file_name])
WITH
(
QUEUE_DELAY = {interval},
ON_FAILURE = {fail_option},
[AUDIT_GUID = {uniqueidentifier}],
[RESERVE_DISK_SPACE = {integer MB}],
[MAXSIZE = {integer MB | UNLIMITED}]
)
-- 示例
CREATE SERVER AUDIT [ServerAudit]
TO FILE('C:\Audit\AuditData')
WITH (MAXSIZE = 1 GB,
MAX_FILES = 5,
RESERVE_DISK_SPACE = OFF,
ON_FAILURE = CONTINUE);
上面的代码创建了一个名为ServerAudit对象的审计,将它记录到文件C:\Audit\AuditData中,并设置了保留磁盘空间、不限制大小和失败时继续的选项。
此外,还可以使用SQL代码创建数据库级别或对象级别审计。创建数据库级别审计,您需要输入以下信息:
USE [target_database]
CREATE DATABASE AUDIT SPECIFICATION [audit_spec_name]
FOR SERVER AUDIT_audit_name
ADD (SELECT, UPDATE, DELETE, INSERT)
WITH (STATE = ON)
上面的代码创建了一个名为audit_spec_name的新审计规范,用于对目标数据库中执行的所有的SELECT、INSERT、UPDATE和DELETE语句进行审计。
3.3 审计日志的监视
日志监视是审计实施的最后一步,它允许管理员查看日志文件中的内容,并检查有关安全事件或认证问题的详细信息。您可以使用Windows Event Viewer或MSSQL Audit功能来查看生成的审计日志。
按照以下步骤查看Audit数据:
--找到已创建的Audit文件的位置,然后再找出相关日志记录。
1. 在SQL Server Management Studio (SSMS) 接口上右键单击Security, 选择“Reports”-->“Standard Reports”-->”Audit Logon Events和Audit Login Failed Events”,即可看到登录日志的详细信息。
2. 通过SQL命令查看Audit信息。
SELECT * FROM sys.fn_get_audit_file('\Audit\AuditData*',default,default);
以上命令显示与创建文件的相同路径的日志文件中的所有审计数据。也可以在文件mask中用模糊匹配符号*匹配文件的名称或位置。因此,在文件路径C:\Audit\下执行以下命令:
SELECT * FROM sys.fn_get_audit_file('*.sqlaudit',default,default);
这将显示名为ServerAudit的审计对象创建的SQL Server审核日志条目。
4. 结论
MSSQL审计提供了一种完整的解决方案,用于监视SQL Server操作中的行为和事件,能够提高关键数据保护和安全性。MSSQL审计的实施和设置需要管理员按照规定要求进行策略设计、创建审计对象、实施审计,并监视生成的日志。只有这样才能保证安全审计的全面性和准确性。因此,充分理解和实践MSSQL审计是非常重要的,可以为企业提供更好的数据保护和安全性保障。