웹 서비스 보안 개선사항

WebSphere® Application Server 버전 6에는 웹 서비스 보안 설정에 대한 몇 가지 개선사항이 포함되어 있습니다. 이 문서에서는 이러한 개선사항에 대해 자세히 설명합니다.

ID 어설션 사용

인트라넷, SSL(Secure Sockets Layer) 연결 또는 VPN(Virtual Private Network)을 통한 보안 환경에서는 신임 정보 없이, 신뢰할 수 있는 다른 신임 정보(예: 서버 ID)와 요청자 ID(예: 비밀번호)만 전송하는 것이 유용합니다. WebSphere Application Server 버전 6에서는 다음과 같은 ID 어설션 유형이 지원됩니다.
  • 비밀번호가 포함되지 않은 사용자 이름 토큰
  • X.509 인증용 X.509 토큰
X.509 인증의 경우, WebSphere Application Server는 인증의 식별 이름을 요청자 ID로 사용합니다. 업스트림 서버의 신뢰성을 검증하는 신뢰 모드는 2가지가 있습니다.
기본 인증(사용자 이름 토큰)
업스트림 서버는 사용자 이름과 비밀번호가 포함된 사용자 이름 토큰을 다운스트림 서버로 전송합니다. 메시지의 이용자 또는 수신자는 사용자 이름 토큰을 인증하며 TrustedIDEvaluator 구현에 기초하여 신뢰성을 검증합니다. TrustedIDEvaluator 구현은 com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java™ 인터페이스를 구현해야 합니다.
서명
업스트림 서버는 메시지에 서명합니다. SOAP(Simple Object Access Protocol) 본문과 같은 모든 메시지 파트에 서명할 수 있습니다. 업스트림 서버는 X.509 토큰을 다운스트림 서버로 전송합니다. 메시지의 이용자 또는 수신자는 서명을 확인하여 X.509 토큰이 유효한지 검증합니다. 디지털 서명에서 사용되는 X.509 토큰의 ID 또는 식별 이름의 유효성 여부는 TrustedIDEvaluator 구현에 기초하여 검증됩니다. TrustedIDEvaluator 구현은 com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java 인터페이스를 구현해야 합니다.

다음 그림은 ID 어설션 신뢰 프로세스를 나타냅니다.

ID 어설션 신뢰 유효성
검증

이 그림에서 s1 서버는 업스트림 서버이며, s1 서버와 s2 서버 간에 ID 어설션이 설정되어 있습니다. s1 서버는 bob이라는 ID를 인증합니다. s1 서버는 bob을 비밀번호와 함께 s2 서버로 전송하려고 합니다. 신뢰 모드는 ID와 비밀번호를 포함하는 s1 신임 정보입니다. s2 서버가 요청을 받으면 JAAS(Java Authentication and Authorization Service) 로그인 모듈로 사용자를 인증한 후, 신뢰할 수 있는 ID 평가자를 사용하여 ID의 신뢰 여부를 결정합니다. ID를 신뢰할 수 있는 경우, bob이 서비스를 호출하는 호출자로 사용됩니다. 인증이 요구될 경우, bob이 인증 확인을 위한 ID로 사용됩니다.

WebSphere Application Server 버전 6에서는 ID를 현재 보안 컨텍스트의 RunAs(호출) ID로 어설션할 수 있습니다. 예를 들어, 웹 서비스 게이트웨이가 비밀번호 인증과 같은 보안 메소드를 사용하여 요청자를 인증한 다음 요청자 ID를 백엔드 서버에만 전송합니다. ID 어설션은 다른 웹 서비스 보안 구현과의 상호 운용성을 위해서도 사용할 수 있습니다.

플러그 가능한 토큰 프레임워크 사용

OASIS(Organization for the Advancement of Structured Information Standards) Web Services Security 버전 1.0 스펙은 보안 토큰과 SOAP 메시지를 연관시키는 일반 메커니즘을 정의합니다. WebSphere Application Server 버전 6에서는 이러한 유연한 메커니즘을 처리할 수 있도록 플러그 가능한 토큰 프레임워크가 개선되었습니다. 아래 그림은 이러한 플러그 가능 프레임워크를 나타냅니다.

플러그 가능 프레임워크

