[审计] SQL Server开启审计

发布时间 2023-12-26 20:00:53作者: DBer_ablewang
  1. 说明
    a. 服务器级别操作组涵盖了整个 SQL Server 实例中的操作。 例如,如果将相应操作组添加到服务器审核规范中,则将记录任何数据库中的任何架构对象访问检查。 在数据库审核规范中,仅记录该数据库中的架构对象访问。
    b. 服务器级别的操作不允许对数据库级别的操作进行详细筛选。 实现详细操作筛选需要数据库级别的审核, 在用户数据库审核规范中不要包括服务器范围的对象,例如系统视图。

  2. 开启升级并查看
    a. 在所有服务器上创建审计日志目录D:\audit\mssql,默认审计日志需要占用10G的空间。
    mkdir D:\audit\mssql

    b. 在数据库上创建审计
    USE [master]
    GO

    CREATE SERVER AUDIT [adt_mssql]
    TO FILE
    ( FILEPATH = N'D:\audit\mssql'
    ,MAXSIZE = 100 MB
    ,MAX_FILES = 100
    ,RESERVE_DISK_SPACE = OFF
    )
    WITH
    ( QUEUE_DELAY = 1000
    ,ON_FAILURE = CONTINUE
    )
    GO
    c. 在数据库上启用审计
    USE [master]
    GO

    ALTER SERVER AUDIT [adt_mssql]
    WITH (STATE = ON);
    GO

    d. 创建数据库级别的审计规则
    USE [master]
    GO

    CREATE SERVER AUDIT SPECIFICATION [sadt_mssql_spec]
    FOR SERVER AUDIT [adt_mssql]
    ADD (AUDIT_CHANGE_GROUP),
    ADD (SUCCESSFUL_LOGIN_GROUP),
    ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
    ADD (FAILED_LOGIN_GROUP),
    ADD (FAILED_DATABASE_AUTHENTICATION_GROUP),
    ADD (LOGOUT_GROUP),
    ADD (DATABASE_LOGOUT_GROUP),
    ADD (BROKER_LOGIN_GROUP),
    ADD (DATABASE_MIRRORING_LOGIN_GROUP),
    ADD (LOGIN_CHANGE_PASSWORD_GROUP),
    ADD (APPLICATION_ROLE_CHANGE_PASSWORD_GROUP),
    ADD (USER_CHANGE_PASSWORD_GROUP),
    ADD (DATABASE_PERMISSION_CHANGE_GROUP),
    ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
    ADD (DATABASE_PRINCIPAL_CHANGE_GROUP),
    ADD (SERVER_OBJECT_PERMISSION_CHANGE_GROUP),
    ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP),
    ADD (SERVER_PERMISSION_CHANGE_GROUP),
    ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
    ADD (BACKUP_RESTORE_GROUP),
    ADD (DATABASE_CHANGE_GROUP),
    ADD (SERVER_OPERATION_GROUP),
    ADD (SERVER_STATE_CHANGE_GROUP),
    ADD (SERVER_PRINCIPAL_CHANGE_GROUP)
    GO

    e. 启用审计规则
    USE [master]
    GO

    ALTER SERVER AUDIT SPECIFICATION [sadt_mssql_spec]
    WITH (STATE = ON);
    GO

    f. 查看审计日志
    i. 通过SSMS查看
    ii. 通过函数查看
    select * from sys.fn_get_audit_file('D:\audit\adt_mssql_E4BAB724-B173-47B3-AA2E-15EBDABA1CCB_0_133468214579680000.sqlaudit',default,default)