보안 로그에 SQL Server 감사 이벤트 쓰기

적용 대상:SQL Server - Windows 전용

높은 보안 환경에서 Windows 보안 로그는 개체 액세스를 기록하는 이벤트를 작성하기에 적절한 위치입니다. 다른 감사 위치는 지원되지만 변조될 수 있습니다.

Windows 보안 로그에 SQL Server 서버 감사를 작성하기 위한 세 가지 주요 요구 사항이 있습니다.

  • 이벤트를 캡처하도록 감사 개체 액세스 설정을 구성해야 합니다. 감사 정책 도구(auditpol.exe)는 감사 개체 액세스 범주의 다양한 하위 정책 설정을 노출합니다. SQL Server에서 개체 액세스를 감사할 수 있도록 하려면 애플리케이션에서 생성된 설정을 구성합니다.

  • SQL Server 서비스가 실행 중인 계정에는 Windows 보안 로그에 쓸 보안 감사 생성 권한이 있어야 합니다. 기본적으로 LOCAL SERVICE 및 NETWORK SERVICE 계정에는 이 권한이 있습니다. SQL Server가 해당 계정 중 하나에서 실행되는 경우에는 이 단계가 필요하지 않습니다.

  • 레지스트리 하이브 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security에 SQL Server 서비스 계정에 대한 전체 권한을 제공합니다.

    Important

    레지스트리를 올바르게 편집하지 않으면 시스템을 심각하게 손상시킬 수 있습니다. 따라서 레지스트리를 변경하기 전에 컴퓨터의 중요한 데이터는 백업해 두는 것이 좋습니다.

제한 사항

  • 보안 로그에 대한 로컬 설정은 도메인 정책에 의해 덮어쓸 수 있습니다. 이 경우 도메인 정책은 하위 범주 설정(auditpol /get /subcategory:"application generated")을 덮어쓸 수 있습니다. SQL Server는 감사하려는 이벤트가 기록되지 않을 것임을 감지할 방법이 없습니다.

  • 감사 정책이 잘못 구성된 경우 이벤트가 손실될 수 있습니다. Windows 감사 정책은 Windows 보안 로그에 쓰도록 구성된 경우 SQL Server 감사에 영향을 줄 수 있습니다. 일반적으로 Windows 보안 로그는 이전 이벤트를 덮어쓰도록 설정됩니다. 이렇게 하면 가장 최근 이벤트가 유지됩니다. 그러나 Windows 보안 로그가 이전 이벤트를 덮어쓰도록 설정되지 않은 경우 보안 로그가 가득 차면 시스템에서 Windows 이벤트 1104(로그가 가득 찼습니다)를 실행합니다. 그러면 다음이 가능해집니다.

    • 더 이상 보안 이벤트가 기록되지 않습니다.

    • SQL Server에서 시스템이 보안 로그에 이벤트를 기록할 수 없다는 것을 감지할 수 없으므로 감사 이벤트가 손실될 수 있습니다.

    • 시스템 관리자가 보안 로그를 수정하면 로깅 동작이 정상으로 돌아옵니다.

  • SQL Server 감사 레코드는 일반 Windows 이벤트 로그 항목보다 훨씬 많은 데이터를 포함합니다. 또한 감사 사양의 구성에 따라 SQL Server는 짧은 기간(초당 수천 개)에 수천개의 감사 레코드를 생성할 수 있습니다. 부하가 높은 기간에 감사 레코드가 애플리케이션 로그 또는 보안 로그에 기록될 경우 이로 인해 불리한 조건이 발생할 수 있습니다.

    이러한 불리한 조건에는 다음이 포함될 수 있습니다.

    • 이벤트 로그의 빠른 순환(로그 파일이 크기 제한에 도달하면 이벤트를 매우 빠르게 덮어씁니다.)

    • Windows 이벤트 로그에서 읽은 다른 애플리케이션 또는 서비스는 부정적인 영향을 받을 수 있습니다.

    • 이벤트를 너무 빨리 덮어쓰기 때문에 관리자가 대상 이벤트 로그를 사용할 수 없습니다.

    관리자가 이러한 불리한 조건을 완화하기 위해 수행할 수 있는 단계는 다음과 같습니다.

    1. 대상 로그의 크기를 늘입니다(감사 사양이 매우 세부적인 경우 4GB가 불합리하지 않음).

    2. 감사되는 이벤트 수를 줄입니다.

    3. 이벤트 로그 대신 파일에 감사 레코드를 출력합니다.

사용 권한

이러한 설정을 구성하려면 Windows 관리자여야 합니다.

를 사용하여 Windows에서 감사 개체 액세스 설정 구성 auditpol

  1. 관리 권한이 있는 명령 프롬프트를 엽니다.

    1. 시작 메뉴에서 명령 프롬프트이동한 다음 관리자 권한으로 실행을 선택합니다.

    2. 사용자 계정 컨트롤 대화 상자가 열리면 계속을 선택합니다.

  2. 다음 문을 실행하여 SQL Server에서 감사를 사용하도록 설정합니다.

    auditpol /set /subcategory:"application generated" /success:enable /failure:enable
    
  3. 명령 프롬프트 창을 닫습니다.

를 사용하여 계정에 보안 감사 생성 권한 부여 secpol

  1. Windows 운영 체제의 경우 시작 메뉴에서 실행을 선택합니다.

  2. 입력 secpol.msc 한 다음 확인을 선택합니다. 사용자 액세스 제어 대화 상자가 나타나면 [계속]을 선택합니다.

  3. 로컬 보안 정책 도구에서 보안 설정 > 로컬 정책 > 사용자 권한 할당으로 이동합니다.

  4. 결과 창에서 보안 감사 생성을 엽니다.

  5. 로컬 보안 설정 탭에서 사용자 또는 그룹 추가를 선택합니다.

  6. 사용자, 컴퓨터 또는 그룹 선택 대화 상자에서 domain1\user1과 같은 사용자 계정의 이름을 입력한 다음 확인을 선택하거나 고급을 선택하고 계정을 검색합니다.

  7. 확인을 선택합니다.

  8. 보안 정책 도구를 닫습니다.

  9. SQL Server를 다시 시작하여 이 설정을 사용하도록 설정합니다.

를 사용하여 Windows에서 감사 개체 액세스 설정 구성 secpol

  1. 운영 체제가 Windows Vista 또는 Windows Server 2008보다 이전인 경우 시작 메뉴에서 실행을 선택합니다.

  2. 입력 secpol.msc 한 다음 확인을 선택합니다. 사용자 액세스 제어 대화 상자가 나타나면 [계속]을 선택합니다.

  3. 로컬 보안 정책 도구에서 보안 설정 > 로컬 정책 감사 정책>으로 이동합니다.

  4. 결과 창에서 Audit 개체 액세스를 엽니다.

  5. 로컬 보안 설정 탭의 감사 시도 영역에서 성공실패를 모두 선택합니다.

  6. 확인을 선택합니다.

  7. 보안 정책 도구를 닫습니다.

참고 항목