5.3.2. ユーザーおよびロールベースの承認の設定
5.3.2.1. パーミッションの設定
パーミッションは、broker.xml
設定ファイルの <security-setting>
要素でキュー (アドレスに基づく) に対して定義されます。設定ファイルの <security-settings>
要素に <security-setting>
のインスタンスを複数定義できます。アドレス完全一致を指定するか、数字記号 (#
) およびアスタリスク (*
) ワイルドカード文字を使用したワイルドカードの一致を定義できます。
アドレスに一致するキューのセットに異なるパーミッションを指定できます。これらのパーミッションを以下の表に示します。
ユーザーによるアクセス許可 | 以下のパラメーター... |
---|---|
アドレスの作成 |
|
アドレスの削除 |
|
一致するアドレスの永続キューの作成 |
|
一致するアドレスの永続キューの削除 |
|
一致するアドレスの非永続キューの作成 |
|
一致するアドレスの非永続キューの削除 |
|
一致するアドレスへのメッセージの送信 |
|
一致するアドレスにバインドされたキューからのメッセージの消費 |
|
管理アドレスに管理メッセージを送信して管理操作を呼び出します。 |
|
一致するアドレスにバインドされるキューの参照 |
|
パーミッションごとに、パーミッションを付与されたロールの一覧を指定します。指定のユーザーにロールがある場合は、そのアドレスセットのパーミッションが付与されます。
次のセクションでは、パーミッションの設定例を示します。
5.3.2.1.1. 単一アドレス向けメッセージ実稼働の設定
以下の手順では、単一のアドレスに対してメッセージの実稼働パーミッションを設定する方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <security-settings>
要素内に単一の<security-setting>
要素を追加します。match
キーには、アドレスを指定します。以下に例を示します。<security-settings> <security-setting match="my.destination"> <permission type="send" roles="producer"/> </security-setting> </security-settings>
上記の設定に基づいて、
producer
ロールのメンバーにはアドレスmy.destination
の送信
パーミッションが割り当てられています。
5.3.2.1.2. 単一アドレスのメッセージ消費の設定
以下の手順では、単一のアドレスに対してメッセージ消費パーミッションを設定する方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <security-settings>
要素内に単一の<security-setting>
要素を追加します。match
キーには、アドレスを指定します。以下に例を示します。<security-settings> <security-setting match="my.destination"> <permission type="consume" roles="consumer"/> </security-setting> </security-settings>
上記の設定に基づいて、
consumer
ロールのメンバーには、アドレスmy.destination
のconsume
パーミッションが割り当てられています。
5.3.2.1.3. すべてのアドレスでの完全なアクセスの設定
以下の手順では、すべてのアドレスおよび関連するキューへの完全アクセスを設定する方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <security-settings>
要素内に単一の<security-setting>
要素を追加します。match
キーの場合は、全 アドレスへのアクセスを設定するには、番号記号 (#
) ワイルドカード文字を指定します。以下に例を示します。<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 ロールのメンバーに、全パーミッションが付与されます。これは、すべてのユーザーに
guest
ロールを割り当てるように匿名認証を設定する開発のシナリオで役に立ちます。
関連情報
- より複雑なユースケースを設定する方法は、「複数のセキュリティー設定の設定」 を参照してください。
5.3.2.1.4. 複数のセキュリティー設定の設定
以下の手順の例は、一致するアドレスセットに複数のセキュリティー設定を個別に設定する方法を示しています。ここでは、本セクションの上記の例とは対照的で、すべて のアドレスに 全 アクセスを付与する方法を説明します。
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <security-settings>
要素内に単一の<security-setting>
要素を追加します。match
キーの場合は、一致するアドレス セット に設定を適用する番号記号 (#
) ワイルドカード文字を含めます。以下に例を示します。<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
ロール、guest
、またはeurope-users
ロールが割り当てられたユーザーは、文字列 globalqueues.europe で始まるアドレスにバインドされた一時キューを作成したり、削除したりできます。 permission type="send"
-
admin
ロールまたはeurope-users
ロールが割り当てられたユーザーは、文字列 globalqueues.europe で始まるアドレスにバインドされたキューにメッセージを送信できます。 permission type="consume"
-
admin
ロールまたはeurope-users
ロールが割り当てられたユーザーは、文字列 globalqueues.europe で始まるアドレスにバインドされたキューからメッセージを消費できます。
(オプション) 異なるセキュリティー設定をアドレスのより限定的なセットに適用するには、別の
<security-setting>
要素を追加します。match
キーには、より具体的なテキスト文字列を指定します。以下に例を示します。<security-setting match="globalqueues.europe.orders.#"> <permission type="send" roles="europe-users"/> <permission type="consume" roles="europe-users"/> </security-setting>
2 つ目の
security-setting
要素では、globalqueues.europe.orders.#
の照合は、最初のsecurity-setting
要素で指定したglobalqueues.europe.#
照合に比べると、具体的です。globalqueues.europe.orders.#
に一致するアドレスの場合には、createDurableQueue
、deleteDurableQueue
、createNonDurableQueue
、deleteNonDurableQueue
はファイルの最初のsecurity-setting
要素から継承され ません。たとえば、globalqueues.europe.orders.plastics
アドレスの場合には、存在するパーミッションは、ロールeurope-users
のsend
とconsume
のみです。したがって、ある
security-setting
ブロックで指定されたパーミッションは、別のブロックに継承されないため、これらのアクセス許可を指定しないだけで、より詳細なsecurity-setting
ブロックのパーミッションを効果的に拒否できます。
5.3.2.1.5. ユーザーでのキューの設定
キューが自動的に作成されると、キューには接続クライアントのユーザー名が割り当てられます。このユーザー名は、キューのメタデータとして含まれます。名前は JMX および AMQ Broker 管理コンソールで公開されます。
以下の手順では、ブローカー設定で手動で定義したキューにユーザー名を追加する方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 指定のキューに、
ユーザー
キーを追加します。値を割り当てます。以下に例を示します。<address name="ExampleQueue"> <anycast> <queue name="ExampleQueue" user="admin"/> </anycast> </address>
上記の設定に基づいて、
admin
ユーザーはキューExampleQueue
に割り当てられます。
- キューでユーザーを設定しても、そのキューのセキュリティーセマンティクスは変更されません。これはそのキューのメタデータにのみ使用されます。
ユーザー間のマッピングと、ユーザーに割り当てられたロールのマッピングは、セキュリティーマネージャー と呼ばれるコンポーネントによって処理されます。セキュリティーマネージャーは、ブローカーに保存されているプロパティーファイルからユーザーの認証情報を読み取ります。デフォルトでは、AMQ Broker は
org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager
セキュリティーマネージャーを使用します。このデフォルトのセキュリティーマネージャーは、JAAS および Red Hat JBoss Enterprise Application Platform(JBoss EAP) のセキュリティーとの統合を提供します。カスタム セキュリティーマネージャーの使用方法については、次を参照してください。「カスタムセキュリティーマネージャーの使用」 .