Service Bus 연결 보안 및 인증
Windows Azure Service Bus를 사용하는 응용 프로그램은 두 지점에서 보안 작업을 수행해야 합니다. 먼저, Service Bus에서 사용하도록 표시되는 서비스는 리소스입니다. 따라서 구성/등록을 위해 또는 서비스 기능을 호출하기 위해 이러한 서비스에 액세스하려면 Windows Azure 액세스 제어 서비스의 토큰을 사용하여 인증 및 권한 부여를 수행해야 합니다. 둘째, 서비스와의 상호 작용 권한이 Service Bus를 통해 부여된 경우에도 서비스에는 메시지 교환 자체에 필요한 인증, 권한 부여, 암호화 및 서명과 연관된 고유 보안 고려 사항이 있습니다. 이 두 번째 보안 문제 집합은 Service Bus 기능과 아무런 관련이 없으며, 순수한 서비스 및 클라이언트에 대한 고려 사항입니다.
첫 번째 경우 Service Bus에서 표시하는 서비스를 사용하기 위한 인증 및 권한 부여는 액세스 제어 서비스를 통해 제어되며 Service Bus API를 통해 프로그래밍 방식으로 액세스할 수 있습니다. 현재 사용 가능한 인증 종류는 다음의 네 가지입니다.
-
SharedSecret: 약간 더 복잡하지만 쉽게 사용할 수 있는 사용자 이름/암호 인증 형식입니다.
-
Saml: SAML 2.0 인증 시스템과 상호 작용하는 데 사용할 수 있습니다.
-
SimpleWebToken: OAuth WRAP(Web Resource Authorization Protocoland)와 SWT(Simple Web Token)를 구현합니다.
-
Unauthenticated: 인증 동작을 수행하지 않고도 서비스 끝점과 상호 작용할 수 있도록 합니다.
두 번째 경우에는 일반적으로 원래 서비스 자체가 메시지 암호화 등의 메시지 수준 보안과 Windows/NTLM 등의 전송 수준 보안을 지정하는 일부 종단 간 보안을 적용합니다. 종단 간 대화 보안은 WCF(Windows Communication Foundation) 프로그래밍 모델을 따릅니다. WCF 설명서의 서비스 보안 항목에서 자세한 설명을 확인할 수 있습니다. 따라서 다음 항목에는 종단 간 보안에 대한 일반적인 설명도 포함되어 있지만 Service Bus를 사용하도록 구성된 서비스의 고유 기능을 주로 설명합니다. Service Bus 인증 및 액세스 제어에 대한 추가 정보는 액세스 제어 서비스를 사용하는 응용 프로그램 빌드를 참조하십시오.
모든 Service Bus 릴레이 바인딩에는 보안 바인딩 요소가 있습니다. 예를 들어 NetTcpRelaySecurityElement는 NetTcpRelayBinding에 대한 보안 기능을 수행합니다. 보안 바인딩 요소는 프로그래밍 방식으로 또는 구성 파일에서 지정할 수 있는 다음의 보안 값을 포함합니다.
- Mode
- 종단 간 보안 모드의 약어인 이 값은 Service Bus를 통한 메시지 교환에 적용되는 보안을 정의합니다. 프로그래밍 방식 값은 특정 릴레이 바인딩에 따라 다릅니다. 예를 들어 EndToEndSecurityMode 유형은 NetTcpRelayBinding 바인딩을 지원하고 EndToEndWebHttpSecurityMode 값은 WebHttpRelayBinding 바인딩과 함께 이 서비스를 수행합니다. NetTcpRelayBinding 바인딩과 함께 사용하는 경우 이 속성은 None, Message, Transport 또는 TransportWithMessageCredential로 설정할 수 있습니다. 기본값인 Transport를 설정하는 경우 전송 관련 보안 설정이 사용됩니다. Message 또는 Transport가 포함된 설정을 사용하는 경우에는 추가 속성을 설정해야 합니다. 일반적으로 Mode 값은 표준 WCF 보안 프로그래밍 모델을 따릅니다.
- Message
- 종단 간 메시지 보안을 Message 또는 TransportWithMessageCredential로 설정하는 경우 메시지 단위로 보안을 정의합니다. Mode 속성에 이러한 값 중 하나를 설정하려면, 사용되는 자격 증명 유형과 자격 증명 보안에 사용되는 알고리즘을 지정하도록 이 속성 또한 설정해야 합니다. Mode와 마찬가지로 메시지 보안 설정도 WCF 프로그래밍 모델을 따릅니다.
- Transport
- 이 속성은 지정된 바인딩의 전송 바인딩 요소에 고유한 보안 속성의 래퍼입니다. 예를 들어 RelayedOnewayTransportSecurity 클래스는 NetEventRelayBinding 및 NetOnewayRelayBinding 바인딩에 대해 ProtectionLevel 설정을 표시하고 구현합니다. 반면 HttpRelayTransportSecurity 유형은 BasicHttpRelayBinding 및 WS2007HttpRelayBinding 바인딩에 대해 프록시 자격 증명을 설정합니다. 위에서 설명한 속성과 마찬가지로 Transport 보안은 일반적으로 WCF 보안 모델을 따릅니다.
- RelayClientAuthenticationType
- 서비스의 클라이언트가 메시지를 보낼 때 액세스 제어에서 발급된 보안 토큰을 Service Bus 서비스에 제공해야 하는지를 제어합니다. 따라서 이 보안 속성은 Service Bus에서만 사용되며, 설명서의 이 섹션에 포함된 항목에서 이 속성을 중점적으로 설명합니다. 서비스는 항상 액세스 제어에 인증해야 하며 Service Bus에 권한 부여 토큰을 제공해야 합니다. 그렇지 않으면 Service Bus 리소스를 사용해 끝점을 등록하거나 메시지 버퍼를 만들 수 없습니다. 그러나 클라이언트는 RelayClientAuthenticationType이 RelayAccessToken으로 설정된 경우에만 Service Bus에 인증하면 됩니다. RelayClientAuthenticationType을 None으로 설정하면 토큰 요구 사항이 적용되지 않습니다. 자체 인증을 제공하거나 인증이 필요하지 않은 경우에는 통신의 Service Bus 레그에서 클라이언트(발신자)에 대한 인증을 옵트아웃할 수 있습니다. 기본값은 RelayAccessToken입니다.
또한 모든 바인딩은 정보를 인코딩하는 데 사용되는 스키마를 정의하는 Scheme 속성을 포함합니다. BasicHttpRelayBinding과 같은 HTTP 기반 바인딩의 경우, 기본 스키마는 자체 보안 프로토콜을 포함하는 HTTPS입니다.
이 섹션에서는 Service Bus에서 인증을 사용하기 위한 특정 프로세스를 설명합니다.
단원 내용