SQL Server 2008 : Accessing Audit Details

Tsql теория > SQL Server 2008 : Accessing Audit Details
04.04.2013 17:21:34



Статья:

SQL Server 2008 : Accessing Audit Details

 

Прежде всего информация, которую должен знать любой администратор базы данных, - то, какие аудиты определяются на сервере.

The first and foremost information that any database administrator needs to know is what audits are defined on the server. You can find that by using the following catalog view. [Refer Fig 1.0]

select Name, is_state_enabled, type_desc from sys.server_audits

audits are defined on the server
Fig 1.0

Столбец Type_Desc дает Вам целевую информацию определенного аудита. Здесь мы видим, что Compliance_Server_audit идет в Журнал Приложения Windows, и цели других двух аудитов указывают на файл.

Можно также просмотреть эту информацию в Studio управления SQL Server под папкой Security\Audit как показано ниже.

SQL Server Management Studio
Fig 1.1

Следующий уровень детализации, который должен знать администратор базы данных, является расположением цели, размера и состояния аудита непосредственно. Можно найти, что при использовании следующего sql.

select name, status_desc, audit_file_path, audit_file_size from 
sys.dm_server_audit_status 

в результате можно видеть, что цель и для compliance_database_audit и для MyDB_Database_Granular_Audit указывает на C:\SQLAudit, и размер файла показываются как 5 МБ.

Мы можем проверить расположение и размер, используя windows explorer как показано ниже.

Эта информация может также быть просмотрена от студии управления SQL Server, используя свойства Audit.

Более подробная информация о контроле с ФАЙЛОМ как цель может быть найдена, используя следующее sql

select name, on_failure ,max_file_size ,max_rollover_files ,log_file_path 
,log_file_name  from  sys.server_file_audits 

catalog view
Fig 1.6

Детали спецификации аудита базы данных отдельного аудита базы данных могут быть получены, используя следующий sql.

select * from sys.database_audit_specification_details where database_specification_id in
(select database_specification_id from sys.database_audit_specifications where name ='MyDB_Database_Granular_Audit_SPEC')

Details of a database audit specification of an individual database audit
Fig 1.7

Информация может быть получена, используя студию управления SQL Server под базой данных Спецификация Аудита MyDB\Security\Database.

The information can be retrieved using SQL Server Management studio
Fig 1.8

Можно проверить расширенные события, которые создаются SQL-сервером, связанным с этим аудитом, используя следующй sql.

select s.name as [session name], se.event_name as [event name], 
          p.name as [package name], t.target_name as [target name]
from sys.dm_xe_sessions s 
join sys.dm_xe_session_events se on s.address = se.event_session_address
join sys.dm_xe_packages p on se.event_package_guid = p.guid 
join sys.dm_xe_session_targets t on s.address=t.event_session_address

the extended events that are created by SQL server related to this audit
Fig 1.9

Есть другая информация о метаданных об аудите, который может быть получен, используя sql:


sys.dm_audit_actions: Это представление содержит информацию о каждом контрольном действии, о котором можно сообщить в контрольном журнале и каждой контрольной инициативной группе, которая может быть сконфигурирована как часть Аудита

 sys.dm_audit_class_type_map SQL Server: Это динамическое представление управления отображает class_type поле в контрольном журнале к class_desc полю в представлении sys.dm_audit_actions.

Example:

Select top 10 action_id,name,class_desc,parent_class_desc from sys.dm_audit_actions

Result:

action_id, name, class_desc, parent_class_desc
----------------------------------------------
R   , REVOKE, DATABASE, SERVER
D   , DENY, DATABASE, SERVER
G   , GRANT, DATABASE, SERVER
GWG , GRANT WITH GRANT, DATABASE, SERVER
RWG , REVOKE WITH GRANT, DATABASE, SERVER
RWC , REVOKE WITH CASCADE, DATABASE, SERVER
DWC , DENY WITH CASCADE, DATABASE, SERVER
R   , REVOKE, OBJECT, DATABASE
D   , DENY, OBJECT, DATABASE
G   , GRANT, OBJECT, DATABASE

Example:

select top 20  * from sys.dm_audit_class_type_map

Result:

class_type, class_type_desc, securable_class_desc
------------------------------------------------
DB, DATABASE, DATABASE
OB, OBJECT, OBJECT
TY, TYPE, TYPE
SC, SCHEMA, SCHEMA
SX, XML SCHEMA COLLECTION, XML SCHEMA COLLECTION
AS, ASSEMBLY, ASSEMBLY
US, USER, USER
RL, ROLE, ROLE
AR, APPLICATION ROLE, APPLICATION ROLE
MT, MESSAGE TYPE, MESSAGE TYPE
CT, CONTRACT, CONTRACT
SV, SERVICE, SERVICE
BN, REMOTE SERVICE BINDING, REMOTE SERVICE BINDING
RT, ROUTE, ROUTE
FC, FULLTEXT CATALOG, FULLTEXT CATALOG
FL, FULLTEXT STOPLIST, FULLTEXT STOPLIST
SK, SYMMETRIC KEY, SYMMETRIC KEY
CR, CERTIFICATE, CERTIFICATE
AK, ASYMMETRIC KEY, ASYMMETRIC KEY
SR, SERVER, SERVER

Наконец, что не менее важно, получает фактические данные от конечных файлов. Это может быть получено, используя следующую функцию.

SELECT session_server_principal_name, database_name,schema_name,Object_name, statement 
FROM sys.fn_get_audit_file ('C:\SQLAudit\MyDB_Database_*.sqlaudit',default,default);

Result:

session_server_principal_name, database_name, schema_name, Object_name, 
----------------------------------------------------------------------
statement
----------
WIN2K8-R2\Administrator, , , , 
MyLogin, MyDB, dbo, mytable, INSERT INTO [mytable] SELECT @1
MyLogin, MyDB, dbo, mytable, INSERT INTO [mytable] SELECT @1
MyLogin, MyDB, dbo, mytable, INSERT INTO [mytable] SELECT @1
MyLogin, MyDB, dbo, mytable, INSERT INTO [mytable] SELECT @1
MyLogin, MyDB, dbo, mytable, INSERT INTO [mytable] SELECT @1
MyLogin, MyDB, dbo, mytable, UPDATE [mytable] set [id] = @1  WHERE [id]=@2