검색

8.3. 예: Red Hat Single Sign-On을 사용하도록 AMQ 브로커 구성

download PDF

이 예에서는 JAAS 로그인 모듈을 사용하여 인증 및 권한 부여에 Red Hat Single Sign-On을 사용하도록 AMQ Broker를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • LDAP 디렉터리와 통합된 Red Hat Single Sign-On 인스턴스.

    • LDAP 디렉터리는 AMQ Broker의 사용자 및 역할 정보로 채워집니다.
    • Red Hat Single Sign-On은 LDAP 서버에서 사용자를 통합하도록 구성되어 있습니다.
    • Red Hat Single Sign-On은 role-ldap-mapper를 사용하여 LDAP의 역할 정보를 Red Hat Single Sign-On에 매핑하도록 구성되어 있습니다.
  • 다음을 포함하는 Red Hat Single Sign-On 영역

    • oAuth 프로토콜을 사용하여 토큰을 가져올 수 있는 AMQ 관리 콘솔과 같은 애플리케이션에 대해 다음 설정으로 구성된 클라이언트는 다음과 같습니다.

      인증 흐름: 표준 흐름

      유효한 리디렉션 URI: AMQ Management Console의 OpenShift Container Platform 경로입니다. 예: http://artemis-wconsj-0-svc-rte-kc-ldap-tests-0eae49.apps.redhat-412t.broker.app-services-dev.net/console/*

    • oAuth 프로토콜을 사용하여 토큰을 가져올 수 없는 메시징 클라이언트 애플리케이션이 있는 경우 다음 설정으로 구성된 별도의 클라이언트입니다.

      인증 흐름: 직접 액세스 권한 부여

      유효한 리디렉션 URI: *

참고

Red Hat Single Sign-On의 각 영역에는 Broker 라는 클라이언트가 포함되어 있습니다. 이 클라이언트는 AMQ Broker와 관련이 없습니다.

절차

  1. login.config 라는 텍스트 파일을 생성하고 JAAS 로그인 모듈 구성을 추가하여 AMQ Broker를 Red Hat Single Sign-On과 연결합니다. 예를 들면 다음과 같습니다.

    console {
        // ensure the operator can connect to the broker by referencing the existing properties config
        org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule sufficient
            org.apache.activemq.jaas.properties.user="artemis-users.properties"
            org.apache.activemq.jaas.properties.role="artemis-roles.properties"
            baseDir="/home/jboss/amq-broker/etc";
    
       org.keycloak.adapters.jaas.BearerTokenLoginModule sufficient
            keycloak-config-file="/amq/extra/secrets/sso-jaas-config/_keycloak-bearer-token.json"
            role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal;
    };
    activemq {
        org.keycloak.adapters.jaas.BearerTokenLoginModule sufficient
            keycloak-config-file="/amq/extra/secrets/sso-jaas-config/_keycloak-bearer-token.json"
            role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal;
    
        org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule sufficient
            keycloak-config-file="/amq/extra/secrets/sso-jaas-config/_keycloak-direct-access.json"
            role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal;
    
        org.apache.activemq.artemis.spi.core.security.jaas.PrincipalConversionLoginModule required
           principalClassList=org.keycloak.KeycloakPrincipal;
    };
    참고
    • .json 구성 파일의 경로는 /amq/extra/secrets/name-jaas-config 형식이어야 합니다. name 의 경우 문자열 값을 지정합니다. 이 절차의 뒷부분에서 생성하는 시크릿의 이름을 지정하려면 동일한 문자열 값과 -jaas-config 접미사를 사용해야 합니다.
    • login.config 파일에서 console 이라는 영역은 AMQ Management Console 사용자 및 메시징 클라이언트를 인증하기 위해 activemq 라는 영역을 인증하는 데 사용됩니다.

다음 로그인 모듈은 login.config 파일 예제에서 구성됩니다.

로그인 모듈설명 및 사용

org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule

이는 기본 로그인 모듈이며 브로커로 인증하는 Operator에 필요한 기본 사용자가 포함된 artemis-users.properties 파일을 포함합니다.

org.keycloak.adapters.jaas.BearerTokenLoginModule

