4.4. AMQ 관리 콘솔 구성


사용자 액세스를 구성하고 브로커의 리소스에 대한 액세스를 요청합니다.

4.4.1. Red Hat Single Sign-On을 사용하여 AMQ 관리 콘솔 보안

사전 요구 사항

  • Red Hat Single Sign-On 7.4

프로세스

  1. Red Hat Single Sign-On 구성:

    1. AMQ Management Console 보안에 사용할 Red Hat Single Sign-On의 영역으로 이동합니다. Red Hat Single Sign-On의 각 영역에는 Broker 라는 클라이언트가 포함되어 있습니다. 이 클라이언트는 AMQ와 관련이 없습니다.
    2. Red Hat Single Sign-On에서 새 클라이언트를 만듭니다(예 : Artemis-console ).
    3. 클라이언트 설정 페이지로 이동하여 다음을 설정합니다.

      • 유효한 Redirect URI 를 AMQ 관리 콘솔 URL 다음에 * 를 사용한 URL로 리디렉션합니다. 예를 들면 다음과 같습니다.

        https://broker.example.com:8161/console/*
      • 웹 원본Valid Redirect URI와 동일한 값입니다. Red Hat Single Sign-On을 사용하면 + 를 입력하면 허용된 CORS 출처에 유효한 리디렉션 URI 값이 포함되어 있음을 나타냅니다.
    4. 클라이언트의 역할을 생성합니다(예: guest ).
    5. AMQ 관리 콘솔에 액세스해야 하는 모든 사용자에게 Red Hat Single Sign-On 그룹을 사용하여 위의 역할을 할당했는지 확인합니다.
  2. AMQ Broker 인스턴스를 구성합니다.

    1. < broker-instance-dir> /instances/broker0/etc/login.config 파일에 다음을 추가하여 Red Hat Single Sign-On을 사용하도록 AMQ 관리 콘솔을 구성합니다.

      console {
          org.keycloak.adapters.jaas.BearerTokenLoginModule required
              keycloak-config-file="${artemis.instance}/etc/keycloak-bearer-token.json"
              role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal
          ;
      };

      이 구성을 추가하면 JAAS 주체와 Red Hat Single Sign-On의 전달자 토큰에 대한 요구 사항이 설정됩니다. Red Hat Single Sign-On 연결은 다음 단계에 설명된 대로 keycloak-bearer-token.json 파일에 정의되어 있습니다.

    2. 다음 내용과 함께 < broker-instance-dir> /etc/keycloak-bearer-token.json 파일을 생성하여 전달자 토큰 교환에 사용되는 Red Hat Single Sign-On에 연결을 지정합니다.

      {
        "realm": "<realm-name>",
        "resource": "<client-name>",
        "auth-server-url": "<RHSSO-URL>/auth",
        "principal-attribute": "preferred_username",
        "use-resource-role-mappings": true,
        "ssl-required": "external",
        "confidential-port": 0
      }
      <realm-name>
      Red Hat Single Sign-On의 영역 이름
      <client-name>
      Red Hat Single Sign-On의 클라이언트 이름
      <RHSSO-URL>
      Red Hat Single Sign-On의 URL
    3. 다음 내용으로 < broker-instance-dir> /etc/keycloak-js-token.json 파일을 생성하여 Red Hat Single Sign-On 인증 끝점을 지정합니다.

      {
        "realm": "<realm-name>",
        "clientId": "<client-name>",
        "url": "<RHSSO-URL>/auth"
      }
    4. < broker-instance-dir> /etc/broker.xml 파일을 편집하여 보안 설정을 구성합니다.

      예를 들어 amq 역할의 사용자가 메시지를 사용하고 guest 역할이 있는 사용자를 허용하려면 다음을 추가합니다.

               <security-setting match="Info">
                  <permission roles="amq" type="createDurableQueue"/>
                  <permission roles="amq" type="deleteDurableQueue"/>
                  <permission roles="amq" type="createNonDurableQueue"/>
                  <permission roles="amq" type="deleteNonDurableQueue"/>
                  <permission roles="guest" type="send"/>
                  <permission roles="amq" type="consume"/>
               </security-setting>
  3. AMQ Broker 인스턴스를 실행하고 AMQ Management Console 구성을 검증합니다.

4.4.2. AMQ Management Console에 대한 사용자 액세스 설정

브로커 로그인 인증 정보를 사용하여 AMQ 관리 콘솔에 액세스할 수 있습니다. 다음 표에서는 AMQ Management Console에 액세스하기 위해 추가 브로커 사용자를 추가하는 다양한 방법에 대한 정보를 제공합니다.

