다음을 통해 공유


IIS 및 .NET Framework 보안

Windows Server AppFabric은 IIS의 강력한 보안 기능과 .NET Framework 버전 4를 사용하여 WAS(Windows Process Activation Service)에서 호스트되는 .NET Framework 4 서비스를 보안합니다. AppFabric 내에서 클라이언트와 서비스 간 보안을 올바르게 구성하는 방법을 이해하기 위해서는 IIS 및 .NET Framework의 보안 옵션을 이해하는 것이 중요합니다.

일반적으로, 사용 가능한 보안 옵션에는 여러 계층이 있으며 그 중에서 자신의 배포에 가장 적절한 것을 활용해야 합니다. 각 보안 계층은 특정 리소스를 보호하는 기능을 제공합니다. 예를 들어, IIS의 도구는 주로 사이트 및 응용 프로그램과 같은 IIS 아티팩트를 보호하는 수단을 제공하고, .NET Framework 4 보안 설정은 서비스, 끝점, 작업 등의 WCF/WF 서비스 개념에 적용할 수 있습니다.

보안에 대한 자세한 내용은 Windows Communication Foundation 보안(https://go.microsoft.com/fwlink/?LinkId=183157) 및 IIS 보안(https://go.microsoft.com/fwlink/?LinkId=183159)을 참조하십시오.

IIS 보안 및 AppFabric

IIS는 호출하는 클라이언트 쪽에서, 또한 .NET Framework 서비스가 모니터링 및 지속성 데이터 저장소에 액세스할 때 응용 프로그램에 대한 보안을 적용합니다. IIS는 다음 영역에 AppFabric 보안을 적용합니다.

  • IIS_IUSRS. 기본 IIS 설치에서 파일 및 폴더에 대한 런타임 액세스를 관리하는 데 사용되는 Windows 보안 그룹입니다.

    security보안 참고
    Windows 보안 그룹 IIS_IUSRS와 SQL Server 로그인 이름인 IIS_IUSRS를 혼동하지 마십시오. 둘은 서로 관련이 있지만 별개의 엔터티입니다.

  • 응용 프로그램 풀 ID. IIS는 런타임 시 모든 응용 프로그램 풀 ID를 IIS_IUSRS 그룹에 동적으로 삽입합니다. 이 보안 그룹에는 필요한 데이터 저장소, 특히 지속성 데이터 저장소에 액세스할 수 있는 권한이 부여됩니다. 자세한 내용은 SQL Server 보안을 참조하십시오.

AppFabric을 위한 .NET Framework 보안

AppFabric에 구성된 .NET Framework 서비스에 대한 보안을 언급할 때 실질적으로 다루는 내용은 WCF입니다. WCF는 WCF 클라이언트와 .NET Framework(WCF 또는 WF) 서비스 간의 통신에 사용되는 전송 프로토콜을 정의합니다. 이는 웹과 엔터프라이즈 전반에 걸쳐 통신하는 서비스 지향 응용 프로그램을 신속하게 빌드하기 위해 통일된 프로그래밍 모델을 제공하는 .NET Framework의 일부분입니다. WCF는 기존 보안 인프라와 통합할 뿐 아니라, 보안 SOAP 메시지를 사용하여 Windows만으로 이루어진 도메인 너머로 분산 보안을 확장합니다. 자세한 내용은 Windows Communication Foundation 보안(https://go.microsoft.com/fwlink/?LinkId=183157) 및 보안 아키텍처(https://go.microsoft.com/fwlink/?LinkId=183160)를 참조하십시오.

IIS와 .NET Framework 보안 결합

서비스로 보내지는 메시지가 전송 과정에서 보여지거나 수정되지 않도록 하기 위해서는 응용 프로그램의 무결성을 보장하는 것이 중요합니다. 이를 위해 암호화 및 서명을 사용할 수 있습니다. 그러나 메시지 전송은 완전한 확실성을 갖고 호출하는 클라이언트 응용 프로그램의 ID의 유효성을 검사하거나 인증할 수 있는 경우에만 확실히 안전합니다. AppFabric을 사용할 때는 IIS와 WCF가 함께 어떤 방식으로 안전한 메시지 전송을 보장하는지 이해해야 합니다.

웹 서비스 보안의 패턴과 규칙에 대한 자세한 내용은 패턴 & 규칙: 웹 서비스 보안 향상 가이드(https://go.microsoft.com/fwlink/?LinkId=183161)(영문)를 참조하십시오.

AppFabric에서의 IIS 인증

Windows에서의 WCF 전송 보안 메커니즘은 사용되는 후속 전송 및 바인딩에 의해 좌우됩니다. 예를 들어, WSHttpBinding 클래스를 사용할 때 전송은 HTTP이고 전송 보안에 대한 기본 메커니즘은 흔히 HTTPS로 알려져 있는 SSL(Secure Sockets Layer) over HTTP입니다. 메시지 보안은 WS-보안 사양을 사용하여 메시지 수준에서 메시지를 보호합니다. 이로 인해 (전송 수준 대신) SOAP 메시지 수준에서 기밀성, 무결성, 인증을 보장하도록 SOAP 메시징이 향상됩니다.

호스트되는 서비스 모드

호스트되는 서비스는 혼합 전송 모드 또는 ASP.NET 호환성 모드 두 가지로 실행할 수 있습니다. 모드는 응용 프로그램 수준 구성 플래그인 aspNetCompatibilityEnabled에 의해 제어됩니다. 이 플래그는 런타임 시에 정적 속성 ServiceHostingEnvironment.AspNetCompatibilityEnabled에서 가져올 수도 있습니다. aspNetCompatibilityEnabled 플래그는 기본적으로 false이므로 이 설정을 명시적으로 변경하지 않는 한 서비스가 혼합 전송 모드에서 실행됩니다.

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

혼합 전송 모드

혼합 전송 모드에서 HTTP 모듈은 파이프라인 BeginRequest의 초기 단계에서 요청을 가로챕니다. 요청이 들어오면 HTTP 모듈은 HttpContext.Current를 null로 설정하고 스레드가 가장된 경우 가장을 되돌립니다. 클라이언트 요청을 이 초기 단계에서 가로챌 경우 다른 HTTP 기능을 사용할 수 없도록 자동으로 설정되기 때문입니다. 따라서 혼합 전송 모드에서 서비스를 실행할 경우 다음 ASP.NET HTTP 관련 기능에 액세스할 수 없습니다.

  • HttpContext.Current. 이 모드에서는 항상 null입니다. WCF는 기능에 대한 대응 기능인 OperationContext.Current를 제공합니다.

  • 파일/URL 인증. 이 전송 계층 인증 기능은 대개 ASMX 서비스에 대한 Web.config 파일의 <system.web/authorization> 섹션을 통해 사용하도록 설정됩니다. 전송 인증은 WCF의 혼합 모드에서 사용하지 않도록 설정됩니다. 파일/URL 인증을 수행하기 위한 유일한 옵션은 WCF에서 구현되는 메시지 수준 인증을 사용하는 것입니다.

  • 가장. 가장을 사용하면 서비스가 서버에서 작업을 수행하는 동안 클라이언트로 동작하게 할 수 있습니다. ASP.NET 가장은 대개 ASMX 서비스에 대한 Web.config 파일의 <system.web/identity> 섹션을 통해 사용하도록 설정됩니다. 혼합 모드의 WCF 전송 계층에서는 사용할 수 없습니다.

  • 세션 상태. ASP.NET 세션 상태는 혼합 모드에서 지원되지 않습니다. WCF는 유연한 세션 상태 관리를 제공하는 안정적인 세션 구현을 자체적으로 보유하고 있습니다. WCF의 가장 큰 문제점은 응용 프로그램 재생 시 세션 상태가 유지되지 않고, 웹 가든 또는 웹 팜에서 작동하지 않는 것입니다. 이는 (사용하지 않도록 설정된) APS.NET 상태 서비스와 달리, 응용 프로그램 또는 프로세스 간에 상태를 공유하는 메커니즘이 없기 때문입니다.

  • 기타 HTTP 기능. 다른 HTTP 기능은 HttpContext.Current를 필요로 하며 혼합 모드에서 지원되지 않습니다. 예를 들면, ConfigurationManager.AppSettings에서는 정확한 결과를 가져올 것으로 기대하기 힘듭니다. <system.web/globalization>을 통한 전역화 기능은 사용할 수 없습니다.

혼합 전송 모드에서 실행될 때 .NET Framework 서비스로의 WCF 호출에서 IIS 인증은 무시됩니다. 이 때문에 기본 메커니즘으로서 WCF 보안이 WCF 클라이언트와 .NET Framework 서비스 간의 메시지 전송을 인증하고 보호할 수 있습니다. 혼합 전송 모드에서 모든 전송은 동일하게 처리됩니다. 서비스는 다수의 WCF 끝점을 가질 수 있으며 HTTP, net.tcp, net.pipe, net.msmq 등, 같거나 다른 전송에서 수신 대기할 수 있습니다. 그러나 혼합 전송 모드에서 실행 중인 호스트되는 서비스는 호스팅 환경, 응용 프로그램 구성, 배포를 제공하기 위해 여전히 ASP.NET과 IIS를 필요로 합니다.

ASP.NET 호환성 모드

AppFabric에서 호스트되는 응용 프로그램을 비롯하여 WAS에서 호스트되는 응용 프로그램에 IIS 인증을 사용하려면 ASP 호환성 모드 및 WCF 전송 보안을 사용해야 합니다.

  • IIS 관리자를 사용하여 서비스를 호스트하는 사이트 또는 응용 프로그램에 연결할 수 있는 Windows 사용자 및 Windows 그룹의 구성원을 제어합니다.

  • 웹 사이트를 IIS 가상 디렉터리로 변환한 후 두 가지 방식으로 보안 설정을 가상 디렉터리의 실제 경로로 설정합니다. 통과 인증의 경우 IIS가 가상 디렉터리의 실제 경로에 액세스할 때 인증된 사용자의 자격 증명을 Windows 파일 시스템에 전달하도록 지시합니다. 또는 .NET Framework 서비스를 호스트하는 프로세스에 대해 특정 사용자 ID를 지정하여 지정된 실제 경로의 모든 콘텐츠에 액세스하는 방식이 있습니다.

  • 적절한 IIS 인증 방법(익명, 기본, 양식, 다이제스트, Windows 인증, ASP.NET 폼 인증)을 선택하여 웹 사이트와 연결된 서비스로 들어오는 호출에 대한 보안을 제어합니다.

ASP 호환성 모드를 사용하도록 설정했는지 여부와 상관없이 다음 IIS 보안 기능을 활용할 수 있습니다.

  • SSL 설정이 64비트 또는 128비트 암호화를 사용하도록 구성, 들어오는 요청에 대한 클라이언트 인증서의 처리 방법 구성

  • 인증 규칙을 만들어 웹 사이트나 응용 프로그램에 대한 사용자 액세스 허용 또는 거부

  • IIS 로깅 기능을 사용하여 들어오는 요청의 보안 감사 로그 생성

  • 모니터링 및 지속성 데이터베이스에 보안 연결 문자열 편집

  • 서비스로의 클라이언트 호출에 대한 바인딩 설정 관리

  • 포함하는 웹 사이트 또는 포함된 서비스 응용 프로그램에 대한 파일 수준 실행 권한(모든 권한, 읽기 및 실행, 파일 내용 나열, 쓰기 등) 구성

  • 사용자 지정 응용 프로그램 풀의 기본 NetworkService ID를 특정 ID로 변경. SQL Server에서 통합 보안을 사용하는 경우 SQL Server을 호출하는 데 사용되는 ID입니다.

자세한 내용은 WCF 서비스 및 ASP.NET(https://go.microsoft.com/fwlink/?LinkId=183163)을 참조하십시오.

인증 참고 자료

응용 프로그램에 대해 IIS 인증을 사용하도록 설정하려면

  • ASP 호환성 모드 사용

  • 전송 보안 모드를 지원하는 HTTP 기반 WCF 바인딩 사용(basicHttpBinding, wsHttpBinding, wsFederationHttpBinding)

요구 사항이 충족되면 IIS 및 호스트되는 .NET Framework 서비스가 호환 IIS 및 WCF 보안 설정을 사용하도록 구성합니다. 응용 프로그램의 다양한 보안 설정이 모든 서비스의 보안 및 바인딩과 일치하도록 구성합니다. 다른 스키마를 지정할 경우 WCF 서비스 활성화 오류가 발생하게 됩니다. WCF에서 보안 모드(이 경우에는 전송 보안 모드)는 바인딩 요소에 지정됩니다. 보안 모드는 인증을 지원해야 하므로 선택한 WCF 보안 설정이 IIS 설정과 호환되는지 확인합니다. 전송은 바인딩을 위해 구성된 WCF 인증 모드에 매핑됩니다. 서비스는 바인딩 구성을 통해 인증 모드에 영향을 주고, WCF 클라이언트는 구성 파일에서 이에 따라야 합니다. 클라이언트가 서비스에 의해 제공되는 인증 스키마를 지원하려면 적절한 클라이언트 자격 증명 양식을 제공하도록 구성되어야 합니다.AppFabric은 이러한 유형의 변경이 가능한 사용자 인터페이스를 제공하지 않으므로 해당하는 Web.config 파일에서 수동으로 이를 수행해야 합니다.

security보안 참고
wsDualHttpBinding은 메시지 기반 보안만 제공하므로 서비스에 IIS 인증을 사용하는 경우에는 wsDualHttpBinding을 사용할 수 없습니다.

  2011-12-05