3장. 기본 보안

이 장에서는 Karaf를 처음 시작하기 전에 보안을 구성하는 기본 단계에 대해 설명합니다. 기본적으로 Karaf는 안전하지만 서비스는 원격으로 액세스할 수 없습니다. 이 장에서는 Karaf가 노출하는 포트에 대한 보안 액세스를 활성화하는 방법을 설명합니다.

3.1. 기본 보안 구성

3.1.1. 개요

노출된 모든 포트에는 사용자 인증이 필요하고 사용자가 처음에 정의되어 있지 않기 때문에 Apache Karaf 런타임은 기본적으로 네트워크 공격에 대해 보호됩니다. 즉, Apache Karaf 런타임은 기본적으로 원격으로 액세스할 수 없습니다.

원격으로 런타임에 액세스하려면 여기에 설명된 대로 먼저 보안 구성을 사용자 지정해야 합니다.

3.1.2. 컨테이너를 시작하기 전에

Karaf 컨테이너에 대한 원격 액세스를 활성화하려면 컨테이너를 시작하기 전에 보안 JAAS 사용자를 만들어야 합니다.

3.1.3. 보안 JAAS 사용자 만들기

기본적으로 컨테이너에 대한 JAAS 사용자는 정의되어 있지 않으므로 원격 액세스를 효과적으로 비활성화합니다(로그인할 수 없음).

보안 JAAS 사용자를 생성하려면 InstallDir/etc/users.properties 파일을 편집하고 다음과 같이 새 user 필드를 추가합니다.

Username=Password,admin

여기서 UsernamePassword 는 새 사용자 자격 증명입니다. admin 역할은 이 사용자에게 컨테이너의 모든 관리 및 관리 기능에 액세스할 수 있는 권한을 제공합니다.

앞에 0인 숫자 사용자 이름을 정의하지 마십시오. 이러한 사용자 이름은 항상 로그인 시도가 실패합니다. 콘솔이 사용하는 Karaf 쉘은 입력이 숫자로 표시될 때 선행 0이 삭제되기 때문입니다. 예를 들면 다음과 같습니다.

karaf@root> echo 0123
123
karaf@root> echo 00.123
0.123
karaf@root>
주의

강력한 암호로 사용자 지정 사용자 자격 증명을 정의하는 것이 좋습니다.

3.1.4. 역할 기반 액세스 제어

Karaf 컨테이너는 Cryostat 프로토콜, Karaf 명령 콘솔 및 Fuse 관리 콘솔을 통해 액세스를 규제하는 역할 기반 액세스 제어를 지원합니다. 사용자에게 역할을 할당할 때 표 3.1. “액세스 제어를 위한 표준 역할” 에 설명된 액세스 수준을 제공하는 표준 역할 세트 중에서 선택할 수 있습니다.

표 3.1. 액세스 제어를 위한 표준 역할

역할설명

뷰어

컨테이너에 대한 읽기 전용 액세스 권한을 부여합니다.

관리자

애플리케이션을 배포 및 실행하려는 일반 사용자에게 적절한 수준에서 읽기-쓰기 액세스 권한을 부여합니다. 그러나 중요한 컨테이너 구성 설정에 대한 액세스를 차단합니다.

admin

컨테이너에 대한 무제한 액세스 권한을 부여합니다.

ssh

SSH 포트를 통해 원격 콘솔 액세스 권한에 대한 권한을 부여합니다.

역할 기반 액세스 제어에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하십시오.

3.1.5. Apache Karaf 컨테이너에서 노출된 포트

다음은 컨테이너에서 노출하는 포트는 다음과 같습니다.

  • 콘솔 포트 Cryostat- Cryostat는 Apache Karaf 쉘 명령을 통해 컨테이너 인스턴스에 대한 원격 제어를 활성화합니다. 이 포트는 기본적으로 활성화되어 있으며 JAAS 인증 및 SSH에 의해 보호됩니다.
  • Cryostat 포트 Cryostat- Cryostatenables를 통해 컨테이너를 관리할 수 있습니다. 이 포트는 기본적으로 활성화되어 있으며 JAAS 인증에 의해 보호됩니다.
  • 웹 콘솔 포트 Cryo stat- Cryostat는 웹 콘솔 서블릿을 호스팅할 수 있는 포함된 Cryostat 컨테이너에 대한 액세스를 제공합니다. 기본적으로 Fuse Console은 Cryostat 컨테이너에 설치됩니다.

3.1.6. 원격 콘솔 포트 활성화

다음 조건이 모두 충족될 때마다 원격 콘솔 포트에 액세스할 수 있습니다.

  • JAAS는 하나 이상의 로그인 인증 정보 세트로 구성됩니다.
  • Karaf 런타임이 클라이언트 모드에서 시작되지 않았습니다(클라이언트 모드는 원격 콘솔 포트를 완전히 비활성화합니다).

예를 들어 컨테이너가 실행 중인 동일한 머신의 원격 콘솔 포트에 로그인하려면 다음 명령을 입력합니다.

./client -u Username -p Password

여기서 UsernamePasswordssh 역할이 있는 JAAS 사용자의 자격 증명입니다. 원격 포트를 통해 Karaf 콘솔에 액세스하는 경우 권한은 etc/users.properties 파일의 사용자에게 할당된 역할에 따라 달라집니다. 전체 콘솔 명령 세트에 액세스하려면 사용자 계정에 admin 역할이 있어야합니다.

3.1.7. 원격 콘솔 포트의 보안 강화

다음 조치를 사용하여 원격 콘솔 포트에서 보안을 강화할 수 있습니다.

  • JAAS 사용자 자격 증명에 강력한 암호가 있는지 확인합니다.
  • X.509 인증서를 사용자 지정합니다(Java 키 저장소 파일인 InstallDir/etc/host.key 를 사용자 지정 키 쌍으로 교체).

3.1.8. Cryostat 포트 활성화

Cryostat 포트는 기본적으로 활성화되며 JAAS 인증에 의해 보호됩니다. Cryostat 포트에 액세스하려면 하나 이상의 로그인 인증 정보 세트를 사용하여 JAAS를 구성해야 합니다. Cryostat 포트에 연결하려면 Cryostat 클라이언트(예: jconsole)를 열고 다음 Cryostat URI에 연결합니다.

service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root

연결하려면 유효한 JAAS 자격 증명도 제공해야 합니다.

참고

일반적으로 tail of the Cryostat URI 형식은 /karaf-ContainerName 입니다. 컨테이너 이름을 root 에서 다른 이름으로 변경하는 경우 그에 따라 Cryostat URI를 수정해야 합니다.

3.1.9. Fuse Console 포트의 보안 강화

Fuse Console은 JAAS 인증에 의해 이미 보호됩니다. SSL 보안을 추가하려면 Cryostat HTTP 서버 보안을 참조하십시오.