다음을 통해 공유


Windows Communication Foundation 보안 개요

WCF(Windows Communication Foundation)는 SOAP 메시지 기반 분산 프로그래밍 플랫폼이며 클라이언트와 서비스 간의 메시지 보호는 데이터를 보호하는 데 필수적입니다. WCF는 기존 보안 인프라와 SOAP 메시지에 대해 인식된 보안 표준을 기반으로 보안 메시지를 교환하기 위한 다용도 및 상호 운용 가능한 플랫폼을 제공합니다.

WCF는 HTTPS, Windows 통합 보안 또는 사용자 이름 및 암호와 같은 기존 기술을 사용하여 사용자를 인증하는 안전한 분산 애플리케이션을 빌드한 경우 익숙한 개념을 사용합니다. WCF는 기존 보안 인프라와 통합될 뿐만 아니라 보안 SOAP 메시지를 사용하여 Windows 전용 도메인을 넘어 분산 보안을 확장합니다. WCF는 기존 프로토콜 외에도 SOAP를 프로토콜로 사용할 경우의 주요 장점이 있는 기존 보안 메커니즘의 구현을 고려합니다. 예를 들어 사용자 이름, 암호 또는 X.509 인증서와 같은 클라이언트 또는 서비스를 식별하는 자격 증명에는 상호 운용 가능한 XML 기반 SOAP 프로필이 있습니다. 이러한 프로필을 사용하면 XML 디지털 서명 및 XML 암호화와 같은 개방형 사양을 활용하여 메시지가 안전하게 교환됩니다. 사양 목록은 System-Provided 상호 운용성 바인딩에서 지원하는 웹 서비스 프로토콜을 참조하세요.

또 다른 병렬은 안전한 분산 애플리케이션을 가능하게 하는 Windows 플랫폼의 COM(구성 요소 개체 모델)입니다. COM에는 구성 요소 간에 보안 컨텍스트가 전달될 수 있는 포괄적인 보안 메커니즘이 있습니다. 이 메커니즘은 무결성, 기밀성 및 인증을 적용합니다. 그러나 COM은 WCF처럼 플랫폼 간 보안 메시징을 사용하도록 설정하지 않습니다. WCF를 사용하여 인터넷을 통해 Windows 도메인에 걸쳐 있는 서비스 및 클라이언트를 빌드할 수 있습니다. WCF의 상호 운용 가능한 메시지는 정보의 보안에 자신감을 가질 수 있도록 하는 동적 비즈니스 기반 서비스를 빌드하는 데 필수적입니다.

Windows Communication Foundation 보안 혜택

WCF는 SOAP 메시지를 기반으로 하는 분산 프로그래밍 플랫폼입니다. WCF를 사용하여 서비스 및 서비스 클라이언트로 작동하는 애플리케이션을 만들어 무제한의 다른 서비스 및 클라이언트에서 메시지를 만들고 처리할 수 있습니다. 이러한 분산 애플리케이션에서 메시지는 노드에서 노드로, 방화벽을 통해 인터넷으로, 그리고 수많은 SOAP 중개자를 통해 흐를 수 있습니다. 이렇게 하면 다양한 메시지 보안 위협이 발생합니다. 다음 예제에서는 엔터티 간에 메시지를 교환할 때 WCF 보안이 완화할 수 있는 몇 가지 일반적인 위협을 보여 줍니다.

  • 중요한 정보를 얻기 위한 네트워크 트래픽 관찰 예를 들어 온라인 뱅킹 시나리오에서 클라이언트는 한 계정에서 다른 계정으로 자금 이체를 요청합니다. 악의적인 사용자가 메시지를 가로채고 계정 번호와 암호가 있으면 나중에 손상된 계정에서 자금 이체를 수행합니다.

  • 클라이언트를 인식하지 않고 서비스 역할을 하는 불량 엔터티입니다. 이 시나리오에서 악의적인 사용자(악성 사용자)는 온라인 서비스 역할을 하며 클라이언트의 메시지를 가로채 중요한 정보를 얻습니다. 그런 다음 도적은 도난당한 데이터를 사용하여 손상된 계정에서 자금을 이체합니다. 이 공격은 피싱 공격이라고도 알려져 있습니다.

  • 메시지를 변경하여 호출자가 의도한 것과 다른 결과를 얻습니다. 예를 들어, 예금이 만들어지는 계정 번호를 변경하면 자금이 불량 계좌로 갈 수 있습니다.

  • 성가신 해커가 동일한 구매 주문을 반복적으로 실행합니다. 예를 들어 온라인 서점은 수백 개의 주문을 받고 주문하지 않은 고객에게 책을 보냅니다.

  • 서비스에서 클라이언트를 인증할 수 없습니다. 이 경우 서비스는 적절한 사용자가 트랜잭션을 수행했음을 보장할 수 없습니다.

