2016-10-11 6 views
0

두 개의 ASP.NET 웹 응용 프로그램이 있고 둘 다 사용자 지정 이벤트 이름을 응용 프로그램 로그에 기록하기 위해 EventLog.WriteEntry를 사용합니다. , 소스를 찾을 수 없습니다 :두 개의 웹 응용 프로그램, 이벤트 로그에 쓸 때 하나의 오류가 발생합니다.

[에 SecurityException - 내 프로그래밍 시스템에서 이것은 그렇지 않은 다른에서, 응용 프로그램 중 하나에서 작동하는 웹 서버에 모두

나는 보안 예외가 일부 또는 모든 이벤트 로그를 검색 할 수 없습니다. 액세스 할 수없는 로그 :. 이런 이유가 궁금

(내가보기로까지) 보안, 모두 웹 응용 프로그램은 동일하다. 보안 관점과의 유일한 차이점은 인증 모드입니다. 하나는 Forms (Eventlog.WriteEntry가 작동)을 사용하고 다른 하나는 Windows를 사용합니다 (여기서는 작동하지 않습니다). 이유가 될 수 있습니까?

"everyone"에게 응용 프로그램 로그에 대한 읽기 권한을 부여해도이 동작이 변경되지 않습니다.

+0

두 웹 앱이 동일한 앱 풀에서 실행됩니까? 그렇지 않다면 두 앱 풀 계정 모두 시스템/로그에 대한 동일한 액세스 수준을 유지합니까? –

+0

예, 모두 동일한 응용 프로그램 풀을 사용합니다. 그게 저를 혼란스럽게 만들었습니다. 그 이유는 기존 소스 이름을 선택했기 때문입니다. 아래 내 의견을 참조하십시오. – Jan

답변

0

이 문제가 본질적으로 유사한 Windows 인증 모드에 귀하의 문제 :

System.Security.SecurityException when writing to Event Log

System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.

예외가 웹 응용 프로그램은에 주어진 값을 사용하여 이벤트 로그에 쓰기 작업을하려고 할 때 발생한다 "소스 "는 해당 계정에 대한 권한이 부족하여 등록되지 않았습니다.

Windows 인증 모드를 사용하여 이벤트 로그 작업을 수행하는 경우 NETWORK SERVICE 계정에 대한 읽기 권한을 eventlog\Security 키에 부여해야합니다. 아래 단계는 다음과 같습니다.

  1. Regedit (레지스트리 편집기)를 엽니 다.
  2. HKLM\SYSTEM\CurrentControlSet\services\eventlog\Security
  3. 지점을 마우스 오른쪽 단추로 클릭하고 "사용 권한"을 선택하십시오.
  4. "추가"를 클릭하고 NETWORK SERVICE이라는 RDN을 찾거나 직접 입력 한 다음 계정을 추가하십시오.
  5. "네트워크 서비스 권한"에서 "읽기"또는 "모든 권한"을 선택하여 읽기 권한을 부여한 다음 변경 사항을 적용하십시오.
  6. IIS 호스트에서 응용 프로그램 풀을 다시 시작하십시오.

아직 충분히 아래 작업을하지 않을 경우

  1. IIS 관리자를 엽니 다. Application Pools 섹션의 ID 열을 확인하십시오. LocalSystem 또는 NetworkService이어야합니다.

  2. Identity를 변경해야 할 때 Windows 인증을 사용하여 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 고급 설정을 선택하십시오.

  3. 프로세스 모델에서 ApplicationPoolIdentityLocalSystem 또는 NetworkService으로 변경하고 편집 내용을 적용한 다음 응용 프로그램 풀을 다시 시작하십시오.

NB : NetworkService 정체성으로 인해 보안 취약점 이유로 LocalSystem 더 바람직하다.

또한 보안 고려 사항에 따라 <trust level="Full" />web.config 파일에 설정해보십시오.

위의 모든 해결 방법이 여전히 작동하지 않으면 개발 컴퓨터에 Visual Studio를 설정하거나 웹 서버에 배포 된 응용 프로그램을 관리자 권한으로 실행하여 Windows 인증 이벤트 로그에 대한 전체 액세스 권한을 얻으십시오. 결국, 적절한 보안 조치가 적용되었는지를 확인하는 것은 귀하의 선택에 달려 있습니다.

+0

Lol, 실수로 내 사용자 지정 소스의 기존 소스 이름을 선택했다는 것을 알게되었습니다. 그래서 한 응용 프로그램에서만 작동하고 다른 응용 프로그램에서는 작동하지 않습니다. 마지막으로 HKLM \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application 아래에 하위 키로 사용자 지정 원본 이름을 모두 만들었으며 응용 프로그램 풀 ID 또는 레지스트리 키의 사용 권한을 변경하지 않고 작동합니다. 그래도 도와 ​​줘서 고마워! – Jan