검색

5.2. 클라이언트 인증

download PDF

5.2.1. 클라이언트 인증 방법

브로커에서 클라이언트 인증을 구성하려면 다음 방법을 사용할 수 있습니다.

사용자 이름 및 암호 기반 인증

다음 옵션 중 하나를 사용하여 사용자 인증 정보를 직접 검증합니다.

  • 브로커에 로컬로 저장된 속성 파일 세트에 대해 인증 정보를 확인합니다. 브로커에 대한 제한된 액세스를 허용하고 로그인 모듈을 결합하여 보다 복잡한 사용 사례를 지원하는 게스트 계정을 구성할 수도 있습니다.
  • 중앙 X.500 디렉터리 서버에 저장된 사용자 데이터에 대해 클라이언트 자격 증명을 확인하도록 LDAP( Lightweight Directory Access Protocol ) 로그인 모듈을 구성합니다.
인증서 기반 인증
브로커와 클라이언트가 상호 인증을 위해 인증서를 제공하도록 양방향 TLS( Transport Layer Security )를 구성합니다. 관리자는 승인된 클라이언트 사용자 및 역할을 정의하는 속성 파일도 구성해야 합니다. 이러한 속성 파일은 브로커에 저장됩니다.
Kerberos 기반 인증
SASL( Simple Authentication and Security Layer ) 프레임워크의 GSSAPI 메커니즘을 사용하여 클라이언트의 Kerberos 보안 자격 증명을 인증하도록 브로커를 구성합니다.

다음 섹션에서는 사용자 및 암호 기반 인증과 인증서 기반 인증을 모두 구성하는 방법을 설명합니다.

추가 리소스

5.2.2. 속성 파일을 기반으로 사용자 및 암호 인증 구성

AMQ Broker는 주소를 기반으로 큐에 보안을 적용하기 위한 유연한 역할 기반 보안 모델을 지원합니다. 대기열은 일대일(point-to-point 메시징의 경우) 또는 many-to-one(publish-subscribe 메시징의 경우)에 바인딩됩니다. 메시지가 주소로 전송되면 브로커는 해당 주소에 바인딩된 대기열 세트를 조회하고 메시지를 해당 대기열 세트로 라우팅합니다.

기본 사용자 및 암호 인증이 필요한 경우 PropertiesLoginModule 을 사용하여 정의합니다. 이 로그인 모듈은 브로커에 로컬로 저장된 다음 구성 파일에 대해 사용자 인증 정보를 확인합니다.

artemis-users.properties
사용자 및 해당 암호를 정의하는 데 사용됩니다.
artemis-roles.properties
역할을 정의하고 해당 역할에 사용자를 할당하는 데 사용됩니다.
login.config
사용자 및 암호 인증 및 게스트 액세스에 대한 로그인 모듈을 구성하는 데 사용됩니다.

artemis-users.properties 파일은 보안을 위해 해시된 암호를 포함할 수 있습니다.

다음 섹션에서는 구성 방법을 보여줍니다.

5.2.2.1. 기본 사용자 및 암호 인증 구성