요약하면 전송 보안은 다음과 같은 보증을 제공합니다.

  • 서비스 엔드포인트(응답자) 인증.

  • 클라이언트 주체(초기자) 인증.

  • 메시지 무결성.

  • 메시지 기밀성.

  • 재생 탐지

기존 보안 인프라와 통합

웹 서비스 배포에는 SSL(Secure Sockets Layer) 또는 Kerberos 프로토콜과 같은 기존 보안 솔루션이 있는 경우가 많습니다. 일부는 Active Directory를 사용하는 Windows 도메인과 같이 이미 배포된 보안 인프라를 활용합니다. 최신 기술을 평가하고 채택하는 동안 이러한 기존 기술과 통합해야 하는 경우가 많습니다.

WCF 보안은 기존 전송 보안 모델과 통합되며 SOAP 메시지 보안을 기반으로 하는 최신 전송 보안 모델에 기존 인프라를 활용할 수 있습니다.

기존 인증 모델과 통합

통신 보안 모델의 중요한 부분은 통신에서 엔터티를 식별하고 인증하는 기능입니다. 통신에서 이러한 주체들은 "디지털 ID" 또는 자격 증명을 사용하여 통신 상대방과 자신의 신원을 인증합니다. 분산 통신 플랫폼이 발전함에 따라 다양한 자격 증명 인증 및 관련 보안 모델이 구현되었습니다. 예를 들어 인터넷에서 사용자 이름과 암호를 사용하여 사용자를 식별하는 것이 일반적입니다. 인트라넷에서 Kerberos 도메인 컨트롤러를 사용하여 사용자 및 서비스 인증을 백업하는 것이 일반화되고 있습니다. 두 비즈니스 파트너 간의 특정 시나리오에서는 인증서를 사용하여 파트너를 상호 인증할 수 있습니다.

따라서 동일한 서비스가 내부 회사 고객뿐만 아니라 외부 파트너 또는 인터넷 고객에게 노출될 수 있는 웹 서비스의 세계에서 인프라가 이러한 기존 보안 인증 모델과의 통합을 제공하는 것이 중요합니다. WCF 보안은 다음을 비롯한 다양한 자격 증명 유형(인증 모델)을 지원합니다.

  • 익명 호출자입니다.

  • 사용자 이름 클라이언트 자격 증명입니다.

  • 인증서 클라이언트 자격 증명.

  • Windows(Kerberos 프로토콜 및 NT LanMan [NTLM])

표준 및 상호 운용성

대규모 기존 배포가 있는 환경에서는 동질성이 거의 없습니다. 분산 컴퓨팅/통신 플랫폼은 다양한 공급업체가 제공하는 기술과 상호 운용해야 합니다. 마찬가지로 보안도 상호 운용 가능해야 합니다.

상호 운용 가능한 보안 시스템을 사용하도록 설정하기 위해 웹 서비스 업계에서 활발히 활동하는 회사는 다양한 표준을 작성했습니다. 특히 보안과 관련해서 몇 가지 주목할 만한 표준들이 제안되었습니다. WS-Security: SOAP 메시지 보안(OASIS 표준 기구에서 승인한 것으로, 이전 이름은 WS-Security였습니다), WS-Trust, WS-SecureConversation 및 WS-SecurityPolicy.

WCF는 다양한 상호 운용성 시나리오를 지원합니다. 클래스는 BasicHttpBinding BSP(기본 보안 프로필)를 대상으로 하며 WSHttpBinding 클래스는 WS-Security 1.1 및 WS-SecureConversation과 같은 최신 보안 표준을 대상으로 합니다. WCF 보안은 이러한 표준을 준수하여 Microsoft Windows 이외의 운영 체제 및 플랫폼에서 호스트되는 웹 서비스와 상호 운용하고 통합할 수 있습니다.