표 4.1. AMQ 관리 콘솔에 대한 액세스 권한을 부여하는 방법
인증 방법설명

게스트 인증

익명 액세스를 활성화합니다. 이 구성에서는 인증 정보 없이 연결하거나 잘못된 인증 정보를 사용하여 연결하는 모든 사용자가 자동으로 인증되며 특정 사용자 및 역할이 할당됩니다.

자세한 내용은 AMQ Broker 구성에서 게스트 액세스 구성을 참조하십시오.

기본 사용자 및 암호 인증

각 사용자에 대해 사용자 이름과 암호를 정의하고 보안 역할을 할당해야 합니다. 사용자는 이러한 인증 정보를 사용하여 AMQ 관리 콘솔에만 로그인할 수 있습니다.

자세한 내용은 AMQ Broker 구성에서 기본 사용자 및 암호 인증 구성을 참조하십시오.

LDAP 인증

사용자는 중앙 X.500 디렉터리 서버에 저장된 사용자 데이터에 대해 자격 증명을 확인하여 인증 및 인증됩니다.

자세한 내용은 AMQ Broker 구성에서 클라이언트를 인증하도록 LDAP 구성 참조하십시오.

4.4.3. AMQ Management Console에 대한 네트워크 액세스 보안

console이 WAN 또는 인터넷을 통해 액세스할 때 AMQ 관리 콘솔을 보호하려면 SSL을 사용하여 http 대신 https 를 사용하도록 지정합니다.

사전 요구 사항

다음은 < broker_instance_dir> /etc/ 디렉터리에 있어야 합니다.

  • Java 키 저장소
  • Java 신뢰 저장소(클라이언트 인증이 필요한 경우에만 필요)

프로세스

  1. < broker_instance_dir>/etc/bootstrap.xml 파일을 엽니다.
  2. &lt ;web& gt; 요소에서 다음 속성을 추가합니다.

    <web path="web">
        <binding uri="https://0.0.0.0:8161" keyStorePath="<path_to_keystore>" keyStorePassword="<password>"
        clientAuth="<true/false>" trustStorePath="<path_to_truststore>" trustStorePassword="<password>">
        </binding>
    </web>
    bind
    콘솔에 대한 보안 연결을 위해 URI 스키마를 https 로 변경합니다.
    keyStorePath

    키 저장소 파일의 경로입니다. 예를 들면 다음과 같습니다.

    keyStorePath="<broker_instance_dir>/etc/keystore.jks"
    keyStorePassword
    키 저장소 암호입니다. 이 암호는 암호화할 수 있습니다.
    clientAuth
    클라이언트 인증이 필요한지 여부를 지정합니다. 기본값은 false입니다.
    trustStorePath
    신뢰 저장소 파일의 경로입니다. clientAuthtrue 로 설정된 경우에만 이 속성을 정의해야 합니다.
    trustStorePassword
    신뢰 저장소 암호입니다. 이 암호는 암호화할 수 있습니다.

추가 리소스

4.4.4. 인증서 기반 인증을 사용하도록 AMQ 관리 콘솔 구성

암호 대신 인증서를 사용하여 사용자를 인증하도록 AMQ 관리 콘솔을 구성할 수 있습니다.

