5.2. 클라이언트 인증


5.2.1. 클라이언트 인증 방법

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

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

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

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

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

추가 리소스

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

AMQ Broker는 주소를 기반으로 큐에 보안을 적용하기 위해 유연한 역할 기반 보안 모델을 지원합니다. 대기열은 일대일(점대점 메시징의 경우) 또는 다대일(게시-구독 메시지의 경우)을 처리하는 데 바인딩됩니다. 메시지가 주소로 전송되면 브로커는 해당 주소에 바인딩된 대기열 집합을 검색하고 메시지를 해당 큐 세트로 라우팅합니다.

기본 사용자 및 암호 인증이 필요한 경우 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.10 인스턴스의 이 파일에는 다음 행이 포함됩니다.

    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
    구현 클래스입니다.
    sufficient

    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)이 사용되고 클라이언트가 자체 인증서로 구성되어야 합니다. 인증은 CloudEvent 인증서 로그인 모듈에서 직접 아닌 TLS 핸드셰이크 중에 수행됩니다.

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

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

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

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

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

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

사전 요구 사항

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

절차

  1. 이전에 브로커 키 저장소로 가져온 사용자 인증서에서 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=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. 다음과 같이 bootstrap.xml 에서 보안 도메인 별칭(이 인스턴스의 activemq)을 참조해야 합니다.

      <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.