创建服务器审核和数据库审核规范

适用范围:SQL Server

本文描述了如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建服务器审核和数据库审核规范。

审核 SQL Server 或 SQL Server 数据库的实例或涉及到跟踪和记录系统中发生的事件。 SQL Server Audit 对象收集单个服务器级实例或数据库级操作和操作组以进行监视。 这种审核处于 SQL Server 实例级别。 每个 SQL Server 实例可以具有多个审核。 数据库级别审核规范 对象属于审核。 针对每个审核,您可以为每个 SQL Server 数据库创建一个数据库审核规范。 有关详细信息,请参阅 SQL Server 审核(数据库引擎)

限制

数据库审核规范是驻留在给定数据库中的非安全对象。 数据库审核规范在创建之后处于禁用状态。

当您在用户数据库中创建或修改数据库审核规范时,不要包括针对服务器范围对象(例如系统视图)的审核操作。 如果包括服务器范围对象,则会创建审核。 但不包括服务器范围的对象,并且不返回任何错误。 若要审核服务器范围对象,请使用 master 数据库中的数据库审核规范。

数据库审核规范位于创建它们的数据库(tempdb 系统数据库除外)中。

权限

  • 拥有 ALTER ANY DATABASE AUDIT 权限的用户可以创建数据库审核规范并将其绑定到任何审核。

  • 创建数据库审核规范后,具有 CONTROL SERVERALTER ANY DATABASE AUDIT 权限的主体可查看它。 sysadmin 帐户也可以查看它。

使用 SQL Server Management Studio

创建服务器审核

  1. 在对象资源管理器中,展开“安全性”文件夹。

  2. 右键单击“审核”文件夹,然后选择“新建审核”。 有关详细信息,请参阅 创建服务器审核和服务器审核规范

  3. 选择选项完成后,选择“确定”。

创建数据库级别审核规范

  1. 在“对象资源管理器”中,展开要创建审核规范的数据库。

  2. 展开 “安全性” 文件夹。

  3. 右键单击“数据库审核规范”文件夹,然后选择“新建数据库审核规范”

    “创建数据库审核规范”对话框中提供了以下选项:

    Name

    数据库审核规范的名称。 创建服务器审核规范时会自动生成名称。 该字段是可编辑的。

    审核

    现有服务器审核对象的名称。 或者键入审核的名称,或者从列表中选择一个名称。

    审核操作类型

    指定要捕获的数据库级别审核操作组和审核操作。 有关数据库级别审核操作组和审核操作的列表以及它们所包含事件的说明,请参阅 SQL Server 审核操作组和操作

    对象架构

    显示具有指定“对象名称”的对象的架构。

    Object Name

    要审核的对象的名称。 此选项仅适用于审核操作。 它不适用于审核组。

    省略号 (...)

    打开“选择对象”对话框,以便可以基于指定的“审核操作类型”浏览和选择可用对象。

    主体名称

    对于所审核的对象,要作为审核筛选依据的帐户。

    省略号 (...)

    打开“选择对象”对话框,以便可以基于指定的“对象名称”浏览和选择可用对象。

  4. 选择选项完成后,选择“确定”。

使用 Transact-SQL

创建服务器审核

  1. 在 “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例粘贴到查询窗口中,然后选择“执行”

    USE master;
    GO
    
    -- Create the server audit.
    CREATE SERVER AUDIT Payroll_Security_Audit TO FILE (FILEPATH = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA');
    GO
    
    -- Enable the server audit.
    ALTER SERVER AUDIT Payroll_Security_Audit
    WITH (STATE = ON);
    

创建数据库级别审核规范

  1. 在 “对象资源管理器” 中,连接到 数据库引擎的实例。

  2. 在标准栏上,选择“新建查询” 。

  3. 将以下示例粘贴到查询窗口中,然后选择“执行”。 此示例创建一个称为 Audit_Pay_Tables 的数据库审核规范。 它针对 HumanResources.EmployeePayHistory 表,基于上一个部分中定义的服务器审核对 dbo 用户发出的 SELECT 和 INSERT 语句进行审核。

    USE AdventureWorks2022;
    GO
    
    -- Create the database audit specification.
    CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
    FOR SERVER AUDIT Payroll_Security_Audit ADD (
        SELECT, INSERT ON HumanResources.EmployeePayHistory BY dbo
    )
    WITH (STATE = ON);
    GO