검색

4.4. AMQ 관리 콘솔 구성

download PDF

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

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. 클라이언트 설정 페이지로 이동하여 다음을 설정합니다.

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

        https://broker.example.com:8161/console/*
      • 웹 원본유효한 리디렉션 URI와 동일한 값으로 지정됩니다. Red Hat Single Sign-On을 사용하면 + 를 입력하면 허용되는 CORS 원본에 Valid Redirect 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
          ;
      };

      이 구성을 추가하면 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. Red Hat Single Sign -On 인증 엔드포인트를 지정하려면 다음 콘텐츠로 <broker-instance-dir> /etc/keycloak-js-token.json 파일을 생성합니다.

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

      예를 들어, mq 역할의 사용자가 메시지를 사용하고 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 관리 콘솔 구성을 확인합니다.

4.4.2. AMQ 관리 콘솔에 대한 사용자 액세스 설정

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

인증 방법설명

게스트 인증

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

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

기본 사용자 및 암호 인증

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

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

LDAP 인증

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

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

4.4.3. AMQ 관리 콘솔에 대한 네트워크 액세스 보안

콘솔이 VMWare 또는 인터넷을 통해 액세스하는 경우 AMQ Management Console을 보호하려면 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 Management Console을 구성할 수 있습니다.

절차

  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. 각 클라이언트 인증서에서 Subject Distinguished Names (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 broker 사용자는 Subject Distinguished Name이 CN=user1,O=Progress,C=US Subject DN인 클라이언트 인증서에 매핑됩니다. 클라이언트 인증서와 broker 사용자 간 매핑을 생성한 후 브로커는 인증서를 사용하여 사용자를 인증할 수 있습니다.

    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 Management Console로 변경하고 HTTP 요청을 HTTPS로 변환할 수 있도록 hawtio.http.strictTransportSecurity 속성을 설정합니다. 예를 들면 다음과 같습니다.

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

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

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.