다음을 통해 공유


SQL Server 감사 기록

적용 대상:SQL Server

SQL Server 감사 기능을 통해 서버 수준 및 데이터베이스 수준의 이벤트 그룹 및 이벤트를 감사할 수 있습니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요. SQL Server.

감사는 감사 대상에 기록되는 0개 이상의 감사 작업 항목으로 구성됩니다. 이진 파일, Windows 애플리케이션 이벤트 로그 또는 Windows 보안 이벤트 로그가 감사 대상이 될 수 있습니다. 대상에 전달된 레코드에는 다음 표에 설명된 요소가 포함될 수 있습니다.

열 이름 설명 Type 항상 사용 가능
event_time 감사 가능한 작업이 발생한 날짜 및 시간입니다. datetime2
sequence_number 너무 커서 감사에 대한 쓰기 버퍼에 맞지 않는 단일 감사 레코드 내의 레코드 시퀀스를 추적합니다. int
action_id 동작의 ID입니다.

팁: action_id 조건자로 사용하려면 문자열에서 숫자 값으로 변환해야 합니다. 자세한 내용은 action_id/class_type 조건자에서 SQL Server 감사 필터링을 참조하세요.
varchar(4)
succeeded 이벤트를 트리거한 작업이 성공했는지 여부를 나타냅니다. 로그인 이벤트 이외의 모든 이벤트에 대해 이 작업은 작업이 아닌 권한 검사 성공 또는 실패 여부만 보고합니다.
- 1 = 성공
- 0 = 실패
bit
permission_bitmask 일부 작업에서 이는 부여, 거부 또는 취소된 권한입니다. varbinary(16) 아니요
is_column_permission 열 수준 사용 권한인지 여부를 나타내는 플래그입니다. permission_bitmask = 0이면 0을 반환합니다.
- 1 = True
- 0 = False
bit 아니요
session_id 이벤트가 발생한 세션의 ID입니다. smallint
server_principal_id 동작을 수행한 로그인 컨텍스트의 ID입니다. int
database_principal_id 작업을 수행한 데이터베이스 사용자 컨텍스트의 ID입니다. 적용되지 않으면 0을 반환합니다. 예를 들어 서버 작업입니다. int 아니요
target_server_principal_id GRANT/DENY/REVOKE 작업이 수행되는 서버 보안 주체입니다. 해당되지 않는 경우 0을 반환합니다. int
target_database_principal_id GRANT/DENY/REVOKE 작업이 수행되는 데이터베이스 보안 주체입니다. 해당되지 않는 경우 0을 반환합니다. int 아니요
object_id 감사가 발생한 엔터티의 ID입니다. 여기에는 다음이 포함됩니다.
서버 개체
databases
데이터베이스 개체
스키마 개체
엔터티가 서버 자체이거나 개체 수준에서 감사가 수행되지 않는 경우 0을 반환합니다. 예를 들어 인증입니다.
int 아니요
class_type 감사가 수행되는 감사 가능한 엔터티의 유형입니다. varchar(2)
session_server_principal_name 세션에 대한 서버 보안 주체입니다. sysname
server_principal_name 현재 로그인입니다. sysname
server_principal_sid 현재 로그인 SID입니다. varbinary(85)
database_principal_name 현재 사용자입니다. sysname 아니요
target_server_principal_name 작업의 대상 로그인입니다. 해당되지 않는 경우 NULL을 반환합니다. sysname 아니요
target_server_principal_sid 대상 로그인의 SID입니다. 해당되지 않는 경우 NULL을 반환합니다. varbinary(85) 아니요
target_database_principal_name 작업의 대상 사용자입니다. 해당되지 않는 경우 NULL을 반환합니다. sysname 아니요
server_instance_name 감사가 수행된 서버 인스턴스의 이름입니다. 표준 서버\인스턴스 형식이 사용됩니다. sysname
database_name 작업이 수행된 데이터베이스 컨텍스트입니다. Nullable입니다. 서버 수준에서 발생하는 감사에 대해 NULL을 반환합니다. sysname 아니요
schema_name 동작이 수행된 스키마 컨텍스트입니다. sysname 아니요
object_name 감사가 수행된 대상 엔터티의 이름입니다. 여기에는 다음이 포함됩니다.
서버 개체
databases
데이터베이스 개체
스키마 개체
Nullable입니다. 엔터티가 서버 자체이거나 개체 수준에서 감사가 수행되지 않는 경우 NULL을 반환합니다. 예를 들어 인증입니다.
sysname 아니요
statement TSQL 문(있는 경우)입니다. 해당되지 않는 경우 NULL을 반환합니다. nvarchar(4000) 아니요
additional_information 단일 이벤트에만 적용되는 고유 정보는 XML로 반환됩니다. 감사 가능한 몇 가지 작업에는 이러한 종류의 정보가 포함됩니다.