프로세스

  1. 신뢰할 수 있는 인증 기관에서 브로커 및 클라이언트의 인증서를 얻거나 자체 서명된 인증서를 생성합니다. 자체 서명된 인증서를 생성하려면 다음 단계를 완료합니다.

    1. 브로커의 자체 서명 인증서를 생성합니다.

      $ keytool -storetype pkcs12 -keystore broker-keystore.p12 -storepass securepass -keypass securepass -alias client -genkey -keyalg "RSA" -keysize 2048 -dname "CN=ActiveMQ Broker, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -ext bc=ca:false -ext eku=cA
    2. 클라이언트와 공유할 수 있도록 브로커 키 저장소에서 인증서를 내보냅니다.

      $ keytool -storetype pkcs12 -keystore broker-keystore.p12 -storepass securepass -alias client -exportcert -rfc > broker.crt
    3. 클라이언트에서 브로커 인증서를 클라이언트 신뢰 저장소로 가져옵니다.

      $ keytool -storetype pkcs12 -keystore client-truststore.p12 -storepass securepass -keypass securepass -importcert -alias client-ca -file broker.crt -noprompt
    4. 클라이언트에서 클라이언트에 대한 자체 서명된 인증서를 생성합니다.

      $ keytool -storetype pkcs12 -keystore client-keystore.p12 -storepass securepass -keypass securepass -alias client -genkey -keyalg "RSA" -keysize 2048 -dname "CN=ActiveMQ Client, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -ext bc=ca:false -ext eku=cA
    5. 브로커 신뢰 저장소에 추가할 수 있도록 클라이언트 키 저장소에서 파일로 클라이언트 인증서를 내보냅니다.

      $ keytool -storetype pkcs12 -keystore client-keystore.p12 -storepass securepass -alias client -exportcert -rfc > client.crt
    6. 클라이언트 인증서를 브로커 신뢰 저장소로 가져옵니다.

      $ keytool -storetype pkcs12 -keystore client-truststore.p12 -storepass securepass -keypass securepass -importcert -alias client-ca -file client.crt -noprompt
      참고

      브로커 시스템에서 키 저장소 및 신뢰 저장소 파일이 브로커에 액세스할 수 있는 위치에 있는지 확인합니다.

  2. < broker_instance_dir>/etc/bootstrap.xml 파일에서 브로커 콘솔에 대한 HTTPS 프로토콜 및 클라이언트 인증을 사용하도록 웹 구성을 업데이트합니다. 예를 들면 다음과 같습니다.

    ...
    <web path="web">
        <binding uri="https://localhost:8161" keyStorePath="${artemis.instance}/etc/server-keystore.p12" keyStorePassword="password"
        clientAuth="true" trustStorePath="${artemis.instance}/etc/client-truststore.p12" trustStorePassword="password">
        ...
        </binding>
    </web>
    ...
    바인딩 uri
    SSL을 활성화하고 호스트 이름과 포트를 추가할 https 프로토콜을 지정합니다.
    keystorePath
    브로커 인증서가 설치된 키 저장소의 경로입니다.
    keystorePassword
    브로커 인증서가 설치된 키 저장소의 암호입니다.
    ClientAuth
    클라이언트가 브로커 콘솔에 연결을 시도할 때 각 클라이언트가 인증서를 제공하도록 브로커를 구성하려면 true로 설정합니다.
    trustStorePath
    클라이언트가 자체 서명된 인증서를 사용하는 경우 클라이언트 인증서가 설치된 신뢰 저장소의 경로를 지정합니다.
    trustStorePassword

    클라이언트가 자체 서명된 인증서를 사용하는 경우 클라이언트 인증서가 설치된 신뢰 저장소의 암호를 지정합니다.

    참고. 클라이언트가 자체 서명된 인증서를 사용하는 경우에만 trustStorePathtrustStorePassword 속성을 구성해야 합니다.

  3. 각 클라이언트 인증서와 브로커 사용자 간의 매핑을 생성할 수 있도록 각 클라이언트 인증서에서 DN(주체 고유 이름 )을 가져옵니다.

    1. 클라이언트의 키 저장소 파일의 각 클라이언트 인증서를 임시 파일로 내보냅니다. 예를 들면 다음과 같습니다.

      keytool -export -file <file_name> -alias broker-localhost -keystore broker.ks -storepass <password>
    2. 내보낸 인증서의 내용을 출력합니다.

      keytool -printcert -file <file_name>

      출력은 다음과 유사합니다.

      Owner: CN=AMQ Client, OU=Artemis, O=AMQ, L=AMQ, ST=AMQ, C=AMQ
      Issuer: CN=AMQ Client, OU=Artemis, O=AMQ, L=AMQ, ST=AMQ, C=AMQ
      Serial number: 51461f5d
      Valid from: Sun Apr 17 12:20:14 IST 2022 until: Sat Jul 16 12:20:14 IST 2022
      Certificate fingerprints:
      	 SHA1: EC:94:13:16:04:93:57:4F:FD:CA:AD:D8:32:68:A4:13:CC:EA:7A:67
      	 SHA256: 85:7F:D5:4A:69:80:3B:5B:86:27:99:A7:97:B8:E4:E8:7D:6F:D1:53:08:D8:7A:BA:A7:0A:7A:96:F3:6B:98:81

      Owner 항목은 주체 DN입니다. 주체 DN을 입력하는 데 사용되는 형식은 플랫폼에 따라 다릅니다. 위의 문자열은 다음과 같이 표시될 수도 있습니다.

      Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
  4. 브로커 콘솔에 대한 인증서 기반 인증을 활성화합니다.

    1. &lt ;broker_instance_dir&gt; /etc/login.config 구성 파일을 엽니다. 인증서 로그인 모듈을 추가하고 사용자 및 역할 속성 파일을 참조합니다. 예를 들면 다음과 같습니다.

      activemq {
          org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
              debug=true
              org.apache.activemq.jaas.textfiledn.user="artemis-users.properties"
              org.apache.activemq.jaas.textfiledn.role="artemis-roles.properties";
      };
      org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
      구현 클래스입니다.
      org.apache.activemq.jaas.textfiledn.user
      로그인 구성 파일이 포함된 디렉터리를 기준으로 하는 사용자 속성 파일의 위치를 지정합니다.
      org.apache.activemq.jaas.textfiledn.role

      사용자를 로그인 모듈 구현을 위해 정의된 역할에 매핑하는 속성 파일을 지정합니다.

      참고

      < broker_instance_dir> /etc/login.config 파일에서 인증서 로그인 모듈 구성의 기본 이름을 변경하는 경우 < broker_instance_dir>/etc/artemis.profile 파일에서 -dhawtio. realm 인수 값을 업데이트해야 합니다. 기본 이름은 activemq 입니다.

    2. &lt ;broker_instance_dir>/etc/artemis-users.properties 파일을 엽니다. 각 클라이언트 인증서에서 얻은 주체 DNS를 브로커 사용자에게 추가하여 클라이언트 인증서와 브로커 사용자 간 매핑을 생성합니다. 예를 들면 다음과 같습니다.

      user1=CN=user1,O=Progress,C=US
      user2=CN=user2,O=Progress,C=US

      이 예에서 user1 브로커 사용자는 CN=user1,O=Progress,C=US Subject DN이라는 주체 이름이 있는 클라이언트 인증서에 매핑됩니다. 클라이언트 인증서와 브로커 사용자 간 매핑을 생성한 후 브로커는 인증서를 사용하여 사용자를 인증할 수 있습니다.

    3. &lt ;broker_instance_dir>/etc/artemis-roles.properties 파일을 엽니다. < broker_instance_dir>/etc/artemis.profile 파일에서 HAWTIO_ROLE 변수에 지정된 역할에 추가하여 콘솔에 로그인할 수 있는 권한을 사용자에게 부여합니다. HAWTIO_ROLE 변수의 기본값은 amq 입니다. 예를 들면 다음과 같습니다.

      amq=user1, user2
  5. HTTPS 프로토콜에 대해 다음 권장 보안 속성을 구성합니다.

    1. &lt ;broker_instance_dir>/etc/artemis.profile 파일을 엽니다.
    2. HTTPS 요청만 AMQ 관리 콘솔에 허용하고 HTTP 요청을 HTTPS로 변환하도록 hawtio.http.strictTransportSecurity 속성을 설정합니다. 예를 들면 다음과 같습니다.

      hawtio.http.strictTransportSecurity = max-age=31536000; includeSubDomains; preload
    3. hawtio.http.publicKeyPins 속성을 설정하여 웹 브라우저에 특정 암호화 공개 키를 AMQ 관리 콘솔과 연결하도록 지시하여 위조된 인증서를 사용하는 "man-in-the-middle" 공격의 위험을 줄입니다. 예를 들면 다음과 같습니다.

      hawtio.http.publicKeyPins = pin-sha256="..."; max-age=5184000; includeSubDomains

