5.3.2. 사용자 및 역할 기반 권한 부여 구성

5.3.2.1. 권한 설정

권한은 broker.xml 구성 파일의 < security-setting > 요소를 통해 큐(주소 기반)에 대해 정의됩니다. 구성 파일의 < security- settings> 요소에서 <security- setting >의 여러 인스턴스를 정의할 수 있습니다. 정확한 주소 일치를 지정하거나 숫자 기호(#) 및 별표(*) 와일드카드 문자를 사용하여 와일드카드 일치를 정의할 수 있습니다.

주소와 일치하는 큐 세트에 다양한 권한을 부여할 수 있습니다. 이러한 권한은 다음 표에 표시되어 있습니다.

사용자가…​을 허용하도록 허용이 매개변수 사용…​

주소 생성

createAddress

주소 삭제

deleteAddress

일치하는 주소에 있는 영구 큐 생성

createDurableQueue

일치하는 주소에 있는 내구성 큐 삭제

deleteDurableQueue

순서가 지정되지 않은 큐를 일치하는 주소 아래에 생성

createNonDurableQueue

순서가 지정되지 않은 큐를 일치하는 주소 아래에 삭제

deleteNonDurableQueue

일치하는 주소로 메시지를 보냅니다.

send

일치하는 주소에 바인딩된 큐의 메시지 사용

consume

관리 주소로 관리 메시지를 전송하여 관리 작업 호출

manage

일치하는 주소로 바인딩된 큐 검색

browse

각 권한에 대해 권한이 부여된 역할 목록을 지정합니다. 지정된 사용자에게 역할이 모두 있는 경우 해당 주소 집합에 대한 권한이 부여됩니다.

다음 섹션에서는 권한에 대한 몇 가지 구성 예제를 보여줍니다.

5.3.2.1.1. 단일 주소에 대한 메시지 프로덕션 구성

다음 절차에서는 단일 주소에 대한 메시지 프로덕션 권한을 구성하는 방법을 보여줍니다.

절차

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 주소를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="my.destination">
            <permission type="send" roles="producer"/>
        </security-setting>
    </security-settings>

    이전 구성에 따라 producer 역할의 멤버는 주소 my.destination 에 대한 권한을 보냅니다.

5.3.2.1.2. 단일 주소에 대한 메시지 사용 구성

다음 절차에서는 단일 주소에 대한 메시지 사용 권한을 구성하는 방법을 보여줍니다.

절차

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 주소를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="my.destination">
            <permission type="consume" roles="consumer"/>
        </security-setting>
    </security-settings>

    이전 구성에 따라 consumer 역할의 멤버는 my.destination.destination에 대한 권한을 사용합니다.

5.3.2.1.3. 모든 주소에 대한 전체 액세스 구성

다음 절차에서는 모든 주소 및 관련 큐에 대한 전체 액세스를 구성하는 방법을 보여줍니다.

절차

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치 키의 경우 모든 주소에 대한 액세스를 구성하려면 숫자 기호(#) 와일드카드 문자를 지정합니다. 예를 들면 다음과 같습니다.

    <security-settings>
        <security-setting match="#">
            <permission type="createDurableQueue" roles="guest"/>
            <permission type="deleteDurableQueue" roles="guest"/>
            <permission type="createNonDurableQueue" roles="guest"/>
            <permission type="deleteNonDurableQueue" roles="guest"/>
            <permission type="createAddress" roles="guest"/>
            <permission type="deleteAddress" roles="guest"/>
            <permission type="send" roles="guest"/>
            <permission type="browse" roles="guest"/>
            <permission type="consume" roles="guest"/>
            <permission type="manage" roles="guest"/>
        </security-setting>
    </security-settings>

    이전 구성에 따라 모든 권한이 모든 큐에 대한 guest 역할의 구성원에게 부여됩니다. 이는 모든 사용자에게 게스트 역할을 할당하도록 익명 인증이 구성된 개발 시나리오에서 유용할 수 있습니다.

추가 리소스

5.3.2.1.4. 여러 보안 설정 구성

다음 예제 절차에서는 일치하는 주소 집합에 대해 여러 보안 설정을 개별적으로 구성하는 방법을 보여줍니다. 이 섹션에서는 모든 주소에 대한 전체 액세스 권한을 부여하는 방법을 보여주는 이 섹션의 이전 예제와는 대조됩니다.

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. < security- settings> 요소에 단일 <security-setting > 요소를 추가합니다. 일치하는 주소 집합에 설정을 적용하려면 일치 키의 경우 숫자 기호(#) 와일드카드 문자를 포함합니다. 예를 들면 다음과 같습니다.

    <security-setting match="globalqueues.europe.#">
       <permission type="createDurableQueue" roles="admin"/>
       <permission type="deleteDurableQueue" roles="admin"/>
       <permission type="createNonDurableQueue" roles="admin, guest, europe-users"/>
       <permission type="deleteNonDurableQueue" roles="admin, guest, europe-users"/>
       <permission type="send" roles="admin, europe-users"/>
       <permission type="consume" roles="admin, europe-users"/>
    </security-setting>
    match=globalqueues.europe.#
    숫자 기호(#) 와일드카드 문자는 브로커가 "모든 단어 시퀀스로 해석됩니다. 마침표(.. )로 구분됩니다. 이 예에서 보안 설정은 globalqueues.europe 문자열으로 시작하는 모든 주소에 적용됩니다.
    permission type="createDurableQueue"
    admin 역할이 있는 사용자만 globalqueues.europe 문자열로 시작하는 주소에 바인딩된 내구성 대기열을 생성하거나 삭제할 수 있습니다.
    permission type="createNonDurableQueue"
    admin 역할,게스트 또는 europe-users 가 있는 모든 사용자는 globalqueues.europe 문자열로 시작하는 주소에 바인딩된 임시 대기열을 생성하거나 삭제할 수 있습니다.
    권한 유형="send"
    admin 또는 europe-users 역할이 있는 모든 사용자는 globalqueues.europe 문자열로 시작하는 주소에 바인딩된 큐에 메시지를 보낼 수 있습니다.
    permission type="consume"
    역할 admin 또는 europe-users 가 있는 모든 사용자는 globalqueues.europe 문자열으로 시작하는 주소로 바인딩된 큐의 메시지를 사용할 수 있습니다.
  3. (선택 사항) 다른 보안 설정을 보다 좁은 주소 세트에 적용하려면 다른 < security-setting > 요소를 추가합니다. 일치 키의 경우 보다 구체적인 텍스트 문자열을 지정합니다. 예를 들면 다음과 같습니다.

    <security-setting match="globalqueues.europe.orders.#">
       <permission type="send" roles="europe-users"/>
       <permission type="consume" roles="europe-users"/>
    </security-setting>

    두 번째 security-setting 요소에서 globalqueues.europe.orders.# 일치는 첫 번째 security-setting 요소에 지정된 globalqueues.europe.# 일치 항목보다 더 구체적입니다. globalqueues.europe.orders.# 과 일치하는 모든 주소의 경우 createDurableQueue,deleteDurableQueue,createNonDurableQueue,deleteNonDurableQueue 는 파일의 첫 번째 security-setting 요소에서 상속 되지 않습니다. 예를 들어 globalqueues.europe.orders.plastics 주소의 경우 존재하는 유일한 권한은 europe-users 에게 전송소비 됩니다.

    따라서 한 security-setting 블록에 지정된 권한이 다른 보안 설정 블록에서 상속되지 않으므로 해당 권한을 지정하지 않고 특정 security-setting 블록에서 권한을 효과적으로 거부할 수 있습니다.

5.3.2.1.5. 사용자를 사용하여 큐 구성

큐가 자동으로 생성되면 연결된 클라이언트의 사용자 이름이 큐에 할당됩니다. 이 사용자 이름은 큐의 메타데이터로 포함됩니다. 이름은 JMX 및 AMQ Broker 관리 콘솔에 의해 노출됩니다.

다음 절차에서는 브로커 구성에 수동으로 정의된 큐에 사용자 이름을 추가하는 방법을 보여줍니다.

절차

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. 지정된 큐의 경우 사용자 키를 추가합니다. 값을 할당합니다. 예를 들면 다음과 같습니다.

    <address name="ExampleQueue">
        <anycast>
           <queue name="ExampleQueue" user="admin"/>
        </anycast>
    </address>

    이전 구성에 따라 admin 사용자는 대기열 ExampleQueue 에 할당됩니다.

참고
  • 큐에서 사용자를 구성해도 해당 큐의 보안 의미 체계는 변경되지 않으며 해당 큐의 메타데이터에만 사용됩니다.Configuring a user on a queue does not change any of the security semantics for that queue - it is only used for metadata on that queue.
  • 사용자 간 매핑과 보안 관리자 라는 구성 요소에서 처리하는 역할 간의 매핑입니다. 보안 관리자는 브로커에 저장된 속성 파일에서 사용자 자격 증명을 읽습니다. 기본적으로 AMQ Broker는 org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager 보안 관리자를 사용합니다. 이 기본 보안 관리자는 JAAS 및 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 보안과의 통합을 제공합니다.

    사용자 지정 보안 관리자를 사용하는 방법은 5.6절. “사용자 정의 보안 관리자 사용” 을 참조하십시오.