首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Server审核审核2个或更多SQL登录(服务器主体)

如何使用Server审核审核2个或更多SQL登录(服务器主体)
EN

Database Administration用户
提问于 2015-01-29 05:56:02
回答 1查看 803关注 0票数 0

我需要审核几个Server登录,我在创建服务器审核时使用了过滤器

代码语言:javascript
复制
CREATE SERVER AUDIT [audit123]
TO FILE 
(   FILEPATH = N'D:\'
    ,MAXSIZE = 2048 MB
    ,MAX_ROLLOVER_FILES = 6
    ,RESERVE_DISK_SPACE = OFF
)
WITH
(   QUEUE_DELAY = 5000
    ,ON_FAILURE = CONTINUE
)
WHERE ([server_principal_name]='AAA')

但是,当我使用where ([server_principal_name] in ('AAA','BBB','CCC'))包含更多的SQL登录时,就会产生错误。我尝试使用下面,但未能为2个或更多登录创建审核。

代码语言:javascript
复制
ALTER SERVER AUDIT audit123 WHERE server_principal_name ='BBB';
ALTER SERVER AUDIT audit123 WHERE server_principal_name ='CCC';
EN

回答 1

Database Administration用户

发布于 2015-01-29 12:51:11

我相信,在第一步中,您正在使用SQL server审计规范的一部分:

  1. 首先,您只需要使用server审核创建一个服务器审计对象。现在,在本审计部分中,您将使用where子句,该子句还要求创建sql服务器审计规范:
  2. 检查更改审核的权限:a)创建、更改或删除服务器审核,主体需要alter服务器审核或控制服务器权限。(B)拥有ALTER服务器审核权限的用户可以创建服务器审核规范并将其绑定到任何审计。

参见下面的示例:来自MSDN whihc可能有助于您理解使用where子句中的主体进行的审计:

代码语言:javascript
复制
  CREATE DATABASE TestDB;
  GO
  USE TestDB;
  GO
  CREATE SCHEMA DataSchema;
  GO
  CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
  GO
  CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
   GO
    -- Create the server audit in the master database
 USE master;
 GO
  CREATE SERVER AUDIT AuditDataAccess
  TO FILE ( FILEPATH ='C:\SQLAudit\' )
 WHERE object_name = 'SensitiveData' ;
 GO
 ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
  GO
 -- Create the database audit specification in the TestDB database
  USE TestDB;
  GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess] 
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH (STATE = ON);
GO
-- Trigger the audit event by selecting from tables
 SELECT ID, DataField FROM DataSchema.GeneralData;
 SELECT ID, DataField FROM DataSchema.SensitiveData;
 GO
 --- Check the audit for the filtered content
  SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);
   GO
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/90509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档