4.4.5. X-forwarded 헤더를 처리하도록 AMQ 관리 콘솔 구성

AMQ Management Console에 대한 요청이 프록시 서버를 통해 라우팅되는 경우 X-Forwarded 헤더를 처리하도록 AMQ Broker 내장 웹 서버를 구성할 수 있습니다. AMQ Management Console은 X-Forwarded 헤더를 처리하여 프록시가 요청 경로에 포함될 때 변경되거나 손실되는 헤더 정보를 수신할 수 있습니다. 예를 들어 프록시는 HTTPS를 사용하여 AMQ 관리 콘솔을 노출할 수 있으며 HTTP를 사용하는 AMQ Management Console은 브라우저와 프록시 간의 연결이 HTTPS를 사용하고 HTTPS로 전환하여 브라우저 요청을 처리하는 X-Forwarded 헤더를 식별할 수 있습니다.

프로세스

  1. < broker_instance_dir>/etc/bootstrap.xml 파일을 엽니다.
  2. &lt ;web > 요소에서 org.eclipse.jetty.server.ForwardedRequestCustomizer 값을 사용하여 customizer 속성을 추가합니다. 예를 들면 다음과 같습니다.

    <web path="web" customizer="org.eclipse.jetty.server.ForwardedRequestCustomizer">
    ..
    </web>
  3. bootstrap.xml 파일을 저장합니다.
  4. 다음 명령을 입력하여 브로커를 시작하거나 다시 시작합니다.

    • Linux에서: & lt;broker_instance_dir&gt; /bin/artemis 실행
    • Windows에서: & lt;broker_instance_dir> \bin\artemis-service.exe start
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.