TSQL 스택이 연결된 작업의 경우 한 수준의 TSQL 스택이 XML 형식으로 표시됩니다. XML 형식은 다음과 같습니다.
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
프레임 nest_level 프레임의 현재 중첩 수준을 나타냅니다. 모듈 이름은 3부 형식(database_name, schema_name 및 object_name)으로 표시됩니다. 모듈 이름은 구문 분석되어 , , '/''_x'와 같은 '\<'잘못된 xml 문자를 이스케이프'>'합니다. 로 이스케이프 _xHHHH\_됩니다. HHHH는 문자의 4자리 16진수 UCS-2 코드를 의미합니다.
Nullable입니다. 이벤트에서 보고한 추가 정보가 없으면 NULL을 반환합니다.
nvarchar(4000) 아니요
file_name 레코드가 제공된 감사 로그 파일의 경로 및 이름입니다. varchar(260)
audit_file_offset 적용 대상: SQL Server만 해당

감사 레코드가 포함된 파일의 버퍼 오프셋입니다.
bigint 아니요
user_defined_event_id 적용 대상: SQL Server 2012(11.x) 이상, Azure SQL Database 및 SQL Managed Instance

시스템 이벤트의 경우 NULL에 인수 sp_audit_write 로 전달된 사용자 정의 이벤트 ID(기본값) 및 사용자 정의 이벤트의 경우 0이 아닌 이벤트 ID입니다. 자세한 내용은 sp_audit_write(Transact-SQL)를 참조하세요.
smallint 아니요
user_defined_information 적용 대상: SQL Server 2012(11.x) 이상, Azure SQL Database 및 SQL Managed Instance

저장 프로시저를 사용하여 sp_audit_write 감사 로그에 기록하려는 추가 정보를 기록하는 데 사용됩니다.
nvarchar(4000) 아니요
audit_schema_version 항상 1 int
sequence_group_id 적용 대상: SQL Server만 해당

고유 식별자
varbinary(85) 아니요
transaction_id 적용 대상: SQL Server만(2016부터)

한 트랜잭션에서 여러 감사 이벤트를 식별하는 고유 식별자
bigint 아니요
client_ip 적용 대상: Azure SQL Database + SQL Server(2017년부터)

클라이언트 애플리케이션의 원본 IP
nvarchar(128) 아니요
application_name 적용 대상: Azure SQL Database + SQL Server(2017년부터)

감사 이벤트를 발생시킨 문을 실행한 클라이언트 애플리케이션의 이름
nvarchar(128) 아니요
duration_milliseconds 적용 대상: Azure SQL Database 및 SQL Managed Instance

쿼리 실행 기간(밀리초)
bigint 아니요
response_rows 적용 대상: Azure SQL Database 및 SQL Managed Instance

결과 집합에 반환된 행 수입니다.
bigint 아니요
affected_rows 적용 대상: Azure SQL Database만 해당

실행된 문의 영향을 받는 행 수입니다.
bigint 아니요
connection_id 적용 대상: Azure SQL Database 및 SQL Managed Instance

서버의 연결 ID
GUID 아니요
data_sensitivity_information 적용 대상: Azure SQL Database만 해당

데이터베이스의 분류된 열을 기반으로 감사된 쿼리에서 반환되는 정보 유형 및 민감도 레이블입니다. Azure SQL Database 데이터 검색 및 분류에 대해 자세히 알아보기
nvarchar(4000) 아니요
host_name 클라이언트 연결의 호스트 이름 nvarchar(128) 아니요
session_context 연결에 대한 세션 컨텍스트 정보 nvarchar(4000) 아니요
client_tls_version 클라이언트 연결에서 사용하는 TLS 버전 번호 int 아니요
client_tls_version_name 클라이언트 연결에서 사용하는 TLS 버전 이름 nvarchar(128) 아니요
database_transaction_id 데이터베이스 트랜잭션 식별자 bigint 아니요
ledger_start_sequence_number 적용 대상: SQL Server 2022 이상

원장 작업에 대한 원장 시작 시퀀스 번호
bigint 아니요
external_policy_permissions_checked 작업 중에 확인된 외부 정책 권한 nvarchar(4000) 아니요

설명

일부 작업은 작업에 적용할 수 없으므로 열 값을 채울 수 없습니다.

SQL Server 감사는 감사 레코드의 문자 필드에 대한 4,000자의 데이터를 저장합니다. 감사 가능한 작업에서 반환된 additional_information 값이 4,000자 이상을 반환하는 경우 sequence_number 열은 이 데이터를 기록하기 위한 단일 감사 작업에 대한 여러 레코드를 감사 보고서에 쓰는 데 사용됩니다. 프로세스는 다음과 같습니다.

  • 열은 4,000자로 나뉩니다.

  • SQL Server Audit은 일부 데이터와 함께 감사 레코드에 대한 첫 번째 행으로 기록됩니다. 다른 모든 필드는 각 행에 복제됩니다.

  • sequence_number 값이 증가합니다.

  • 이 프로세스는 모든 데이터가 기록될 때까지 반복됩니다.

sequence_number 값을 사용하여 행을 순차적으로 읽고 event_Time, action_idsession_id 열을 사용하여 데이터를 연결하여 작업을 식별할 수 있습니다.