publish/subscribe 시스템에서 토픽에 대한 정보를 액세스할 수 있는 응용프로그램을 제어하려면 토픽 기반 보안을 사용하십시오.
액세스를 제한할 각 토픽에 대해 publish할 수 있는 프린시펄(사용자 ID 및 사용자 ID 그룹)과 해당 토픽을 subscribe할 수 있는 프린시펄을 지정할 수 있습니다. 메시지의 지속적 전달을 요청할 수 있는 프린시펄도 지정할 수 있습니다.
프린시펄은 액세스를 명시적으로 제한하지 않는 토픽에 대해 publish, subscribe 및 메시지의 지속적 전달을 요청할 수 있습니다.
토픽 기반 보안은 적용되는 권한 부여를 결정하기 위해 작성하는 액세스 제어 목록(ACL)을 사용하는 사용자 이름 서버에 의해 관리됩니다.
WebSphere Message Broker의 사용자 이름 서버는 브로커 및 구성 관리자을 대신하여 네트워크에 이미 정의된 프린시펄 세트를 관리합니다. 이 프린시폴 세트는 publish/subscribe에 사용됩니다. Windows에서, 이 사용자 목록은 mqsicreateusernameserver 명령에 지정된 도메인에서 가져옵니다.
브로커 및 구성 관리자의 mqsicreatebroker 및 mqsicreateconfigmgr 명령에 사용자 이름 서버 큐 관리자를 지정하면 사용자 이름 서버가 알려집니다.
브로커 도메인 내의 메시지 브로커는 사용자 이름 서버와 상호작용하여 총 사용자 및 그룹 세트를 검색합니다. 이 세트로부터 액세스 제어 목록이 빌드되며 대응하는 publish/subscribe 요청의 유효성이 검증됩니다. 구성 관리자는 사용자 이름 서버와 상호작용하여 Workbench의 브로커 관리 perspective에서 제공하는 토픽 계층 편집기로 작성된 ACL에 사용자 및 사용자 그룹을 표시합니다.
토픽이나 프린시펄에 대해 해당 프린시펄이 해당 토픽에 대해 publish하거나 그 토픽을 subscribe하는 권한 또는 그 토픽에 대한 publication의 지속 전달을 요청할 권한을 정의하려면 액세스 제어 목록이 사용됩니다.
또한, ACL을 사용하여 각 토픽에 적용할 메시지 보호 레벨을 정의할 수 있습니다.
Workbench의 브로커 관리 perspective에서 토픽 계층 편집기를 사용하여 이 정의를 지정할 수 있습니다.
액세스 제어는 각 개별 토픽에 대해 명시적으로 설정할 수 있습니다. 그러나, 토픽에 명시적 ACL을 정의하지 않으면 액세스 제어가 토픽 트리의 계층 구조에 의해 정의된 대로 이전 토픽 또는 상위 토픽에서 상속됩니다. 계층에서 해당 토픽 루트까지의 어떤 토픽도 명시적 ACL을 가지고 있지 않다면, 토픽은 토픽 루트의 ACL을 상속하게 됩니다.
사용자 이름 서버가 인식하는 정의된 모든 프린시펄은 이러한 방식으로 토픽과 연관될 수 있습니다.
하나 이상의 와일드카드 문자를 포함하는 토픽과 ACL을 연관시킬 수 없습니다. 그러나 응용프로그램이 토픽에 와일드카드 문자를 지정하더라도 subscription 등록이 수행될 때 클라이언트 응용프로그램의 액세스가 올바르게 해석됩니다.
정의한 그룹 외에도 WebSphere Message Broker는 함축적 그룹 PublicGroup을 제공합니다. 이 그룹에는 모든 사용자가 자동으로 속하게 됩니다. 이 함축적 그룹은 토픽 트리의 ACL 스펙을 간소화합니다. 특히, 토픽 루트의 ACL 스펙에 이 그룹이 사용됩니다. 토픽 루트의 디폴트 설정은 PublicGroup에 대한 publish 및 subscribe 조작을 허용합니다. Workbench를 사용하여 이 ACL을 보고 변경할 수 있지만 제거할 수는 없습니다. 이 ACL은 전체 토픽 트리의 디폴트 사용권한을 결정합니다. 모든 사용자에 대한 사용권한을 정의하고자 하는 어떤 위치에서도 토픽 트리의 다른 위치에 PublicGroup의 ACL을 지정할 수 있습니다.
기존 보안 환경에 Public이라는 프린시펄이 정의되어 있는 경우, 토픽 기반 보안에는 이 프린시펄을 사용할 수 없습니다. ACL 내에서 이 프린시펄이 지정되면 PublicGroup과 동등해지므로 항상 전역 액세스를 허용합니다.
WebSphere Message Broker는 특수 publish/subscribe 액세스 제어 권한을 mqbrkrs 그룹 구성원 및 해당 Domain mqbrkrs 전역 그룹(필요한 경우)에 부여합니다.
브로커는 액세스 제어가 있는 네트워크에서 내부 publish 및 subscribe 조작을 수행하려면 특수 권한이 있어야 합니다. 이러한 네트워크에서 브로커를 작성할 경우에는 mqbrkrs 그룹에 속하는 사용자 ID를 브로커의 서비스 사용자 ID로 지정해야 합니다. mqbrkrs 그룹에는 해당 구성원이 토픽 루트에 대한 메시지의 지속 전달을 publish, subscribe 및 요청할 수 있도록 함축적 권한이 주어집니다(""). 다른 모든 토픽은 이 사용권한을 상속합니다. Workbench를 사용하여 mqbrkrs 그룹에 대한 ACL을 구성할 경우 WebSphere Message Broker에서는 이 ACL을 무시합니다.
내부 publish 및 subscribe 조작에 사용되는 메시지는 문자열 "$SYS" 및 "$ISYS"로 시작하는 동일한 토픽을 사용하여 브로커 도메인 전체에 publish됩니다.
문자열 "$ISYS"로 시작하는 토픽에 대해 ACL을 구성하지 마십시오. 이 작업을 하지 못하는 것은 아니지만 ACL은 무시됩니다.
루트 토픽 오브젝트에 전체 제어 권한을 제공하는 오브젝트 레벨 보안 ACL을 가진 사용자는 어떤 프린시펄이 어떤 토픽에 publish 및 subscribe할 수 있는지 정의하는 ACL을 정의하고 조작할 수 있습니다. 또한 ACL은 지속 메시지 전달을 제한할 수 있고 메시지 보호의 레벨을 정의합니다.
옵션 | 설명 |
---|---|
Publish | 프린시펄이 이 토픽에 대한 메시지를 publish하도록 허용하거나 거부합니다. |
Subscribe | 프린시펄이 이 토픽에 대한 메시지에 subscribe하도록 허용하거나 거부합니다. |
지속 | 프린시펄이 메시지를 지속적으로 수신할 수 있는지 여부를 지정합니다. 프린시펄이 허용되지 않을 경우, 모든 메시지는 비지속 방식으로 송신됩니다. 각 개별 subscription은 subscriber에 지속 메시지가 필요한지 여부를 나타냅니다. |
QoP 레벨 | 강제적인 메시지 보호의 레벨을 지정합니다.
다음 네 값 중 하나를 선택할 수 있습니다.
|
일반적으로, 토픽은 계층 구조 트리로 배열됩니다. 명시적 ACL을 가지고 있지 않은 하위 토픽의 일부 또는 전체에서 상위 토픽의 ACL을 상속할 수 있습니다. 따라서, 명시적 ACL이 각각의 모든 토픽과 연관될 필요는 없습니다. 모든 토픽은 해당 토픽의 상위가 되는 ACL 정책을 가지고 있습니다. 루트 토픽까지의 모든 상위 토픽이 명시적 ACL을 가지고 있지 않다면, 그 토픽은 루트 토픽의 ACL을 상속합니다.
예를 들면, 아래의 토픽 트리에서 토픽 루트는 표시되지 않았지만 토픽 루트가 PublicGroup의 ACL을 가지는 것으로 간주됩니다. 이 그룹의 구성원은 지속 publication을 publish, subscribe 및 수신할 수 있습니다. "¬" 기호는 "not"을 의미합니다.)
토픽 트리에서 ACL 상속
토픽 | Publishers | Subscribers | 지속 |
---|---|---|---|
A | joe만 | 누구나 | 없음 |
A/P | joe만 | 누구나 | joe만 |
A/K | joe만 | 누구나 | 없음 |
A/K/M | joe만 | 누구나 | 없음 |
A/K/M/N | mary, joe만 | 누구나 | nat을 제외한 누구나 |
A/B | allen, joe | HR | 없음 |
시스템 관리자가 명시적으로 작성한 것이 아니라 publish 또는 subscribe 메시지의 응답으로 동적으로 작성된 토픽은 시스템 관리자가 작성하는 토픽과 동일한 방식으로 처리되지만 명시적으로 정의된 ACL을 가지지 않습니다. 즉, 동적으로 작성된 토픽의 ACL은 명시적 정책을 가진 정책 중 토픽 트리에서 가장 가까운 상위 토픽으로부터 상속됩니다. 따라서 토픽이 명시적 ACL을 가지지 않을 때 트리의 leaf 토픽을 정의할 필요는 없습니다.
WebSphere Message Broker에서는 명시적 보안 정책을 와일드카드 토픽과 연관시킬 수 없습니다. 예를 들면, 두 레벨 계층을 나타내며 "A/B", "A/K" 및 "A/P"를 포함하는 토픽 "A/+"와 ACL을 연관시킬 수 없습니다.
그러나, 클라이언트 응용프로그램이 와일드카드 토픽을 subscribe할 때 WebSphere Message Broker는 올바른 액세스 조정을 보장됩니다.
예를 들면, 토픽 A/+에는 명시적으로 연관된 보안 정책이 없으며 명시적 보안 정책을 가질 수도 없습니다. 따라서, "A/+"는 "A"로부터 정책을 상속합니다. subscribe ACL은 everyone을 포함하기 때문에 모든 사용자가 "A/+"를 subscribe할 수 있습니다.
메시지가 "A/P" 또는 "A/K"에서 publish되면, 브로커는 "A/+"를 subscribe한 사용자에게 해당 메시지를 전달합니다. 그러나, 메시지가 "A/B"에 publish되면, 해당 메시지는 HR 그룹에 있는 subscriber에게만 전달됩니다.
시스템 관리자가 A/+와 일치하는 토픽의 subscribe ACL을 변경할 경우, 브로커는 메시지가 전달될 때 ACL을 올바르게 적용합니다. 와일드카드 토픽을 subscribe하는 것은 와일드카드와 일치하는 모든 토픽 및 subscriber가 메시지 수신 권한을 가지고 있는 모든 토픽에 대한 메시지를 전달하라는 의미가 됩니다.
브로커는 전달할 메시지 토픽을 통해 액세스 제어를 적용합니다. 명시적으로 또는 상속을 통해 해당 주제에 대한 subscribe 액세스가 거부되지 않은 클라이언트에게만 메시지가 전달됩니다. Subscription은 와일드카드 문자를 포함할 수 있기 때문에 subscription이 수신될 때 토픽 네임스페이스, 따라서 토픽 ACL에 대한 실제 일치항목 검사가 수행될 수 없습니다. 메시지 브로커가 토픽 관련 특정 메시지를 처리하는 경우에만 메시지를 subscriber에 전달하기 위한 결정이 내려집니다.