5.4.2. ロールに基づく認証の設定
role-access
要素は、特定の MBean とその属性およびメソッドにロールをマップする方法を定義します。
手順
-
BROKER_INSTANCE_DIR/etc/management.xml
設定ファイルを開きます。 role-access
要素を検索し、設定を編集します。<role-access> <match domain="org.apache.activemq.artemis"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match> </role-access>
-
この場合、ドメイン名が
org.apache.activemq.apache
の MBean 属性を照合検索します。 -
一致する MBean 属性に対する
view
、update
、またはamq
ロールへのアクセスは、ロールを追加するlist*
、get*
、set*
、is*
、および*
アクセスメソッドによって制御されます。method = "*"
(ワイルドカード) 構文は、設定にリストされていない他の前メソッドをすべて指定する方法として使用されます。設定の各アクセスメソッドが MBean メソッド呼び出しに変換されます。 -
呼び出された MBean メソッドは、設定に記載されているメソッドと照合されます。たとえば、ドメインが
org.apache.activemq.artemis
の MBean でlistMessages
というメソッドを呼び出すと、ブローカーはlist
メソッドの設定で定義されたロールと、アクセスの照合を行います。 MBean の完全なメソッド名を使用してアクセスを設定することもできます。以下に例を示します。
<access method="listMessages" roles="view,update,amq"/>
-
この場合、ドメイン名が
次のコマンドを入力して、ブローカーを起動または再起動します。
-
Linux の場合:
BROKER_INSTANCE_DIR/bin/artemis run
-
Windows の場合:
BROKER_INSTANCE_DIR\bin\artemis-service.exe start
-
Linux の場合:
MBean プロパティーに一致する key
属性を追加して、ドメイン内の特定の MBean を照合することもできます。以下にいくつかの例を示します。
ロールのドメインのすべてのキューへのマッピング
この例は、key
属性を使用して、指定したドメインのすべてのキューにロールをマッピングする方法を示しています。
<match domain="org.apache.activemq.artemis" key="subcomponent=queues"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
ドメインの特定のキューへのロールのマッピング
この例は、key
属性を使用して、特定の名前付きキューにロールをマッピングする方法を示しています。この例では、名前付きキューは exampleQueue
です。
<match domain="org.apache.activemq.artemis" key="queue=exampleQueue"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
指定の接頭辞を含むすべてのキュー名へのロールのマッピング
以下の例は、指定した接頭辞が含まれるすべてのキューにロールをマップする方法を示しています。この例では、ワイルドカード演算子 (*
) を使用して、接頭辞 example
で始まるすべてのキュー名を照合します。
<match domain="org.apache.activemq.artemis" key="queue=example*"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
さまざまなロールのさまざまなキューセットへのマッピング
同じ属性を組み合わせた各種セット (例: さまざまなキューのセット) に対して、異なるロールをマッピングする場合などです。これを実現するために、設定ファイルに複数の match
要素を含めることができます。ただし、この場合、同じドメインに複数の一致が存在する可能性があります。
たとえば、以下のように設定された 2 つ <match>
要素について考えてみましょう。
<match domain="org.apache.activemq.artemis" key="queue=example*">
および
<match domain="org.apache.activemq.artemis" key="queue=example.sub*">
この設定を基して、org.apache.activemq.artemis
ドメインの example.sub.queue
という名前のキューは、両方のワイルドカードキーの式にマッチします。したがって、ブローカーは、最初の match
要素で指定されたロール、または 2 番目の match
要素で指定されたロールなど、キューにマップするロールのセットを決定するための優先順位付けスキームを必要とします。
同じドメインに複数の一致がある場合、ブローカーはロールのマッピング時に以下の優先順位スキームを使用します。
- 完全一致がワイルドカードの一致よりも優先される
- ワイルドカードのより長い一致が、より短いワイルドカード一致よりも優先されます。
この例では、長いワイルドカード式が example.sub.queue
のキュー名と一致するため、ブローカーは 2 番目の <match>
要素に設定された role-mapping を適用します。
default-access
要素は、role-access
または whitelist
設定で処理されないすべてのメソッド呼び出しをすべて受け入れる要素です。default-access
要素および role-access
要素には、match
要素と同じセマンティクスがあります。