WCF(Windows Communication Foundation)를 사용하여 만든 애플리케이션은 감사 기능을 사용하여 보안 이벤트(성공, 실패 또는 둘 다)를 기록할 수 있습니다. 이벤트는 Windows 시스템 이벤트 로그에 기록되며 이벤트 뷰어를 사용하여 검사할 수 있습니다.
관리자는 감사를 사용하여 이미 발생했거나 진행 중인 공격을 검색할 수 있습니다. 또한 감사는 개발자가 보안 관련 문제를 디버깅하는 데 도움이 됩니다. 예를 들어, 정책 검사 또는 권한 부여 구성 오류로 인해 실수로 권한 있는 사용자의 액세스가 거부될 경우 개발자는 이벤트 로그를 검사하여 오류의 원인을 신속하게 찾아서 격리시킬 수 있습니다.
WCF 보안에 대한 자세한 내용은 보안 개요참조하세요. WCF 프로그래밍에 대한 자세한 내용은 기본 WCF 프로그래밍을 참조하세요.
감사 수준 및 동작
두 가지 수준의 보안 감사가 있습니다.
호출자에게 권한이 부여된 서비스 권한 부여 수준입니다.
WCF가 메시지 유효성을 확인하고 호출자를 인증하는 메시지 수준입니다.
성공 또는 실패에 대해 감사 레벨을 모두 확인할 수 있으며, 이는 감사 행동이라고도 합니다.
감사 로그 위치
감사 수준 및 동작을 결정하면 사용자(또는 관리자)가 감사 로그의 위치를 지정할 수 있습니다. 세 가지 선택 항목은 기본값, 애플리케이션 및 보안입니다. 기본값을 지정할 때 실제 로그는 사용 중인 시스템 및 시스템에서 보안 로그에 쓰기를 지원하는지 여부에 따라 달라집니다. 자세한 내용은 이 항목의 뒷부분에 있는 "운영 체제" 섹션을 참조하세요.
보안 로그에 쓰려면 필요한 권한 SeAuditPrivilege이 필요합니다. 기본적으로 로컬 시스템 및 네트워크 서비스 계정만 이 권한을 갖습니다. 보안 로그 함수를 관리하는 데는 read, delete 및 SeSecurityPrivilege가 필요합니다. 기본적으로 관리자만 이 권한을 갖습니다.
반면, 인증된 사용자는 애플리케이션 로그를 읽고 쓸 수 있습니다. Windows XP는 기본적으로 애플리케이션 로그에 감사 이벤트를 씁니다. 로그에는 인증된 모든 사용자에게 표시되는 개인 정보가 포함될 수도 있습니다.
감사 실패 억제
감사 중에 또 다른 옵션은 감사 실패를 표시하지 않을지 여부입니다. 기본적으로 감사 실패는 애플리케이션에 영향을 주지 않습니다. 그러나 필요한 경우 예외가 발생하도록 설정할 수 있습니다 false을 선택할 수 있습니다.
프로그래밍 검토
프로그래밍 방식으로 또는 구성을 통해 감사 동작을 지정할 수 있습니다.
감사 강좌
다음 표에서는 감사 동작을 프로그래밍하는 데 사용되는 클래스 및 속성에 대해 설명합니다.
| 클래스 | 설명 |
|---|---|
| ServiceSecurityAuditBehavior | 서비스 동작으로 감사하는 옵션을 설정할 수 있습니다. |
| AuditLogLocation | 쓸 로그를 지정하는 열거형입니다. 가능한 값은 Default, Application 및 Security입니다. 기본값을 선택하면 운영 체제에서 실제 로그 위치를 결정합니다. 이 항목의 뒷부분에 있는 "애플리케이션 또는 보안 이벤트 로그 선택" 섹션을 참조하세요. |
| MessageAuthenticationAuditLevel | 메시지 수준에서 감사되는 메시지 인증 이벤트의 유형을 지정합니다. 선택 항목은 None, FailureSuccess및 SuccessOrFailure. |
| ServiceAuthorizationAuditLevel | 서비스 수준에서 감사되는 서비스 권한 부여 이벤트의 유형을 지정합니다. 선택 항목은 None, FailureSuccess및 SuccessOrFailure. |
| SuppressAuditFailure | 감사가 실패할 때 클라이언트 요청에 어떤 일이 발생하는지 지정합니다. 예를 들어 서비스에서 보안 로그에 쓰려고 하지만 SeAuditPrivilege없는 경우입니다. 기본값 true 은 오류가 무시되고 클라이언트 요청이 정상적으로 처리됨을 나타냅니다. |
감사 이벤트를 기록하도록 애플리케이션을 설정하는 예제는 방법: 보안 이벤트 감사를 참조하세요.
구성 / 설정
구성을 사용하여 동작 아래에 serviceSecurityAudit<을> 추가하여 감사 동작을 <지정할 수도 있습니다>. 다음 코드와 같이 동작< 아래에> 요소를 추가해야 합니다.
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!-- auditLogLocation="Application" or "Security" -->
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
감사를 사용하도록 설정하고 auditLogLocation 지정하지 않은 경우 기본 로그 이름은 보안 로그에 쓰기를 지원하는 플랫폼의 "보안" 로그이고, 그렇지 않으면 "애플리케이션" 로그입니다. Windows Server 2003 및 Windows Vista 운영 체제만 보안 로그에 쓰기를 지원합니다. 자세한 내용은 이 항목의 뒷부분에 있는 "운영 체제" 섹션을 참조하세요.
보안 고려사항
악의적인 사용자가 감사가 사용하도록 설정되어 있음을 알고 있는 경우 해당 공격자는 감사 항목을 작성하게 하는 잘못된 메시지를 보낼 수 있습니다. 감사 로그가 이러한 방식으로 채워지면 감사 시스템이 실패합니다. 이를 완화하려면 SuppressAuditFailure 속성을 true로 설정하고 이벤트 뷰어의 속성을 사용하여 감사 동작을 제어합니다.
Windows XP의 애플리케이션 로그에 기록된 감사 이벤트는 인증된 모든 사용자에게 표시됩니다.
애플리케이션 및 보안 이벤트 로그 중에서 선택
다음 표에서는 애플리케이션 또는 보안 이벤트 로그에 로그인할지 여부를 선택하는 데 도움이 되는 정보를 제공합니다.
운영 체제
| 시스템 | 애플리케이션 로그 | 보안 로그 |
|---|---|---|
| Windows XP SP2 이상 | 지원됨 | 지원되지 않음 |
| Windows Server 2003 SP1 및 Windows Vista | 지원됨 | 스레드는 SeAuditPrivilege을(를) 반드시 가져야 합니다. |
기타 요소
다음 표에서는 운영 체제 외에도 로깅 사용을 제어하는 다른 설정에 대해 설명합니다.
| 요인 | 애플리케이션 로그 | 보안 로그 |
|---|---|---|
| 감사 정책 관리 | 적용할 수 없습니다. | 구성과 함께 보안 로그는 LSA(로컬 보안 기관) 정책에 의해 제어됩니다. "개체 액세스 감사" 범주도 사용하도록 설정해야 합니다. |
| 기본 사용자 환경 | 인증된 모든 사용자는 애플리케이션 로그에 쓸 수 있으므로 애플리케이션 프로세스에 추가 권한 단계가 필요하지 않습니다. | 애플리케이션 프로세스(컨텍스트)에는 SeAuditPrivilege가 필요합니다. |
참고하십시오
- ServiceSecurityAuditBehavior
- AuditLogLocation
- 보안 개요
- 기본 WCF 프로그래밍
- 방법: 보안 이벤트 감사
- <서비스보안감사>
- <동작>
- Windows Server App Fabric의 보안 모델