위 그림에서는 다음과 같은 용어가 사용되었습니다.
TokenGenerator
토큰 생성기(또는 com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent Java 인터페이스)는 다음과 같은 조치를 담당합니다.
  • 토큰을 SOAP 메시지에 맞는 올바른 XML 표시로 마샬링(marshalling). 이 경우 마샬링(marshalling)은 네트워크를 통해 토큰을 전송하기 전에 토큰을 표준화된 형식으로 변환하는 프로세스입니다.
  • 토큰을 로컬 JAAS Subject로 설정
  • 키 정보 유형을 기초로 올바른 토큰 ID 생성
토큰 생성기는 토큰 획득을 위해 CallbackHandler 또는 javax.security.auth.callback.CallbackHandler Java 인터페이스를 호출합니다. javax.security.auth.callback.Callback Java 인터페이스는 정보를 콜백 핸들러에서 토큰 생성기로 전달하는 데 사용됩니다.
CallbackHandler
콜백 핸들러(또는 javax.security.auth.callback.CallbackHandler Java 인터페이스)의 목적은 GUI 프롬프트, 표준 입력 프롬프트, 외부 토큰 서비스와 통신 등의 방법을 사용하여 토큰을 획득하는 것입니다.
TokenConsumer
토큰 이용자(또는 com.ibm.wsspi.wssecurity.token.TokenConsumerComponent Java 인터페이스)는 다음과 같은 조치를 담당합니다.
  • 토큰을 SOAP 메시지의 XML 형식에서 마샬링(marshalling) 해제. 이 경우 마샬링(marshalling) 해제는 표준 네트워크 형식의 토큰을 로컬 또는 원시 형식으로 변환하는 프로세스입니다.
  • JAAS 로그인 구성을 호출하여 토큰이 유효한지 검증
  • 올바른 WSSToken(또는 com.ibm.wsspi.wssecurity.auth.token.WSSToken Java 추상 클래스)을 로컬 JAAS Subject로 설정
로컬 JAAS Subject 컨텐츠는 웹 서비스 보안 처리의 최종 단계에서 WebSphere 신임 정보 및 프린시펄을 작성하는 데 사용됩니다. Caller Subject는 로컬 JAAS Subject의 컨텐츠에 기초하여 작성됩니다.
JAAS 로그인 구성
JAAS 로그인 구성은 토큰의 유효성 검증을 담당합니다. 유효성 검증 프로세스는 WebSphere Application Server 인증 모듈을 호출하거나 써드파티 토큰 서비스를 호출하는 작업과 관련될 수 있습니다.

사용자 정의 토큰으로 데이터 서명 또는 암호화

키 위치 지정자(또는 com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 인터페이스)가 스펙의 유연성을 지원할 수 있도록 개선되었습니다. 키 위치 지정자는 키 찾기를 담당합니다. 로컬 JAAS Subject는 컨텍스트의 KeyLocator.getKey() 메소드로 전달됩니다. 키 위치 지정자 구현은 토큰 생성기 또는 토큰 이용자에서 작성된 토큰에서 키를 파생시켜 메시지에 서명하고 메시지에 있는 서명을 확인할 수 있으며, 메시지를 암호화하거나 복호화할 수 있습니다.
중요사항: com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 인터페이스는 WebSphere Application Server 버전 5.x의 버전과 다릅니다. 버전 5.x의 com.ibm.wsspi.wssecurity.config.KeyLocator 인터페이스는 더 이상 사용되지 않습니다. 키 위치 지정자를 버전 5.x에서 버전 6로 자동으로 마이그레이션할 수 있는 방법은 없습니다. 버전 5.x의 키 위치 지정자 구현 소스 코드를 버전 6용 키 위치 지정자 프로그래밍 모델로 마이그레이션해야 합니다.

모든 XML 요소 서명 또는 암호화

배치 디스크립터는 서명하거나 암호화할 XML 요소를 선택할 때 XPath 표현식을 지원합니다. 그러나 엔벨로프 서명은 SOAP 엔벨로프(envelope), SOAP 헤더 또는 웹 서비스 보안 헤더에 서명할 때 사용됩니다.

LTPA 지원

웹 서비스 보안의 2진 보안 토큰으로 LTPA(Lightweight Third Party Authentication)가 지원됩니다. 토큰 유형은 http://www.ibm.com/websphere/appserver/tokentype/5.0.2/LTPA입니다.

