1장. 보안 아키텍처
초록
OSGi 컨테이너에서는 다양한 보안 기능을 지원하는 애플리케이션을 배포할 수 있습니다. 현재 JAAS(Java Authentication and Authorization Service)만 공통 컨테이너 단위 인프라를 기반으로 합니다. 기타 보안 기능은 컨테이너에 배포된 개별 제품 및 구성 요소에 의해 별도로 제공됩니다.
1.1. OSGi 컨테이너 보안
1.1.1. 개요
그림 1.1. “OSGi 컨테이너 보안 아키텍처” 컨테이너에 사용되고 컨테이너에 배포된 모든 번들에 액세스할 수 있는 보안 인프라에 대한 개요를 보여줍니다. 현재 이 공통 보안 인프라는 모든 애플리케이션 번들에서 JAAS 영역(또는 로그인 모듈)을 사용할 수 있도록 하는 메커니즘으로 구성되어 있습니다.
그림 1.1. OSGi 컨테이너 보안 아키텍처
1.1.2. JAAS 영역
JAAS 영역 또는 로그인 모듈은 JAAS( Java Authentication and Authorization Service ) 사양에 정의된 Java 애플리케이션에 인증 및 권한 부여 데이터를 제공하는 플러그인 모듈입니다.
Red Hat Fuse는 컨테이너의 모든 번들에 로그인 모듈에 액세스할 수 있도록 하는 JAAS 로그인 모듈(일프링 또는 블루프린트 파일)을 정의하는 특수 메커니즘을 지원합니다. 이를 통해 OSGi 컨테이너에서 실행되는 여러 애플리케이션이 보안 데이터를 단일 JAAS 영역에 쉽게 통합할 수 있습니다.
1.1.3. Karaf 영역
OSGi 컨테이너에는 karaf
영역인 JAAS 영역이 사전 정의되어 있습니다. Red Hat Fuse는 karaf
영역을 사용하여 OSGi 런타임의 원격 관리, Fuse Management Console 및 Cryostat 관리에 대한 인증을 제공합니다. karaf
영역은 인증 데이터가 InstallDir/etc/users.properties
파일에 저장되는 간단한 파일 기반 리포지토리를 사용합니다.
자체 애플리케이션에서 karaf
영역을 사용할 수 있습니다. 간단하게 karaf
를 사용하려는 JAAS 영역의 이름으로 구성합니다. 그런 다음 애플리케이션은 users.properties
파일의 데이터를 사용하여 인증을 수행합니다.
1.1.4. 콘솔 포트
Karaf 클라이언트와 함께 콘솔 포트에 연결하거나 Karaf ssh:ssh
명령을 사용하여 OSGi 컨테이너를 원격으로 관리할 수 있습니다. 콘솔 포트는 karaf
영역에 연결하는 JAAS 로그인 기능으로 보호됩니다. 콘솔 포트에 연결을 시도하는 사용자는 karaf
영역의 계정 중 하나와 일치해야 하는 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.
1.1.5. Cryostat 포트
Cryostat 포트에 연결하여 OSGi 컨테이너를 관리할 수 있습니다(예: Java의 JConsole 사용). Cryostat 포트는 karaf
영역에 연결하는 JAAS 로그인 기능으로도 보호됩니다.
1.1.6. 애플리케이션 번들 및 JAAS 보안
OSGi 컨테이너에 배포하는 모든 애플리케이션 번들은 컨테이너의 JAAS 영역에 액세스할 수 있습니다. 애플리케이션 번들은 기존 JAAS 영역 중 하나를 이름으로 참조합니다(JAAS 로그인 모듈의 인스턴스에 해당).
그러나 기본적으로 JAAS 영역은 OSGi 컨테이너의 자체 로그인 구성 메커니즘을 사용하여 정의되어야 합니다. 기본적으로 Java는 간단한 파일 기반 로그인 구성 구현을 제공하지만 OSGi 컨테이너의 컨텍스트에서는 이 구현을 사용할 수 없습니다.