アクセス制御リスト(ACL) 項目に基づいて、オブジェクトへのユーザーのアクセスが許可または拒否されます。 ただし、ACL 項目によってオブジェクトが保護されるわけではありません。ACL 項目でユーザーの ID を検証することはできないからです。 ACL 項目にはユーザー名が含まれ、ホスト名またはドメイン名も指定することができます。 例えば、ユーザーは、権限のある Windows ドメイン名と同じホスト名を持つコンピューターにアカウントを作成することにより、オブジェクトにアクセスできるようになります。ACL 項目を使用してブローカー・ドメイン内のオブジェクトへのアクセスを制御できますが、ブローカー・ドメインの保護に関しては ACL 項目を頼りにしないでください。ブローカー・ドメイン内のコンポーネント間のチャネルの保護には、SSL またはセキュリティー出口を使用します。
WebSphere Message Broker では、アクセス制御リスト (ACL) 項目を使用して、ブローカー・ドメイン内のオブジェクトを操作できるユーザーとグループを制御します。 ユーザーまたはグループに付与できる 4 つの異なるアクセス・レベルがあります。すなわち、フル、表示、デプロイ、および編集です。すべてのオブジェクト・タイプに対して必ずしもすべてのアクセス・レベルが有効だとは限りません。各オブジェクト・タイプに適用できる許可のリストと、ユーザーまたはグループが実行できる操作の要約については、ACL 許可を参照してください。
ブローカー管理者が作成しなければならないアクセス制御項目の数を削減するために、ACL 許可は階層に従って機能します。ツリーのルートは ConfigManangerProxy オブジェクトで、これには RootTopic、Subscriptions、および PubSubTopology という 3 つの子があります。PubSubTopology オブジェクトは子としてゼロ個以上のブローカーを持ち、それぞれのブローカーは子としてゼロ個以上の実行グループを持ちます。あるオブジェクトに ACL 項目を追加すると、その許可はそのオブジェクト自体に付与されるとともに、別の ACL 項目によって指定変更されないかぎり、階層内でそのオブジェクトの下に位置するすべてのオブジェクトにも付与されます。
z/OS 上では、構成マネージャーが外部セキュリティー・マネージャー (ESM) データベースからユーザー ID とグループの情報を取得できるようにするために、ユーザー ID とグループの OMVS セグメントを定義する必要があります。
次に示す図は、階層の例です。
以下の例では、この階層式の機能が実際にどのように働くかを示します。
例 1
UserA にはアクセス制御項目がありません。したがって、UserA は階層内のオブジェクトを操作することも、階層内で定義されたオブジェクトのいずれかを参照することもできません。
例 2
UserB には、実行グループ Eg1A に対する「デプロイ」権限を与える ACL 項目があります。これによってこのユーザーには、PubSubTopology と Broker1 に対する暗黙の「表示」権限が与えられます。 UserB は、Eg1A にデプロイできるためには、PubSubTopology と Broker1 を (例えば Message Brokers Toolkit で) 表示できなければなりません。
UserB には PubSubTopology または Broker1 の ACL 項目がないので、UserB は階層内の他のブローカーや実行グループへのアクセス権を継承しません。 実際問題としてこれは、UserB はブローカー Broker1 で別の実行グループが定義されていることは分かっても、詳細 (実行グループの名前を含む) は何も表示できないということを意味しています。 同様に、UserB はトポロジー内に別のブローカーが存在することは分かっても、詳細は何も表示できません。UserB には、RootTopic または Subscriptions (サブスクリプション表) へのアクセス権がありません。
mqsicreateaclentry testcm -u UserB -a -x D -b Broker1 -e Eg1Aこの後に mqsilistaclentry コマンドを発行すると、次の情報が表示されます。
BIP1778I: userb -USER- D - Broker1/Eg1A - ExecutionGroup
例 3
CMP 表示
RootTopic 表示
Subs 表示
Topology 表示
Broker1 フル
Eg1A フル
Eg1B フル
Broker2 表示
Eg2A 表示
Eg2B 表示
mqsicreateaclentry testcm -u UserC -a -x V -p mqsicreateaclentry testcm -u UserC -a -x F -b Broker1この後に mqsilistaclentry コマンドを発行すると、次の情報が表示されます。
BIP1778I: userc - USER - V - ConfigManagerProxy - ConfigManagerProxy BIP1778I: userc - USER - F - Broker1 - Broker
例 4
CMP フル
RootTopic フル
Subs フル
Topology フル
Broker1 表示
Eg1A 表示
Eg1B 表示
Broker2 フル
Eg2A フル
Eg2B フル
mqsicreateaclentry testcm -u UserD -a -x F -p mqsicreateaclentry testcm -u UserD -a -x V -b Broker1この後に mqsilistaclentry コマンドを発行すると、次の情報が表示されます。
BIP1778I: userd - USER - F - ConfigManagerProxy - ConfigManagerProxy BIP1778I: userd - USER - V - Broker1 - Brokerその後、次のコマンドを発行することによって、UserD の ACL 項目を削除できます。
mqsideleteaclentry testcm -u UserD -a -b Broker1
オブジェクトのアクセス制御項目を変更するには、ユーザーにはそのオブジェクト、または階層の親に対する「フル」権限がなければなりません。これはつまり、ACL 自体を変更する許可は上記と同様に作動するものの、例外として、ツリーのより下の部分に対してより下位の許可を付与しても ACL へのアクセスは除去できないということです。これは必要な事柄です。というのは、さもないと、ユーザーが自分自身に対して「表示」項目を付与した後でそれを除去できなくなってしまうからです。
ACL 項目は、Java 構成マネージャー・プロキシー API または mqsicreateaclentry、mqsideleteaclentry、および mqsilistaclentry コマンドを使用して操作できます。