서버 감사 및 서버 감사 사양 만들기

적용 대상:SQL Server

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 서버 감사 및 서버 감사 사양을 만드는 방법을 설명합니다. SQL Server 또는 SQL Server 데이터베이스의 인스턴스를 감사하려면 시스템에서 발생하는 이벤트를 추적하고 로깅해야 합니다. SQL Server Audit 개체는 사용자가 모니터링하려는 서버 또는 데이터베이스 수준 동작 및 동작 그룹에 대한 하나의 인스턴스를 수집합니다. 감사는 SQL Server 인스턴스 수준에 있습니다. SQL Server 인스턴스당 여러 감사를 가질 수 있습니다. 서버 감사 사양 개체는 감사에 속합니다. 둘 다 SQL Server 인스턴스 범위에서 만들어지므로 감사당 하나의 서버 감사 사양을 만들 수 있습니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.

항목 내용

시작하기 전에

제한 사항

  • 감사가 있어야 이에 대한 서버 감사 사양을 만들 수 있습니다. 서버 감사 사양을 처음 만들 때는 사용할 수 없는 상태입니다.

  • CREATE SERVER AUDIT 문은 트랜잭션 범위 내에 있습니다. 트랜잭션이 롤백되면 이 문도 롤백됩니다.

보안

사용 권한

  • 서버 감사를 생성, 변경 또는 삭제하려면 보안 주체에게 ALTER ANY SERVER AUDIT 또는 CONTROL SERVER 권한이 있어야 합니다.

  • ALTER ANY SERVER AUDIT 권한이 있는 사용자는 서버 감사 사양을 만들어 모든 감사에 바인딩할 수 있습니다.

  • 서버 감사 사양을 만든 후에는 CONTROL SERVER 또는 ALTER ANY SERVER AUDIT 권한이 있는 보안 주체, sysadmin 계정 또는 감사에 대한 명시적 액세스 권한이 있는 보안 주체에서 볼 수 있습니다.

SQL Server Management Studio 사용

서버 감사를 만들려면

  1. 개체 탐색기에서 보안 폴더를 확장합니다.

  2. Audits 폴더를 마우스 오른쪽 단추로 클릭하고 새 감사...를 선택합니다.

    감사 만들기 대화 상자의 일반 페이지에는 다음과 같은 옵션이 제공됩니다.

    감사 이름
    감사의 이름입니다. 새 감사를 만들 때 자동으로 생성되지만 편집할 수 있습니다.

    큐 지연(밀리초)
    감사 작업을 강제로 처리하기 전에 경과할 수 있는 시간(밀리초)을 지정합니다. 값이 0인 경우 동기 배달을 나타냅니다. 기본 최소값은 1000(1초)입니다. 최대값은 2,147,483,647로 2,147,483.647초 또는 24일, 20시간, 31분, 23.647초에 해당합니다.

    감사 로그 오류 발생:
    계속
    SQL Server 작업을 계속합니다. 감사 레코드는 보존되지 않습니다. 감사는 계속해서 이벤트를 기록하려고 시도하며 실패 조건이 해결되면 다시 시작됩니다. 계속 옵션을 선택하면 감사되지 않은 작업이 허용되어 보안 정책을 위반할 수 있습니다. 전체 감사를 유지하는 것보다 데이터베이스 엔진의 작업을 계속하는 것이 더 중요할 때 이 옵션을 선택합니다. 기본적으로 이 옵션이 선택되어 있습니다.

    서버 종료
    대상에 쓰는 서버 인스턴스가 감사 대상에 데이터를 쓸 수 없는 경우 서버를 강제로 종료합니다. 이를 실행하는 로그인에는 SHUTDOWN 권한이 있어야 합니다. 로그온에 이 권한이 없으면 이 함수가 실패하고 오류 메시지가 발생합니다. 감사된 이벤트가 발생하지 않습니다. 감사 실패로 인해 시스템 무결성 또는 보안이 손상될 수 있는 경우 이 옵션을 선택하세요.

    실패 작업
    SQL Server 감사에서 감사 로그에 쓸 수 없는 경우 이 옵션을 사용하면 감사된 이벤트를 발생시킬 경우 데이터베이스 작업이 실패합니다. 감사된 이벤트가 발생하지 않습니다. 감사된 이벤트를 발생시키지 않는 작업은 계속할 수 있습니다. 감사는 계속해서 이벤트를 기록하려고 시도하며 실패 조건이 해결되면 다시 시작됩니다. 데이터베이스 엔진에 대한 전체 액세스보다 전체 감사를 유지하는 것이 더 중요할 때 이 옵션을 선택합니다.

    Important

    감사가 실패한 상태여도 관리자 전용 연결에서는 감사된 이벤트를 계속 수행할 수 있습니다.

    감사 대상 목록
    데이터를 감사할 대상을 지정합니다. 사용 가능한 옵션은 이진 파일, Windows 애플리케이션 로그 또는 Windows 보안 로그입니다. SQL Server 가 Windows 보안 로그에 쓸 수 없습니다. 자세한 내용은 보안 로그에 SQL Server Audit 이벤트 쓰기를 참조하세요.

    파일 경로
    감사 대상 이 파일인 경우 감사 데이터를 쓸 폴더의 위치를 지정합니다.

    줄임표(...)
    폴더 찾기 -server_name 대화 상자를 열어 파일 경로를 지정하거나 감사 파일이 기록되는 폴더를 만듭니다.

    감사 파일의 최대 제한:
    최대 롤오버 파일
    감사 파일의 최대 수에 도달하면 가장 오래된 감사 파일을 새 파일 내용으로 덮어쓰도록 지정합니다.

    최대 파일
    최대 감사 파일 수에 도달하면 추가 감사 이벤트가 생성되는 모든 작업이 오류와 함께 실패하도록 지정합니다.

    무제한 확인란
    최대 롤오버 파일 아래의 무제한 확인란이 선택된 경우 만들려는 감사 파일 수에 대한 제한이 없습니다. 무제한 확인란은 기본적으로 선택되며 최대 롤오버 파일과 최대 파일 선택 모두에 적용됩니다.

    파일 수 상자
    만들 감사 파일 수를 최대 2,147,483,647개까지 지정합니다. 이 옵션은 무제한을 선택 취소한 경우에만 사용할 수 있습니다.

    최대 파일 크기
    MB(메가바이트), GB(기가바이트) 또는 TB(테라바이트) 단위로 감사 파일의 최대 크기를 지정합니다. 최대 2,147,483,647TB의 숫자를 지정할 수 있습니다. 무제한 확인란을 선택하면 파일 크기에 대한 제한이 없습니다. 무제한 확인란은 기본적으로 선택되어 있습니다.

    디스크 공간 예약 확인란
    디스크에 공간이 지정된 최대 파일 크기와 같도록 미리 할당되도록 지정합니다. 이 설정은 최대 파일 크기 아래무제한 확인란을 선택하지 않은 경우에만 사용할 수 있습니다. 이 확인란은 기본적으로 선택되어 있지 않습니다.

  3. 또는 필터 페이지에서 조건자를 입력하거나 WHERE 절을 서버 감사에 입력하여 일반 페이지에서 사용할 수 없는 추가 옵션을 지정할 수 있습니다. 조건자를 괄호로 묶습니다. 예: (object_name = 'EmployeesTable')

  4. 옵션 선택을 마쳤으면 [확인]을 클릭합니다.

