You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否为特定用户配置SQL Server 2012审计?含SA及指定账户实施步骤

如何在SQL Server 2012中为特定用户(SA及指定账户)配置审计跟踪

当然可以!SQL Server 2012完全支持针对特定用户的审计配置,不管是SA这种系统账户还是自定义的指定账户,都能精准跟踪它们的操作。下面我会一步步带你完成设置,涵盖图形界面(SSMS)和T-SQL两种方式,你可以根据自己的习惯来选。

一、先确认审计功能的版本兼容性

首先要注意:SQL Server 2012的Enterprise版支持完整的审计功能,Standard版支持服务器级和部分数据库级审计,Express版不支持审计功能。请确保你的实例版本符合要求。

二、创建服务器级审计对象

服务器级审计是存储审计日志的载体,支持文件、Windows事件日志或应用程序日志作为目标,这里以最常用的文件存储为例:

方法1:用SQL Server Management Studio(SSMS)操作

  • 打开SSMS并连接到目标实例,展开「安全性」节点,右键点击「审计」→「新建审计...」
  • 在弹窗中:
    • 输入审计名称,比如Server_Audit_SA_CustomUser
    • 「审计目标」选择「文件」,指定日志保存路径(务必确保SQL Server服务账户对该路径有读写权限)
    • 按需设置「最大文件大小」「保留天数」「最大滚动文件数」等参数
    • 点击「确定」完成创建(此时审计默认是禁用状态,后续配置完规范再启用)

方法2:用T-SQL命令创建

CREATE SERVER AUDIT [Server_Audit_SA_CustomUser]
TO FILE 
( FILEPATH = N'C:\SQL_Audit_Logs\' -- 替换为你的实际存储路径
  , MAXSIZE = 1024 MB
  , MAX_ROLLOVER_FILES = 10
  , RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000 -- 日志写入延迟,单位毫秒
  , ON_FAILURE = CONTINUE -- 可选:审计失败时继续运行,也可设为SHUTDOWN强制停止实例
)
GO

三、创建服务器级审计规范(针对SA和指定账户)

审计规范用来定义需要跟踪的具体事件,我们要精准筛选SA和目标账户的操作:

方法1:SSMS操作

  • 展开「安全性」→「服务器审计规范」,右键选择「新建服务器审计规范...」
  • 输入规范名称,比如Server_Audit_Spec_SA_CustomUser
  • 「审计」下拉框选择刚才创建的Server_Audit_SA_CustomUser
  • 在「审计操作类型」中,推荐添加以下核心事件:
    • FAILED_LOGIN_GROUP:跟踪登录失败(包括SA的暴力破解尝试)
    • SUCCESSFUL_LOGIN_GROUP:跟踪登录成功记录
    • SERVER_ROLE_MEMBER_CHANGE_GROUP:跟踪服务器角色成员变更(比如SA被添加/移除角色)
    • DATABASE_PERMISSION_CHANGE_GROUP:跟踪数据库权限变更
  • 关键筛选步骤:点击「条件」列的省略号,在筛选器窗口添加server_principal_name条件,设置为IN ('sa', '你的指定账户名')(替换成实际账户,比如test_user
  • 点击「确定」完成创建

方法2:用T-SQL命令创建并添加筛选

-- 先创建基础审计规范
CREATE SERVER AUDIT SPECIFICATION [Server_Audit_Spec_SA_CustomUser]
FOR SERVER AUDIT [Server_Audit_SA_CustomUser]
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP)
WITH (STATE = OFF)
GO

-- 添加用户筛选条件,仅审计SA和指定账户
ALTER SERVER AUDIT SPECIFICATION [Server_Audit_Spec_SA_CustomUser]
ADD (FAILED_LOGIN_GROUP WHERE server_principal_name IN ('sa', 'test_user')),
ADD (SUCCESSFUL_LOGIN_GROUP WHERE server_principal_name IN ('sa', 'test_user')),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP WHERE server_principal_name IN ('sa', 'test_user')),
ADD (DATABASE_PERMISSION_CHANGE_GROUP WHERE server_principal_name IN ('sa', 'test_user'))
GO

四、启用审计和审计规范

配置完成后需要手动启用才能生效:

  • SSMS方式:右键点击创建的审计对象→「启用审计」;再右键点击服务器审计规范→「启用服务器审计规范」
  • T-SQL方式:
ALTER SERVER AUDIT [Server_Audit_SA_CustomUser] WITH (STATE = ON)
GO
ALTER SERVER AUDIT SPECIFICATION [Server_Audit_Spec_SA_CustomUser] WITH (STATE = ON)
GO

五、验证审计是否生效

可以通过以下方式验证:

  1. 用SA或指定账户登录实例,执行一些操作(比如修改权限、查询敏感表)
  2. 查看审计日志:
    • SSMS中右键点击审计对象→「查看审计日志...」
    • 或者用T-SQL查询:
    SELECT event_time, server_principal_name, action_id, statement
    FROM sys.fn_get_audit_file('C:\SQL_Audit_Logs\Server_Audit_SA_CustomUser_*.sqlaudit', DEFAULT, DEFAULT)
    

可选:添加数据库级审计规范(监控数据库内操作)

如果需要跟踪用户在特定数据库中的具体操作(比如表的增删改查、存储过程执行),可以创建数据库级审计规范:

USE YourTargetDatabase -- 替换为你的目标数据库名
GO
CREATE DATABASE AUDIT SPECIFICATION [DB_Audit_Spec_SA_CustomUser]
FOR SERVER AUDIT [Server_Audit_SA_CustomUser]
ADD (SELECT ON DATABASE::YourTargetDatabase BY sa),
ADD (INSERT ON DATABASE::YourTargetDatabase BY test_user),
ADD (UPDATE ON DATABASE::YourTargetDatabase BY sa, test_user),
ADD (DELETE ON DATABASE::YourTargetDatabase BY sa, test_user)
WITH (STATE = ON)
GO

内容的提问来源于stack exchange,提问作者Sa'ad Qasaymeh

火山引擎 最新活动