웹 서비스 보안의 메시지 무결성, 기밀성 및 인증 제공
OASIS WS-Security(Web Services Security)는 다중 보안 모델 내의 메시지 레벨에서 웹 서비스의 보안을 설정하는 데 사용되는 융통성 있는 표준입니다. XML 디지털 서명을 통한 SOAP 메시지, XML 암호화를 통한 기밀성 및 보안 토큰을 통한 신임 전파의 보안을 설정할 수 있습니다.
WS-Security 스펙은 메시지의 무결성 및 기밀성을 보호하기 위한 코어 기능을 정의하고, 보안 관련 청구를 메시지와 연관시키기 위한 메커니즘을 제공합니다. 메시지 레벨 보안 또는 메시지 레벨의 웹 서비스 보안은 종래의 웹 보안에서와 동일한 보안 요구사항을 처리합니다. 이러한 보안 요구사항으로는 ID, 인증, 권한, 무결성, 기밀성, 비거부, 기본 메시지 교환 등이 있습니다. 종래의 웹 및 메시지 레벨 보안은 디지털 인증, 암호화 및 디지털 서명을 포함한 보안 처리에 대해 다수의 동일한 메커니즘을 공유합니다. 웹 서비스 보안을 위해 HTTPS 및 SSL(Secure Sockets Layer) 전송 레벨 기술을 사용할 수 있는 동안, 일부 보안 시나리오는 메시지 레벨 보안을 사용하여 더 효율적으로 처리될 수 있습니다.
HTTPS와 같은 종래의 웹 보안 메커니즘은 모든 웹 서비스 시나리오의 보안 요구사항을 관리하기에 충분하지 않을 수 있습니다. 예를 들어, 애플리케이션에서 HTTPS를 사용하여 JAX-RPC가 있는 문서를 전송할 때, 메시지는 서비스 요청자(클라이언트)와 서비스 간의 문서 전송 중임을 의미하는 HTTPS 연결에서만 보안됩니다. 그러나 애플리케이션에서는 문서 데이터가 HTTPS 연결 이상 또는 전송 계층 이상에서도 보안되어야 할 수 있습니다. 메시지 레벨의 웹 서비스를 보안함으로써 메시지 레벨 보안은 이러한 확장 요구사항을 충족시킬 수 있습니다.
메시지 레벨 보안은 SOAP 메시지로 전송된 XML 문서에 적용됩니다. 메시지 레벨 보안은 메시지의 SOAP 헤더에 모든 필수 보안 정보를 임베드하여 메시지 자체의 보안 부분을 작성합니다. 또한 메시지 레벨 보안은 암호화 및 디지털 서명과 같은 보안 메커니즘을 메시지 자체의 데이터에 적용할 수 있습니다.
메시지 레벨 보안을 사용하는 경우, SOAP 메시지 자체에는 메시지를 보안하는 데 피룡한 정보가 들어 있거나 보안 요구를 처리하기 위해 해당 정보를 가져오는 위치에 대한 정보가 들어 있습니다. SOAP 메시지에는 지정된 메시지 레벨 보안 처리를 위한 프로토콜 및 프로시저에 관한 정보도 들어 있습니다. 그러나 메시지 레벨 보안은 특정 전송 메커니즘과 연결되어 있지는 않습니다. 보안 정보는 메시지의 일부이므로 HTTPS와 같은 전송 프로토콜과는 관계가 없습니다.
클라이언트는 특정 메시지에 적용되는 SOAP 메시지 헤더 보안 정보에 추가합니다. 메시지가 수신되면, 헤더의 보안 정보를 사용하는 웹 서비스 엔드포인트는 보안 메시지를 확인하고 정책에 대해 이 메시지의 유효성을 검증합니다. 예를 들면, 서비스 엔드포인트는 메시지 서명을 확인하고 메시지가 변경되지 않았는지 확인할 수 있습니다. SOAP 메시지 헤더에 서명 및 암호화 정보를 추가할 수 있으며 SOAP 메시지 컨텐츠에 바인드된 ID의 보안 토큰(예: X.509 인증)과 같은 기타 정보도 추가할 수 있습니다.
WebSphere® Application Server 버전 6 이상의 경우, 웹 서비스 보안을 전송 레벨 보안 및 메시지 레벨 보안으로 적용할 수 있습니다. 이러한 보안 메커니즘을 사용하여 매우 안전한 클라이언트 및 서버 디자인을 설계할 수 있습니다. 전송 레벨 보안은 클라이언트 애플리케이션 및 SSL(Secure Sockets Layer)이 있는 웹 서비스 간의 연결에 대한 보안을 참조합니다.
각 웹 서비스 애플리케이션의 특성에 따라 다양한 웹 서비스 보안 시나리오를 적용할 수 있습니다. 웹 서비스 보안을 사용할 때 정보를 보호하는 방법을 선택할 수 있습니다. 인증 메커니즘, 무결성 및 기밀성은 메시지 레벨 및 전송 레벨에서 적용할 수 있습니다. 메시지 레벨 보안이 적용되면 보안 토큰, 디지털 서명 및 암호화를 사용하여 SOAP 메시지를 보호할 수 있습니다.
웹 서비스 보안을 사용하지 않는 경우, SOAP 메시지는 일반 텍스트로 전송되고 개인 정보(예: 사용자 ID 또는 계정 번호)는 보호되지 않습니다. 웹 서비스 보안을 적용하지 않을 때는 SOAP 메시지의 SOAP 엔벨로프(envelope) 아래에 SOAP 본문만 있게 됩니다. WS-Security 스펙에서 기능을 적용하면, SOAP 본문을 서명 및 암호화할 때 SOAP 보안 헤더가 SOAP 메시지의 SOAP 엔벨로프(envelope) 아래에 삽입됩니다.
- 기밀성은 생성된 메시지에 적용되는 기밀성 제한조건을 지정합니다. 여기에는 생성된 메시지 내 어떤 메시지 파트를 암호화해야 하는지와 암호화된 Nonce 및 시간소인 요소를 첨부할 메시지 파트가 어디인지를 지정하는 작업이 포함됩니다.
- 무결성은 SOAP 메시지에 디지털 서명을 적용하는 방법으로 제공됩니다. 기밀성은 SOAP 메시지 암호화라는 방법으로 적용됩니다. 다중 서명 및 암호화가 지원됩니다. 또한 서명 및 암호화 모두 같은 파트(예: SOAP 본문)에 적용될 수 있습니다.
다양한 보안 토큰 유형(예:사용자 이름 토큰(<UsernameToken> 요소))을 삽입하여 인증 메커니즘을 추가할 수 있습니다. 사용자 이름 토큰을 웹 서비스 서버에서 수신할 때 해당 사용자 이름 및 비밀번호를 추출하여 확인합니다. 사용자 이름과 비밀번호 조합이 유효할 때만 서버에서 해당 메시지가 승인 및 처리됩니다. 사용자 이름 토큰을 사용하는 것은 인증 구현의 한 방법일 뿐입니다. 이 메커니즘은 기본 인증으로도 알려져 있습니다.
디지털 서명, 암호화 및 기본 인증 외에도 기타 인증 양식에는 ID 어설션, LTPA 토큰, Kerberos 토큰 및 사용자 정의 토큰이 포함됩니다. 이러한 기타 인증 양식은 WebSphere Application Server의 확장이기도 합니다. 어셈블리 도구를 사용한 이러한 인증 메커니즘을 구성하여 인증을 구현할 수 있습니다.
버전 1.1 스펙에서 웹 서비스 보안을 업데이트하면 이러한 기본 메커니즘 외에도 추가 기능 계층을 구성할 수 있습니다. 일부 버전 1.1 메커니즘은 WebSphere Application Server의 확장(예: 서명 확인 및 암호화된 헤더)입니다. WebSphere Application Server에서 지원하는 보안 토큰 프로파일은 사용자 이름 토큰 프로파일, X.509 토큰 프로파일 및 Kerberos 프로파일을 포함합니다. 이 경우 메시지가 수신되면, 헤더의 보안 정보를 사용하는 웹 서비스 엔드포인트는 메시지에 적절한 보안 메커니즘을 적용합니다. 예를 들어, 서비스 엔드포인트는 SOAP 메시지 헤더에 서명 및 암호화 정보를 추가할 수 있으며 SOAP 메시지 컨텐츠에 바인드된 기타 정보(예: 보안 토큰)도 추가할 수 있습니다. 정책 세트를 사용하여 이러한 새 메커니즘을 구현할 수 있습니다.
WS-SecureConversation은 WebSphere Application Server 버전 6.1 Feature Pack for Web Services에서 소개되었습니다. 보안 통신은 SOAP 메시지를 더 효율적으로 보호하기 위해 세션 키를 사용합니다. 특히 여러 SOAP 메시지를 세션에 전송할 때 세션 키를 사용합니다.
- 인증 및 이후의 메시지 보호를 위해 Kerberos 토큰이 사용됩니다.
- 클라이언트가 WSDL 요청을 통해 제공자 정책을 검색하거나 WS-MEX(Web Services MetadataExhange)를 사용하여 웹 서비스 클라이언트 배치를 단순화할 수 있는 동적 정책을 사용합니다.