Windows Server 2003이나 Windows XP 시절에는 이벤트 뷰어(Event Viewer)의 로그 필터에 원하는 사용자 계정 이름만 입력하면 해당 사용자와 관련된 이벤트를 손쉽게 조회할 수 있었습니다. 그러나 Windows Server 2008 / Windows 7부터는 이 간단한 방법이 더 이상 작동하지 않습니다.

사용자(User) 열이 사라진 이유
Windows Server 2008부터는 기본 이벤트 로그 보기 화면에 사용자(User) 필드가 아예 존재하지 않습니다. 일단 보기(View) → 열 추가/제거(Add/Remove Columns) 메뉴를 통해 사용자 열을 추가해 보겠습니다.

그러면 로그 목록에 사용자 열이 나타나긴 하지만, 정작 이벤트를 발생시킨 실제 계정 이름은 표시되지 않고 N/A로만 보입니다. Windows Vista 이후부터 계정 관련 정보가 이벤트 본문 설명 안으로 옮겨졌기 때문입니다. 아래 예시처럼 계정 정보는 이벤트 상세 내용의 보안 ID(Security ID)와 계정 이름(Account Name) 값에 포함되어 있습니다.

XPath XML 쿼리로 이벤트 필터링하기
Windows Server 2008 이상에서 특정 사용자 이름(또는 기타 이벤트 속성)으로 로그를 필터링하려면 XML 탭에서 XPath 쿼리를 직접 수정하는 방법을 사용해야 합니다.
참고: XPath를 활용해 로그에서 특정 이벤트를 찾는 방법은 이전에 '다른 작업 완료 후 예약 작업 실행하기' 글에서도 다룬 바 있습니다.
1. 현재 로그 필터 열기
이벤트 뷰어에서 원하는 로그(여기서는 보안(Security) 로그)를 연 뒤, 마우스 오른쪽 버튼을 클릭해 컨텍스트 메뉴에서 현재 로그 필터링(Filter Current Log…)을 선택합니다.
2. XML 탭에서 쿼리 직접 편집
필터 창에서 XML 탭으로 이동한 후, 쿼리 수동 편집(Edit query manually) 체크박스를 선택합니다.

아래 코드를 복사해서 붙여넣으면 로그에서 특정 사용자의 모든 이벤트를 조회할 수 있습니다. username 부분을 실제 조회하려는 계정 이름으로 바꿔 주세요.
<QueryList><Query Id="0" Path="Security"><Select Path="Security">* [EventData[Data[@Name='subjectUsername']='username']]</Select></Query></QueryList>

3. 필터 적용 및 결과 확인
필터 변경 사항을 저장한 뒤 로그를 확인하면, 지정한 계정과 관련된 이벤트만 목록에 남게 됩니다.

이벤트 ID와 함께 조건 추가하기
예를 들어 특정 사용자의 이벤트 중에서도 이벤트 ID 4624(계정 로그온 성공)와 4625(계정 로그온 실패)만 추가로 필터링하고 싶다면, XPath 필터를 아래와 같이 작성하면 됩니다.
<QueryList><Query Id="0" Path="Security"><Select Path="Security">*[System[(EventID=4624 or EventID=4625)]]</Select><Select Path="Security">* [EventData[Data[@Name='subjectUsername']='username']]</Select></Query></QueryList>
이처럼 XPath 쿼리를 활용하면 Windows Server 2008 이상 환경에서도 특정 사용자의 로그온 성공/실패 기록을 정밀하게 추적할 수 있습니다. 보안 감사나 침해 사고 분석 시 매우 유용하게 활용할 수 있는 방법이니 참고하시기 바랍니다.