SQL Server監査第二編:監査データの表示

6544 ワード

ビューと関数を動的に管理して表示できる監査オブジェクト

一、サーバー監査オブジェクトの表示


監査サーバーの監査オブジェクトの情報を表示します.これは監査オブジェクトのメタデータです.
select a.audit_id
    ,a.audit_guid
    ,a.name
    ,a.create_date
    ,a.modify_date
    ,a.principal_id as owner_prinicpal_id
    ,a.type
    ,a.type_desc
    ,a.on_failure
    ,a.on_failure_desc
    ,a.is_state_enabled
    ,a.queue_delay
    ,a.predicate
from sys.server_audits a

監査オブジェクトの現在のステータスと、監査オブジェクトに関連付けられたExtended Eventsセッションの表示
select s.audit_id
    ,s.name     
    ,s.status
    ,s.status_desc
    ,s.status_time
    ,s.audit_file_path
    ,s.audit_file_size
    ,s.event_session_address
    ,e.name as xe_session_name
    ,e.pending_buffers
    ,e.total_regular_buffers
    ,e.regular_buffer_size
    ,e.large_buffer_size
    ,e.total_buffer_size
    ,e.buffer_policy_flags
    ,e.buffer_policy_desc
    ,e.flags
    ,e.flag_desc
    ,e.dropped_event_count
    ,e.dropped_buffer_count
    ,e.blocked_event_fire_time
    ,e.create_time
    ,e.largest_event_dropped_size
from sys.dm_server_audit_status s
inner join sys.dm_xe_sessions as e
    on s.event_session_address=e.address

二、監査規範


監査仕様は、サーバ・レベルの監査仕様とデータベース・レベルの監査仕様に分けられます.次のスクリプトは、データベース・レベルの監査仕様を表示するために使用します.
select s.audit_guid
    ,s.name as audit_specification
    ,s.create_date
    ,s.modify_date
    ,s.is_state_enabled
    ,d.audit_action_id
    ,d.audit_action_name
    ,d.class
    ,d.class_desc
    ,d.major_id
    ,d.minor_id
    ,d.audited_principal_id
    ,d.audited_result
    ,d.is_group
from sys.database_audit_specifications s
inner join sys.database_audit_specification_details     as d
    on s.database_specification_id=d.database_specification_id

三、監査動作


監査アクションは、実際には監査可能なイベントによってトリガーされます.監査アクションは、監査を作成するために監視する必要があるオブジェクトです.
select a.action_id
    ,a.action_in_log
    ,a.name as action_name
    ,m.class_type
    ,a.class_desc
    ,m.securable_class_desc
    ,a.parent_class_desc
    ,a.covering_action_name
    ,a.configuration_level
    ,a.containing_group_name
from sys.dm_audit_actions a
inner join sys.dm_audit_class_type_map m
    on a.class_desc=m.class_type_desc

四、監査データ


監査データは、監査データを作成する目的であり、監査データによってシステムで発生したイベントを追跡し、イベントに関連する情報を記録します.
監査データは関数fn_を介してget_audit_file()で取得され、返されるフィールドには主に次の2つのクラスがあります.第1のクラスはデータベースの環境に関連しています.
  • application_name:SQL文を実行して監査イベント
  • をトリガーするクライアント・アプリケーションの名前
  • server_instance_name:監査が発生したSQL Serverインスタンス名
  • database_name:監査動作が発生したデータベース
  • database_principal_idとdatabase_principal_name:監査動作を実行するユーザ
  • server_principal_idとserver_principal_name:議長の監査作用のLogin
  • server_principal_sid:loginのsid
  • session_id:監査動作発生session
  • session_server_principal_name:監査動作で発生したセッションのlogin
  • 2番目のクラスは、イベントとイベントに関連付けられたデータです.
  • action_id:監査動作ID
  • event_time:監査動作(Audit Action)がトリガーする時間
  • class_type:監査作用のオブジェクトのタイプ
  • schema_name:監査作用のオブジェクトのschema名
  • object_idとobject_name:監査対象のIDと名称
  • statement:実行されるSQL文
  • succeeded:監査動作が成功したかどうかを示す
  • sequence_group_idとsequence_number:単一監査レコード(audit record)のsizeが大きすぎる場合、監査はsequence_を介してグループ化されます.numberは、順序
  • をマークする
    監査追跡のデータは、次のスクリプトで表示できます.
    select  f.event_time
        ,f.sequence_group_id
        ,f.sequence_number
        ,f.action_id
        ,a.name as action_name
        ,f.succeeded
        ,f.server_principal_name
        ,f.database_principal_name
        ,f.database_name
        ,f.object_id
        ,f.schema_name
        ,f.object_name
        ,f.class_type
        ,m.class_type_desc
        ,f.statement
        ,f.session_id
        ,f.application_name
    from sys.fn_get_audit_file('G:\AuditFiles\MonitorQuery\*',default,default) f
    inner join sys.dm_audit_actions a 
        on f.action_id=a.action_id
    inner join sys.dm_audit_class_type_map m
        on f.class_type=m.class_type
    order by f.event_time

     
    参照ドキュメント:
    SQL Server Audit (Database Engine)