다음 절차에서는 기본 사용자 및 암호 인증을 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir> /etc/login.config 구성 파일을 엽니다. 기본적으로 새로운 AMQ Broker 7.12 인스턴스의 이 파일에는 다음 행이 포함되어 있습니다.

    activemq {
       org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule sufficient
           debug=false
           reload=true
           org.apache.activemq.jaas.properties.user="artemis-users.properties"
           org.apache.activemq.jaas.properties.role="artemis-roles.properties";
             };
    ActiveMQ
    구성의 별칭입니다.
    org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule
    구현 클래스입니다.
    충분합니다.

    PropertiesLoginModule 에 필요한 성공 수준을 지정하는 플래그입니다. 설정할 수 있는 값은 다음과 같습니다.

    • 필수: 로그인 모듈이 성공하려면 필요합니다. 인증은 성공 또는 실패와 관계없이 지정된 별칭 아래에 구성된 로그인 모듈 목록을 계속 진행합니다.
    • 필수 조건: 로그인 모듈이 성공하려면 필수입니다. 오류가 발생하면 애플리케이션에 제어를 즉시 반환합니다. 인증은 지정된 별칭 아래에 구성된 로그인 모듈 목록을 진행하지 않습니다.
    • sufficient: 로그인 모듈이 성공할 필요가 없습니다. 성공하면 제어가 애플리케이션으로 돌아가고 인증이 더 진행되지 않습니다. 실패하면 인증 시도에서 지정된 별칭 아래에 구성된 로그인 모듈 목록을 진행합니다.
    • 선택 사항: 로그인 모듈이 성공할 필요가 없습니다. 인증은 성공 또는 실패 여부에 관계없이 지정된 별칭 아래에 구성된 로그인 모듈 목록을 계속 종료합니다.
    org.apache.activemq.jaas.properties.user
    로그인 모듈 구현에 대한 사용자 및 암호 집합을 정의하는 속성 파일을 지정합니다.
    org.apache.activemq.jaas.properties.role
    사용자를 로그인 모듈 구현을 위해 정의된 역할에 매핑하는 속성 파일을 지정합니다.
  2. &lt ;broker_instance_dir> /etc/artemis-users.properties 구성 파일을 엽니다.
  3. 사용자를 추가하고 사용자에게 암호를 할당합니다. 예를 들면 다음과 같습니다.

    user1=secret
    user2=access
    user3=myPassword
  4. &lt ;broker_instance_dir> /etc/artemis-roles.properties 구성 파일을 엽니다.
  5. 이전에 Artemis -users.properties 파일에 추가한 사용자에게 역할 이름을 할당합니다. 예를 들면 다음과 같습니다.

    admin=user1,user2
    developer=user3
  6. &lt ;broker_instance_dir> /etc/bootstrap.xml 구성 파일을 엽니다.
  7. 필요한 경우 다음과 같이 보안 도메인 별칭(이 인스턴스에서 activemq)을 파일에 추가합니다.

    <jaas-security domain="activemq"/>

5.2.2.2. 게스트 액세스 구성

로그인 인증 정보가 없거나 인증 정보가 실패한 사용자의 경우 게스트 계정을 사용하여 브로커에 대한 제한된 액세스 권한을 부여할 수 있습니다.

명령줄 스위치 --allow-anonymous (- require-login)를 사용하여 게스트 액세스가 활성화된 브로커 인스턴스를 생성할 수 있습니다.

다음 절차에서는 게스트 액세스를 구성하는 방법을 보여줍니다.

사전 요구 사항

프로세스

  1. 이전에 기본 사용자 및 암호 인증을 위해 구성한 < broker_instance_dir> /etc/login.config 구성 파일을 엽니다.
  2. 이전에 추가한 속성 로그인 모듈 구성 후 게스트 로그인 모듈 구성을 추가합니다. 예를 들면 다음과 같습니다.

    activemq {
      org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule sufficient
          debug=true
          org.apache.activemq.jaas.properties.user="artemis-users.properties"
          org.apache.activemq.jaas.properties.role="artemis-roles.properties";
    
      org.apache.activemq.artemis.spi.core.security.jaas.GuestLoginModule sufficient
          debug=true
          org.apache.activemq.jaas.guest.user="guest"
          org.apache.activemq.jaas.guest.role="restricted";
    };
    org.apache.activemq.artemis.spi.core.security.jaas.GuestLoginModule
    구현 클래스입니다.
    org.apache.activemq.jaas.guest.user
    익명 사용자에게 할당된 사용자 이름입니다.
    org.apache.activemq.jaas.guest.role
    익명 사용자에게 할당된 역할입니다.