이 로그인 모듈은 oAuth 프로토콜을 사용하여 토큰을 가져올 수 있는 AMQ 관리 콘솔과 같은 애플리케이션용입니다. 사용자가 브라우저 창에서 AMQ Management Console을 열면 전달자 토큰을 얻기 위해 Red Hat Single Sign-On 콘솔로 리디렉션됩니다.

org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule

이 로그인 모듈은 oAuth 프로토콜을 사용할 수 없는 메시징 클라이언트와 같은 HTTP 이외의 애플리케이션에 필요합니다. 이 로그인 모듈을 사용하여 브로커는 먼저 Red Hat Single Sign-On에 구성된 시크릿을 사용하여 클라이언트를 인증한 다음 클라이언트를 대신하여 토큰을 가져옵니다.

org.apache.activemq.artemis.spi.core.security.jaas.PrincipalConversionLoginModule

이 로그인 모듈은 수신된 Keycloak 주체를 AMQ Broker에서 사용할 수 있는 JAAS 주체로 변환하는 데 필요합니다.

참고

login.config 파일 예에서 각 .json 속성 파일 이름에 밑줄 접두사가 있습니다. Operator는 JaasPropertiesApplied 조건의 상태를 보고할 때 밑줄이 붙은 파일을 무시합니다. 밑줄 접두사가 없는 경우 브로커가 타사 로그인 모듈에서 사용하는 속성 파일을 인식하지 못하기 때문에 JaasPropertiesApplied 조건의 상태는 OutofSync 로 표시됩니다. 상태 보고에 대한 자세한 내용은 4.3.2.1절. “보안 사용자 정의 리소스(CR)를 사용하여 기본 10.0.0.1 로그인 모듈 구성” 을 참조하십시오.

  1. 로그인 모듈에서 참조하는 각 .json 속성 파일에 대한 텍스트 파일을 생성하고 AMQ Broker를 Red Hat Single Sign-On에 연결하는 데 필요한 세부 정보를 구성합니다. 예를 들면 다음과 같습니다.

    _keycloak-bearer-token.json
    {
        "realm": "amq-broker-ldap",
        "resource": "amq-console",
        "auth-server-url": "https://keycloak-svc-rte-kc-ldap-tests-0eae49.apps.412t.broker.app-services-dev.net",
        "principal-attribute": "preferred_username",
        "use-resource-role-mappings": false,
        "ssl-required": "external",
        "confidential-port": 0
    }
    _keycloak-direct-access.json
    {
        "realm": "amq-broker-ldap",
        "resource": "amq-broker",
        "auth-server-url": "https://keycloak-svc-rte-kc-ldap-tests-0eae49.apps.412t.broker.app-services-dev.net",
        "principal-attribute": "preferred_username",
        "use-resource-role-mappings": false,
        "ssl-required": "external",
        "credentials": {
            "secret": "Lfk6g1ZKlGzNT6eRkz0d1scM4M29Ohmn"
        }
    }
    realm
    Red Hat Single Sign-On에서 AMQ Broker 애플리케이션 및 서비스를 인증하도록 구성된 영역입니다.
    resource
    Red Hat Single Sign-On에 구성된 클라이언트의 클라이언트 ID입니다.
    auth-server-url
    Red Hat Single Sign-On 서버의 기본 URL입니다.
    principal-attribute
    UserPrincipal 이름을 채울 토큰 특성입니다.
    use-resource-role-mappings
    true로 설정하면 Red Hat Single Sign-On은 토큰 내부에서 사용자의 애플리케이션 수준 역할 매핑을 찾습니다. false인 경우 사용자 역할 매핑의 영역 수준을 확인합니다. 기본값은 false입니다.
    ssl-required
    Red Hat Single Sign-On 서버와의 모든 통신이 HTTPS를 초과하도록 합니다. 기본값은 external 입니다. 즉, 외부 요청에 HTTPS가 기본적으로 필요합니다.
    인증 정보
    브로커가 Red Hat Single Sign-On에 로그인하고 클라이언트를 대신하여 토큰을 얻는 데 사용하는 Red Hat Single Sign-On에 구성된 시크릿입니다.
  2. _keycloak-js-client.json 이라는 텍스트 파일을 생성하고 AMQ Management Console에서 사용자를 자격 증명을 입력하는 Red Hat Single Sign-On 관리 콘솔의 URL로 리디렉션하는 데 필요한 구성을 추가합니다. 예를 들면 다음과 같습니다.

    {
      "realm": "amq-broker-ldap",
      "clientId": "amq-console",
      "url": "https://keycloak-svc-rte-kc-ldap-tests-0eae49.apps.412t.broker.app-services-dev.net"
    }
  3. oc create secret 명령을 사용하여 로그인 모듈 구성에서 참조되는 파일이 포함된 보안을 생성합니다. 예를 들면 다음과 같습니다.

    oc create secret generic sso-jaas-config --from-file=login.config --from-file=artemis-users.properties --from-file=artemis-roles.properties --from-file=_keycloak-bearer-token.json --from-file=_keycloak-direct-access.json --from-file=_keycloak-js-client.json
    참고
    • Operator가 로그인 모듈 구성이 포함되어 있음을 인식하고 각 브로커 Pod에 업데이트를 전파할 수 있도록 시크릿 이름에 -jaas-config 접미사가 있어야 합니다.
    • 시크릿 이름은 login.config 파일에 지정한 .json 구성 파일의 경로에 있는 마지막 디렉터리 이름과 일치해야 합니다. 예를 들어 구성 파일의 경로가 /amq/extra/secrets/sso-jaas-config 인 경우 시크릿 이름을 sso-jaas-config 여야 합니다.

    보안을 생성하는 방법에 대한 자세한 내용은 Kubernetes 문서 의 보안을 참조하십시오.

  4. 브로커 배포를 위해 ActiveMQArtemis CR(사용자 정의 리소스) 인스턴스에 생성한 시크릿을 추가합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.
      2. 배포의 CR을 편집합니다.

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 왼쪽 창에서 Operators Installed Operator 를 클릭합니다.
      3. Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) operator를 클릭합니다.
      4. AMQ Broker 탭을 클릭합니다.
      5. ActiveMQArtemis 인스턴스 이름의 이름을 클릭합니다.
      6. YAML 탭을 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  5. extraMounts 속성 및 secret 속성을 생성하고 시크릿 이름을 추가합니다. 다음 예제에서는 CR에 custom-jaas-config 라는 보안을 추가합니다.

    deploymentPlan:
      ...
      extraMounts:
        secrets:
        - "sso-jaas-config"
      ...
  6. ActiveMQArtemis CR에서 인증에 Red Hat Single Sign-On을 사용하기 위해 AMQ Management Console에 필요한 hawtio 설정이 포함된 환경 변수를 생성합니다. 환경 변수의 내용은 브로커를 호스팅하는 JVM이 시작될 때 Java 애플리케이션 시작자에게 인수로 전달됩니다. 예를 들면 다음과 같습니다.

    env:
    - name: JAVA_ARGS_APPEND
      value: -Dhawtio.rolePrincipalClasses=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal
          -Dhawtio.keycloakEnabled=true -Dhawtio.keycloakClientConfig=/amq/extra/secrets/sso-jaas-config/_keycloak-js-client.json
          -Dhawtio.authenticationEnabled=true -Dhawtio.realm=console

    hawtio 설정에 대한 자세한 내용은 hawtio 설명서 를 참조하십시오.

  7. ActiveMQArtemis CR의 spec 섹션에서 brokerProperties 속성을 추가하고 LDAP 디렉터리에 구성된 역할에 대한 권한을 추가합니다. 단일 주소에 역할 권한을 부여할 수 있습니다. 또는 # 기호를 사용하여 와일드카드를 지정하여 모든 주소에 역할 권한을 부여할 수 있습니다. 예를 들면 다음과 같습니다.

    spec:
      ...
      brokerProperties:
      - securityRoles.#.producers.send=true
      - securityRoles.#.consumers.consume=true
      ...
  8. CR을 저장합니다.

    Operator는 각 Pod의 /amq/extra/secrets/시크릿 이름 디렉터리에 있는 시크릿에 파일을 마운트하고 기본 login.config 파일 대신 SSO 구성이 포함된 마운트된 login.config 파일을 읽도록 브로커 JVM을 구성합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.