서버 감사 사양을 만들려면

  1. 개체 탐색기에서 더하기 기호를 클릭하여 보안 폴더를 확장합니다.

  2. 서버 감사 사양 폴더를 마우스 오른쪽 단추로 클릭하고 새 서버 감사 사양...을 선택합니다.

    다음 옵션은 서버 감사 사양 만들기 대화 상자에서 사용할 수 있습니다.

    입력
    서버 감사 사양의 이름입니다. 새 서버 감사 사양을 만들 때 자동 생성되지만 편집할 수 있습니다.

    감사
    기존 서버 감사의 이름입니다. 감사 이름을 입력하거나 목록에서 선택합니다.

    감사 작업 유형
    캡처할 서버 수준 감사 작업 그룹 및 감사 작업을 지정합니다. 서버 수준 감사 작업 그룹 및 감사 작업 목록 및 해당 그룹에 포함된 이벤트에 대한 설명은 SQL Server 감사 작업 그룹 및 작업을 참조 하세요.

    개체 스키마
    지정된 개체 이름에 대한 스키마를 표시합니다.

    개체 이름
    감사할 개체의 이름입니다. 이 이름은 감사 동작에만 사용할 수 있으며 감사 그룹에는 적용되지 않습니다.

    줄임표(...)
    개체 선택 대화 상자를 열어 지정된 감사 작업 유형에 따라 사용 가능한 개체를 찾아 선택합니다.

    보안 주체 이름
    감사 중인 개체에 대한 감사 필터링의 기준이 되는 계정입니다.

    줄임표(...)
    개체 선택 대화 상자를 열어 지정된 개체 이름을 기준으로 사용 가능한 개체를 찾아 선택합니다.

  3. 완료되면 확인을 클릭합니다.

Transact-SQL 사용

서버 감사를 만들려면

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    -- Creates a server audit called "HIPAA_Audit" with a binary file as the target and no options.  
    CREATE SERVER AUDIT HIPAA_Audit  
        TO FILE ( FILEPATH ='E:\SQLAudit\' );  
    

참고 항목

UNC 경로를 감사 파일 대상으로 사용할 수 있지만 주의해야 합니다. 해당 파일 공유에 대한 네트워크 대기 시간이 있는 경우 스레드가 계속하기 전에 감사 쓰기가 완료될 때까지 대기하므로 SQL Server에서 성능이 저하될 수 있습니다. SQL Server 오류 로그에서 17894와 같은 다양한 오류 메시지가 나타날 수 있습니다.

2020-02-07 12:21:35.100 디스패처 풀 'XE 엔진 주 디스패처 풀' 작업자 0x00000058E7300000 디스패처 풀의 서버 디스패처(0x7954)가 노드 0에서 생성되지 않는 것으로 나타납니다.

서버 감사 사양을 만들려면

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    /*Creates a server audit specification called "HIPAA_Audit_Specification" that audits failed logins for the SQL Server audit "HIPAA_Audit" created above.  
    */  
    
    CREATE SERVER AUDIT SPECIFICATION HIPAA_Audit_Specification  
    FOR SERVER AUDIT HIPAA_Audit  
        ADD (FAILED_LOGIN_GROUP);  
    GO  
    -- Enables the audit.   
    
    ALTER SERVER AUDIT HIPAA_Audit  
    WITH (STATE = ON);  
    GO  
    

자세한 내용은 CREATE SERVER AUDIT(Transact-SQL)CREATE SERVER AUDIT SPECIFICATION(Transact-SQL)을 참조하세요.