WCF 보안 기능 영역

WCF 보안은 전송 보안, 액세스 제어 및 감사의 세 가지 기능 영역으로 나뉩니다. 다음 섹션에서는 이러한 영역에 대해 간략하게 설명하고 자세한 내용을 위한 링크를 제공합니다.

전송 보안

전송 보안에는 무결성, 기밀성 및 인증이라는 세 가지 주요 보안 기능이 포함됩니다. 무결성 은 메시지가 변조되었는지 여부를 감지하는 기능입니다. 기밀성은 의도한 받는 사람이 아닌 다른 사람이 메시지를 읽을 수 없도록 유지하는 기능입니다. 이 작업은 암호화를 통해 수행됩니다. 인증 은 클레임된 ID를 확인하는 기능입니다. 이러한 세 가지 함수를 함께 사용하면 메시지가 한 지점에서 다른 지점으로 안전하게 도착할 수 있습니다.

전송 및 메시지 보안 모드

WCF에서 전송 보안을 구현하는 데 사용되는 두 가지 주요 메커니즘은 전송 보안 모드 및 메시지 보안 모드입니다.

  • 전송 보안 모드 는 전송 보안 달성을 위해 HTTPS와 같은 전송 수준 프로토콜을 사용합니다. 전송 모드는 널리 채택되고, 많은 플랫폼에서 사용할 수 있으며, 계산이 덜 복잡하다는 장점이 있습니다. 그러나 지점 및 지점 간의 메시지만 보호하는 단점이 있습니다.

  • 반면 메시지 보안 모드는 WS-Security(및 기타 사양)를 사용하여 전송 보안을 구현합니다. 메시지 보안은 SOAP 메시지에 직접 적용되고 SOAP 봉투 내에 포함되므로 애플리케이션 데이터와 함께 전송 프로토콜 독립적이고 확장 가능하며 엔드투엔드 보안(지점 간 보안과 비교)을 보장하는 이점이 있습니다. SOAP 메시지의 XML 특성을 처리해야 하므로 전송 보안 모드보다 몇 배 느리다는 단점이 있습니다.

이러한 차이점에 대한 자세한 내용은 서비스 및 클라이언트 보안을 참조하세요.

세 번째 보안 모드는 이전 모드를 모두 사용하며 두 모드의 장점을 모두 제공합니다. 이 모드는 TransportWithMessageCredential라고 불립니다. 이 모드에서 메시지 보안은 클라이언트를 인증하는 데 사용되며 전송 보안은 서버를 인증하고 메시지 기밀성 및 무결성을 제공하는 데 사용됩니다. 이 TransportWithMessageCredential 덕분에 보안 모드는 전송 보안 모드만큼 빠르며 메시지 보안과 동일한 방식으로 클라이언트 인증 확장성을 제공합니다. 그러나 메시지 보안 모드와 달리 완전한 엔드 투 엔드 보안을 제공하지는 않습니다.

액세스 제어

액세스 제어 를 권한 부여라고도 합니다. 권한 부여 를 사용하면 다른 사용자가 데이터를 볼 수 있는 다른 권한을 가질 수 있습니다. 예를 들어 회사의 인사 파일에 중요한 직원 데이터가 포함되어 있으므로 관리자만 직원 데이터를 볼 수 있습니다. 또한 관리자는 직접 보고서에 대한 데이터만 볼 수 있습니다. 이 경우 액세스 제어는 역할("관리자")과 관리자의 특정 ID를 모두 기반으로 합니다(한 관리자가 다른 관리자의 직원 레코드를 못하도록 방지).

WCF에서 액세스 제어 기능은 CLR(공용 언어 런타임) PrincipalPermissionAttribute 과의 통합 및 ID 모델이라고 하는 API 집합을 통해 제공됩니다. 액세스 제어 및 클레임 기반 권한 부여에 대한 자세한 내용은 보안 확장을 참조하세요.

감사 활동

감사는 보안 이벤트를 Windows 이벤트 로그에 기록하는 것입니다. 인증 실패(또는 성공)와 같은 보안 관련 이벤트를 기록할 수 있습니다. 자세한 내용은 감사를 참조하세요. 프로그래밍 세부 정보는 방법: 보안 이벤트 감사를 참조하세요.

참고하십시오