Java EE 커넥터 보안
Java™ EE(Java 2 Platform, Enterprise Edition) 커넥터 아키텍처는 J2EE를 이기종 EIS(Enterprise Information System)에 연결하는 표준 아키텍처를 정의합니다. EIS 예에는 ERP(Enterprise Resource Planning), 메인프레임 TP(transaction processing) 및 데이터베이스 시스템이 포함됩니다.
커넥터 아키텍처는 EIS 벤더가 해당 EIS에 대한 표준 자원 어댑터를 제공할 수 있게 합니다. 자원 어댑터는 EIS에 연결하기 위해 Java 애플리케이션이 사용하는 시스템 레벨 소프트웨어 드라이버입니다. 자원 어댑터는 애플리케이션 서버에 플러그인되어 EIS, 애플리케이션 서버 및 엔터프라이즈 애플리케이션 간 연결을 제공합니다. 일반적으로, EIS의 정보에 액세스하려면 인증되지 않은 액세스를 방지하기 위한 액세스 제어가 필요합니다. J2EE 애플리케이션이 EIS에 연결하려면 EIS에 대해 인증되어야 합니다.
- BasicPassword: EIS에 특정적인 기본 사용자-비밀번호 기반 인증 메커니즘
Kerbv5: Kerberos 버전 5 기반 인증 메커니즘
애플리케이션은 배치 디스크립터의 resource-ref 요소에서 애플리케이션 관리 사인온 또는 컨테이너 관리 사인온을 사용할지 여부를 정의합니다. 각 resource-ref 요소는 단일 연결 팩토리 참조 바인딩에 대해 설명합니다. resource-ref 요소의 res-auth 요소 값은 Application 또는 Container로서, 각각 엔터프라이즈 Bean 코드가 사인온을 수행할 수 있는지 여부와 애플리케이션 서버가 프린시펄 맵핑 구성을 사용하여 자원 관리자에 사인온할 수 있는지 여부를 표시합니다. resource-ref 요소는 일반적으로 어셈블리 도구를 사용하여 애플리케이션 어셈블리 시 정의됩니다. resource-ref는 배치 시에도 정의되거나 재정의될 수 있습니다.
애플리케이션 관리 사인온
애플리케이션은 EIS 시스템에 액세스하기 위해 JNDI(Java Naming and Directory Interface) 네임스페이스에서 연결 팩토리를 찾아 해당 연결 팩토리 오브젝트에서 getConnection 메소드를 호출합니다. getConnection 메소드에 사용자 ID 및 비밀번호 인수가 필요할 수 있습니다. J2EE 애플리케이션은 사용자 ID 및 비밀번호를 getConnection 메소드로 전달할 수 있으며 이 메소드는 해당 정보를 자원 어댑터로 전달합니다. 그러나 애플리케이션 코드에서 사용자 ID 및 암호를 지정하면 일부 보안이 손상될 수 있습니다.
사용자 ID 및 비밀번호가 Java 소스 코드로 코드화된 경우, 조직의 개발자 및 테스터가 이를 사용할 수 있습니다. 또한 사용자가 Java 클래스를 컴파일 해제하면 사용자 ID 및 비밀번호를 볼 수 있습니다.
먼저 코드를 변경하지 않고서 사용자 ID 및 비밀번호를 변경할 수는 없습니다. 다른 방법으로, 애플리케이션 코드가 지속적 기억장치 또는 외부 서비스에서 사용자 ID 및 비밀번호 세트를 검색할 수 있습니다. 이 방법을 사용하려면 IT 관리자가 애플리케이션 특정 메커니즘을 사용하여 사용자 ID 및 비밀번호를 구성하고 관리해야 합니다.
이 인증 데이터에 액세스하기 위해 Application Server는 자원에 대해 컴포넌트 관리 인증 별명을 지정할 수 있도록 지원합니다. 이 인증 데이터는 모든 자원 참조에서 공통으로 사용됩니다.
을 클릭하십시오. 컴포넌트 관리 인증 별명 사용을 선택하십시오.- getConnection 메소드에 전달되는 사용자 ID 및 암호
- 연결 팩토리 또는 데이터 소스의 컴포넌트 관리 인증 별명
- 데이터 소스의 사용자 정의 특성 사용자 이름 및 암호
사용자 이름 및 암호 특성은 초기에 RAR(Resource Adapter Archive) 파일에 정의할 수 있습니다.
이러한 특성은 관리 콘솔에 정의하거나 사용자 정의 특성에서
wsadmin 스크립트를 사용하여 정의할 수도 있습니다.
사용자가 자원에 연결할 수 있도록 하는 사용자 정의 특성은 사용하지 마십시오.
컨테이너 관리 사인온
대상 EIS(Enterprise Information System)에 대한 사용자 ID 및 암호는 Application Server에서 제공합니다. 제품은 컨테이너 관리 사인온 기능을 제공합니다. 애플리케이션 서버는 대상 EIS에 올바른 인증 데이터를 찾아 클라이언트가 연결을 설정할 수 있도록 합니다. 컨테이너 관리 사인온을 사용하도록 구성된 경우, 애플리케이션 코드가 getConnection 호출에서 사용자 ID 및 비밀번호를 제공하지 않아도 되며 인증 데이터가 모든 자원 참조에 공통으로 사용되지 않아도 됩니다. JAAS(Java Authentication and Authorization Service) 플러그 가능 인증 메커니즘을 사용하여 사전 구성된 JAAS 로그인 구성 및 LoginModule를 통해 실행 스레드의 클라이언트 보안 ID 및 신임을 사전 구성된 사용자 ID 및 비밀번호에 맵핑합니다.
제품은 실행 스레드의 클라이언트 ID를 지정된 대상 EIS의 사전 구성된 사용자 ID 및 비밀번호에 맵핑하는 기본 다대일 신임 맵핑 LoginModule 모듈을 지원합니다. 기본 맵핑 모듈은 특수 목적의 JAAS LoginModule 모듈로서, 구성된 J2C(Java 2 Connector) 인증 데이터 항목에 의해 지정된 PasswordCredential 신임을 리턴합니다. 기본 맵핑 LoginModule 모듈은 테이블 찾아보기를 수행하지만 실제 인증은 수행하지 않습니다. 사용자 ID 및 비밀번호는 별명과 함께 J2C 인증 데이터 목록에 저장됩니다.
J2C 인증 데이터 목록은 Java 인증 및
의 글로벌 보안 패널에 있습니다. 기본 프린시펄 및 신임 맵핑 기능은 DefaultPrincipalMapping 애플리케이션 JAAS 로그인 구성으로 정의됩니다.관리 콘솔을 사용하여 수정된 J2C 인증 데이터는 수정한 내용을 저장소에 저장하고 연결 테스트를 수행해야 해당 내용이 반영됩니다. 또한 wsadmin 스크립트를 사용하여 수정된 J2C 인증 데이터는 지정된 Application Server 서버 프로세스에 대해 애플리케이션을 시작 또는 다시 시작해야 해당 내용이 반영됩니다. J2C 인증 데이터 수정사항은 SecurityAdmin MBean 메소드인 updateAuthDataCfg를 호출하면 해당 내용이 반영됩니다. HashMap 매개변수를 널로 설정하여 Securityadmin MBean이 저장소의 최신 값을 사용하여 J2C 인증 데이터를 새로 고칠 수 있도록 하십시오.
제품에는 자주 사용하는 이 기본 맵핑 구성에 향상된 성능이 포함되므로 DefaultPrincipalMapping 로그인 구성을 수정하지 마십시오. 제품은 DefaultPrincipalMapping 구성 수정, 기본 LoginModule 모듈 변경 또는 구성에 사용자 정의 LoginModule 모듈 스택을 지원하지 않습니다.
z/OS® 플랫폼에서
사용자 ID 및 비밀번호가 없거나 기본값이 별명인 경우, WebSphere® Application Server 런타임이 주제(Subject)에서 SAF(System Authorization Facility) 사용자 ID를 검색합니다.
대부분의 시스템에서 다대일 맵핑을 갖는 기본 메소드로 충분합니다. 그러나 제품은 사용자 정의 프린시펄 및 신임 맵핑 구성을 지원합니다. 고유 이름으로 새 JAAS 로그인 구성을 작성함으로써 사용자 정의 맵핑 모듈을 애플리케이션 로그인 JAAS 구성에 추가할 수 있습니다. 예를 들어, 사용자 정의 맵핑 모듈이 일대일 맵핑 또는 Kerberos 기능을 제공할 수 있습니다.
또한 신뢰 연결은 클라이언트 ID 전파를 지원하는 중에 일대일 맵핑도 제공합니다. 또한 DB2® 신뢰 컨텍스트 오브젝트를 활용하면, 신뢰 연결은 다른 ID로 연결을 닫고 다시 열 때 발생하는 성능 저하를 줄이기 위해 연결 풀링을 활용할 수 있습니다. 또한 신뢰 연결을 사용하면 단일 사용자에게 모든 특권을 지정하지 않아도 되므로 DB2 데이터베이스 보안이 강화됩니다. DB2 서버에서 신뢰된 신임으로 연결을 여는 사용자에 의해 연결을 설정한 후, 동일한 사용자는 애플리케이션에서 DB2 서버에 액세스하는 다른 사용자 ID를 검증하도록 해당 연결을 신뢰합니다. 새 맵핑 구성 TrustedConnectionMapping이 구현된 신뢰 연결에 작성되었습니다.
또한 WebSphere Application Server 관리 콘솔을 사용하여 자원 관리자 연결 팩토리 참조를 구성된 자원 팩토리 중 하나에 바인드할 수도 있습니다. res-auth 요소의 값이 Container인 경우, 애플리케이션에 대한 배치 디스크립터 내에서 맵핑 구성을 지정해야 합니다. 맵핑 구성을 지정하려면 의 참조 아래에 있는 자원 참조 링크를 사용하십시오. 추가 지시사항은 "참조에 자원 참조 맵핑" 주제를 참조하십시오.
J2C 맵핑 모듈 및 맵핑 특성
맵핑 모듈은 프린시펄 및 신임 맵핑 기능을 제공하는 특수 JAAS 로그인 모듈입니다. 관리 콘솔을 사용하여 사용자 정의 맵핑 모듈을 정의하고 구성할 수 있습니다.
각 JAAS 로그인 구성에서 로그인 옵션을 사용하여 컨텍스트 데이터를 정의한 후 맵핑 모듈로 전달할 수 있습니다. 제품에서는 각 연결 팩토리 참조 바인딩에서 맵핑 특성을 사용하여 컨텍스트 데이터를 정의할 수도 있습니다.
각 JAAS 로그인 구성에 정의된 로그인 옵션은 동일한 JAAS 로그인 구성 및 맵핑 모듈을 사용하는 모든 자원 간에 공유됩니다. 각 연결 팩토리 참조 바인딩에 대해 정의된 맵핑 특성은 해당 자원 참조에 의해 배타적으로 사용됩니다.
외부 맵핑 서비스가 사용되는 사용법 시나리오를 고려해 보십시오.
예를 들어, Tivoli® Access Manager GSO(Global Sign-On) 서비스를 사용할 수 있습니다. Tivoli Access Manager GSO를 사용하여 두 백엔드 서버에 대한 인증 데이터를 찾으십시오.
두 개의 EIS 서버(DB2 및 MQ)가 있습니다. 그러나 DB2에 대한 인증 데이터는 MQ의 인증 데이터와 다릅니다. 맵핑 JAAS 로그인 구성에서 로그인 옵션을 사용하여 Tivoli Access Manager GSO 서비스에 대한 연결을 설정하는 데 필요한 매개변수를 지정하십시오. 연결 팩토리 참조 바인딩에서 맵핑 특성을 사용하여 사용자 ID 및 비밀번호가 필요한 EIS 서버를 지정하십시오.
맵핑 모듈 개발에 대한 자세한 정보는 "J2C 프린시펄 맵핑 모듈" 주제를 참조하십시오.
- 연결 팩토리의 맵핑 구성이 자원 관리자 연결 팩토리 참조로 이동되었습니다. WebSphere Application Server 버전 5 JAAS 콜백 유형을 사용하여 개발된 맵핑 로그인 모듈은 자원 관리자 연결 팩토리 참조에서 사용할 수 있지만, 이 맵핑 로그인 모듈은 사용자 정의 맵핑 특성 기능은 활용할 수 없습니다.
- 연결 팩토리 참조 바인딩은 맵핑 특성을 지원하며 새 WSMappingPropertiesCallback 콜백 유형을 사용하여 이 특성을 맵핑 로그인 모듈로 전달합니다. 또한 WSMappingPropertiesCallback 콜백 및 새 WSManagedConnectionFactoryCallback 콜백은 com.ibm.wsspi 패키지에 정의됩니다. 새 콜백 유형의 새 맵핑 로그인 모듈을 사용하십시오.
인바운드 SecurityContext를 사용하여 메시지 전달 보안
보안 인플로우 컨텍스트를 사용하여 EIS 자원 어댑터가 애플리케이션 서버에 보안 정보를 제공할 수 있습니다. 보안 인플로우 컨텍스트 메커니즘을 사용하면 작업 관리자가 설정된 ID로 Work 인스턴스의 조치를 실행할 수 있습니다. 해당 조치에는 애플리케이션 서버의 보안 도메인에 구성된 ID에서 MDB(메시지 구동 Bean)로 처리되는 Java EE 메시지 엔드포인트에 메시지를 전달하는 것도 포함됩니다.
메시지 엔드포인트에 대한 메시지 전달을 보안하려면 글로벌 보안 구성에서 글로벌 보안을 활성화해야 합니다. 또한 메시지 엔드포인트 MDB를 제공하는 애플리케이션을 호스트하는 애플리케이션 서버에서 애플리케이션 보안을 활성화해야 합니다. 글로벌 보안에 대한 자세한 정보는 "글로벌 보안 설정" 주제를 참조하십시오.
애플리케이션 영역의 사용자 ID와 연관된 역할을 사용하여 애플리케이션 배치 디스크립터의 보안 정책을 구성해야 합니다. 이는 애플리케이션으로 범위가 지정된 보안 도메인의 사용자 레지스트리입니다. 이 보안 구성을 사용하면 EJB 보안이 활성화되고 애플리케이션 영역의 특정 사용자 ID가 MDB 메소드에 액세스할 수 있습니다. 보안 개요에 대한 자세한 정보는 "보안" 주제를 참조하십시오.
메시지 전달의 보안을 설정하려면 자원 어댑터가 WorkContextProvider 및 SecurityContext 인터페이스 모두에 대한 구현을 정의해야 합니다. 보안된 메시지를 전달하려면 먼저 자원 어댑터가 SecurityContext 구현을 제공하는 작업 인스턴스를 제출합니다. 작업 관리자는 이 구현을 사용하여 해당 작업 인스턴스에 대한 실행 주제(Subject)를 설정합니다.
실행 주제(Subject)를 설정하는 동안 SecurityContext는 작업 관리자가 호출자 및 그룹 ID(CallerPrincipalCallback, GroupPrincipalCallback)를 판별하고 호출자 ID 및 비밀번호(PasswordValidationCallback)를 인증하기 위해 사용하는 JASPIC(Java Authentication Service Provider Interface for Containers) 콜백의 구현을 제공할 수 있습니다. 호출자 ID가 애플리케이션 영역에 있는 경우 작업 관리자는 호출자 프린시펄, 그룹 프린시펄 및 모든 개인 신임 정보를 포함하는 WSSubject 인스턴스를 작성하여 해당 ID를 검증합니다.
또는 SecurityContext가 다른 로그인 또는 인증 모듈에서 작성한 WSSubject 인스턴스의 인스턴스인 주제를 제공할 수 있습니다. 호출자 프린시펄이 애플리케이션 영역 또는 신뢰할 수 있는 영역 내에 있는 경우에만 작업 관리자가 이 WSSubject 인스턴스를 허용합니다. 영역에 대한 자세한 정보는 "다중 보안 도메인에 대해 인바운드 신뢰 영역 구성" 주제를 참조하십시오.
Work 인스턴스가 WSSubject 인스턴스를 설정할 수 없을 때마다 작업 관리자가 Work 인스턴스를 거부합니다. 그렇지 않으면 검증 또는 허용된 WSSubject 인스턴스 아래의 관리 스레드에 인스턴스를 디스패치합니다. SecurityContext에서 호출자 ID를 제공하지 않을 경우 Work 인스턴스가 인증되지 않은 호출자 프린시펄을 포함하는 WSSubject 인스턴스 아래에 디스패치됩니다.
디스패치되면 Work 인스턴스가 보안된 애플리케이션의 MDB에 메시지 전달을 시도할 수 있습니다. Work 인스턴스에 설정된 WSSubject 인스턴스 아래에 모든 메시지가 전달됩니다. WSSubject 인스턴스의 호출자 프린시펄이 애플리케이션 배치 디스크립터에 선언된 역할과 연관될 때마다 EJB 보안 협력자가 MDB의 onMessage 메소드에 액세스합니다. 그렇지 않으면 협력자가 액세스를 거부하고 메시지는 전달되지 않습니다. 전달 중에 MDB는 EJB 컨텍스트 isCallerInRole 및 getCallerPrincipal을 사용하여 추가 액세스 결정을 하고, MDB가 호출자 프린시펄이 권한을 갖고 있는 보안 도메인의 다른 엔티티에 액세스할 수 있습니다.