사용자가 인증 정보를 제공하는 경우 이전 구성에 따라 사용자 및 암호 인증 모듈이 활성화됩니다. 사용자가 인증 정보를 제공하지 않거나 제공된 인증 정보가 올바르지 않은 경우 게스트 인증이 활성화됩니다.

5.2.2.2.1. 게스트 액세스 예

다음 예제에서는 인증 정보가 없는 사용자만 게스트로 로그인되는 사용 사례에 대한 게스트 액세스 구성을 보여줍니다. 이 예제에서 로그인 모듈의 순서가 이전 구성 프로시저와 비교되어 있는지 확인합니다. 또한 properties 로그인 모듈에 연결된 플래그가 필수 로 변경됩니다.

activemq {
    org.apache.activemq.artemis.spi.core.security.jaas.GuestLoginModule sufficient
        debug=true
       credentialsInvalidate=true
       org.apache.activemq.jaas.guest.user="guest"
       org.apache.activemq.jaas.guest.role="guests";

    org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule requisite
        debug=true
        org.apache.activemq.jaas.properties.user="artemis-users.properties"
        org.apache.activemq.jaas.properties.role="artemis-roles.properties";
};

이전 구성에 따라 로그인 인증 정보가 제공되지 않으면 게스트 인증 모듈이 활성화됩니다.

이 사용 사례의 경우 게스트 로그인 모듈 구성에서 credentialsInvalidate 옵션을 true 로 설정해야 합니다.

인증 정보가 제공되면 properties 로그인 모듈이 활성화됩니다. 자격 증명은 유효해야 합니다.

추가 리소스

5.2.3. 인증서 기반 인증 구성

JAAS( Java Authentication and Authorization Service ) 인증서 로그인 모듈은 TLS(Transport Layer Security)를 사용하는 클라이언트에 대한 인증 및 권한 부여를 처리합니다. 이 모듈을 사용하려면 양방향 TLS( Transport Layer Security )를 사용하고 클라이언트가 자체 인증서로 구성해야 합니다. 인증은 JAAS 인증서 로그인 모듈이 아닌 TLS 핸드셰이크 중에 수행됩니다.

인증서 로그인 모듈의 역할은 다음과 같습니다.

  • 허용 가능한 사용자 집합을 제한합니다. 관련 속성 파일에 명시적으로 나열된 DN(사용자 고유 이름 )만 인증할 수 있습니다.
  • 수신된 사용자 ID와 그룹 목록을 연결합니다. 이는 승인을 용이하게 합니다.
  • 들어오는 클라이언트 인증서가 있어야 합니다(기본적으로 클라이언트 인증서의 존재를 선택 사항으로 처리하도록 TLS 계층이 구성됨).

인증서 로그인 모듈은 인증서 DN 컬렉션을 플랫 텍스트 파일 쌍에 저장합니다. 파일은 사용자 이름과 그룹 ID 목록을 각 DN과 연결합니다.

인증서 로그인 모듈은 org.apache.activemq.artemis.spi.core.security.jaas. CryostatFileCertificateLoginModule 클래스에 의해 구현됩니다.

5.2.3.1. 인증서 기반 인증을 사용하도록 브로커 구성

다음 절차에서는 인증서 기반 인증을 사용하도록 브로커를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • 양방향 TLS(Transport Layer Security)를 사용하도록 브로커를 구성해야 합니다. 자세한 내용은 5.1.2절. “양방향 TLS 구성”의 내용을 참조하십시오.