시간소인 지원 확장

서명 프로세스 동안 웹 서비스 보안 헤더가 아닌 다른 요소에 시간소인을 삽입할 수 있습니다. 이 시간소인은 요소에 시간 제한을 추가할 수 있는 메커니즘을 제공합니다. 그러나 이 지원은 WebSphere Application Server 버전 6에만 해당되는 확장입니다. 다른 벤더 구현의 경우 메시지에 추가로 삽입된 시간소인으로 생성된 메시지를 이용하지 못할 수 있습니다.

임시값 지원 확장

사용자 이름 토큰이 아닌 다른 요소에 임시값(임시 생성 값)을 삽입할 수 있습니다. 임시값은 반복되는 공격 기회를 줄이는 데 사용됩니다. 그러나 이 지원은 WebSphere Application Server 버전 6의 확장입니다. 다른 벤더 구현에서는 사용자 이름 토큰 이외에 요소에 삽입되는 임시값이 있는 메시지를 이용할 수 없습니다.

분배된 임시값 캐싱 지원

분배된 임시값 캐싱은 WebSphere Application Server 버전 6의 웹 서비스에 제공되는 새 기능으로, 임시값 데이터를 클러스터 내의 여러 서버 사이에서 복제할 수 있는 기능입니다. 예를 들어 클러스터 C에 애플리케이션 서버 A와 애플리케이션 서버 B가 있을 때, 애플리케이션 서버 A가 X 값을 갖는 임시값을 수신할 경우 지정된 기간 내에 애플리케이션 서버 B에 같은 임시값이 수신되면 애플리케이션 서버 B에서 SoapSecurityException이 발생합니다. 그러나 애플리케이션 서버 B가 Y 값을 갖는 다른 임시값을 수신할 경우에는 예외가 발생하지 않지만, 이 임시값을 캐시하여 동일한 클러스터 내의 다른 애플리케이션 서버로 복사합니다.

중요사항: 분배된 임시값 캐싱 기능은 WebSphere Application Server DRS(Distributed Replication Service)를 사용합니다. 로컬 캐시에 있는 데이터는 동일한 복제 도메인의 다른 서버에 있는 캐시로 푸시됩니다. 복제는 out-of-process 호출이며, 경우에 따라 원격 호출입니다. 따라서 클러스터에 포함된 각 애플리케이션 서버의 캐시 컨텐츠가 업데이트되는 동안에는 복제가 지연될 수 있습니다. 지연의 원인으로는 네트워크 트래픽, 네트워크 워크로드, 머신 워크로드 등이 있을 수 있습니다.

X.509 인증 캐싱

WebSphere Application Server 버전 6은 인증서 경로의 유효성 검증을 생략하고 성능을 높이기 위해, 수신되는 X.509 인증을 기본적으로 캐시합니다. 그러나 이 변경사항으로 인해 보안 노출이 초래될 수 있습니다. X.509 인증 캐싱을 사용하지 않도록 설정하려면 다음 단계를 따르십시오.

서버 레벨:
  • 서버 > 애플리케이션 서버 > server_name을 클릭하십시오.
  • 보안에서 웹 서비스: 웹 서비스 보안에 대한 기본 바인딩을 클릭하십시오.
  • 추가 특성에서 특성 > 새로 작성을 클릭하십시오.
  • 특성 이름 필드에 com.ibm.ws.wssecurity.config.token.certificate.useCache를 입력하십시오.
  • 특성 값 필드에 false를 입력하십시오.

인증서 폐기 목록 지원 제공

인증서 폐기 목록(CRL)은 WebSphere Application Server 버전 6의 인증서 경로 유효성 검증을 개선합니다. 유효성을 검증할 콜렉션 인증서 저장소에 CRL을 지정할 수 있습니다. 또한 PKCS#7 인코딩을 사용하여 X.509 토큰의 CRL을 인코드할 수 있습니다. 그러나 WebSphere Application Server 버전 6에서는 X.509 토큰의 X509PKIPathv1 CRL 인코딩이 지원되지 않습니다.
중요사항: PKCS#7 인코딩은 IBM® 인증서 경로(IBM CertPath) 제공자를 통해서만 테스트되었습니다. 이 인코딩은 다른 인증서 경로 제공자에는 지원되지 않습니다.

피드백