프로세스

  1. 이전에 브로커 키 저장소로 가져온 사용자 인증서에서 DN(Subject Distinguished Names )을 가져옵니다.

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

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

      keytool -printcert -file <file_name>

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

      Owner: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
      Issuer: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
      Serial number: 4537c82e
      Valid from: Thu Oct 19 19:47:10 BST 2006 until: Wed Jan 17 18:47:10 GMT 2007
      Certificate fingerprints:
               MD5:  3F:6C:0C:89:A8:80:29:CC:F5:2D:DA:5C:D7:3F:AB:37
               SHA1: F0:79:0D:04:38:5A:46:CE:86:E1:8A:20:1F:7B:AB:3A:46:E4:34:5C

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

      Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
  2. 인증서 기반 인증을 구성합니다.

    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
      사용자를 로그인 모듈 구현을 위해 정의된 역할에 매핑하는 속성 파일을 지정합니다.
    2. &lt ;broker_instance_dir> /etc/artemis-users.properties 구성 파일을 엽니다. 사용자와 해당 DN은 이 파일에 정의되어 있습니다. 예를 들면 다음과 같습니다.

      system=CN=system,O=Progress,C=US
      user=CN=humble user,O=Progress,C=US
      guest=CN=anon,O=Progress,C=DE

      이전 구성을 기반으로 system 이라는 사용자는 CN=system,O=Progress,C=US Subject DN에 매핑됩니다.

    3. &lt ;broker_instance_dir> /etc/artemis-roles.properties 구성 파일을 엽니다. 사용 가능한 역할 및 해당 역할을 보유한 사용자는 이 파일에 정의됩니다. 예를 들면 다음과 같습니다.

      admins=system
      users=system,user
      guests=guest

      이전 구성에서 users 역할의 경우 여러 사용자를 쉼표로 구분된 목록으로 나열합니다.

    4. 다음과 같이 보안 도메인 별칭(이 인스턴스에서 activemq)이 bootstrap.xml 에서 참조되었는지 확인합니다.

      <jaas-security domain="activemq"/>

5.2.3.2. AMQP 클라이언트에 대한 인증서 기반 인증 구성

SASL( Simple Authentication and Security Layer ) EXTERNAL 메커니즘 구성 매개 변수를 사용하여 브로커에 연결할 때 인증서 기반 인증을 위해 AQMP 클라이언트를 구성합니다.

브로커는 모든 인증서를 인증하는 것과 동일한 방식으로 AMQP 클라이언트의 TLS( Transport Layer Security )/SSL(Secure Sockets Layer ) 인증서를 인증합니다.

  1. 브로커는 클라이언트의 TLS/SSL 인증서를 읽고 인증서 제목에서 ID를 가져옵니다.
  2. 인증서 주체는 인증서 로그인 모듈을 통해 브로커 ID에 매핑됩니다. 그런 다음 브로커는 해당 역할을 기반으로 사용자에게 권한을 부여합니다.

다음 절차에서는 AMQP 클라이언트에 대한 인증서 기반 인증을 구성하는 방법을 보여줍니다. AMQP 클라이언트가 인증서 기반 인증을 사용할 수 있도록 하려면 클라이언트가 브로커에 연결하는 데 사용하는 URI에 구성 매개변수를 추가해야 합니다.

사전 요구 사항

프로세스

  1. 편집할 URI가 포함된 리소스를 엽니다.

    amqps://localhost:5500
  2. 연결에 TSL/SSL을 활성화하려면 sslEnabled=true 매개변수를 추가합니다.

    amqps://localhost:5500?sslEnabled=true
  3. 클라이언트 신뢰 저장소 및 키 저장소와 관련된 매개변수를 추가하여 브로커와 TSL/SSL 인증서를 교환할 수 있습니다.

    amqps://localhost:5500?sslEnabled=true&trustStorePath=<trust_store_path>&trustStorePassword=<trust_store_password>&keyStorePath=<key_store_path>&keyStorePassword=<key_store_password>
  4. saslMechanisms=EXTERNAL 매개변수를 추가하여 브로커가 TSL/SSL 인증서에 있는 ID를 사용하여 클라이언트를 인증하도록 요청합니다.

    amqps://localhost:5500?sslEnabled=true&trustStorePath=<trust_store_path>&trustStorePassword=<trust_store_password>&keyStorePath=<key_store_path>&keyStorePassword=<key_store_password>&saslMechanisms=EXTERNAL

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.