5.6. セキュリティーマネージャーの指定
ブローカーは、セキュリティーマネージャー と呼ばれるコンポーネントを使用して認証および承認を処理します。
AMQ Broker には 2 つのセキュリティーマネージャーが含まれています。
-
ActiveMQJAASSecurityManager
セキュリティーマネージャー。このセキュリティーマネージャーは、JAAS および Red Hat JBoss Enterprise Application Platform(JBoss EAP) のセキュリティーとの統合を提供します。これは、AMQ Broker によって使用される デフォルト のセキュリティーマネージャーです。 -
ActiveMQBasicSecurityManager
セキュリティーマネージャー。この基本セキュリティーマネージャーは JAAS をサポートしません。代わりに、ユーザー名とパスワードの認証情報による認証および承認をサポートします。このセキュリティーマネージャーは、管理 API を使用したユーザーの追加、削除、および更新をサポートします。ユーザーとロールデータはブローカーバインディングジャーナルに保存されます。つまり、ライブブローカーに加えられた変更はバックアップブローカーでも利用できることになります。
含まれるセキュリティーマネージャーの代わりに、システム管理者はブローカーセキュリティーの実装をより詳細に制御することを推奨します。このような場合には、ブローカー設定で カスタム セキュリティーマネージャーを指定することもできます。カスタムセキュリティーマネージャーは、org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager5
インターフェイスを実装するユーザー定義のクラスです。
以下のサブセクションの例では、使用するブローカーを設定する方法を示しています。
- デフォルトの JAAS セキュリティーマネージャーではなく基本セキュリティーマネージャー
- カスタムセキュリティーマネージャー
5.6.1. 基本的なセキュリティーマネージャーの使用
AMQ Broker には、デフォルトの ActiveMQJAASSecurityManager
セキュリティーマネージャーの他に、ActiveMQBasicSecurityManager
セキュリティーマネージャーも含まれています。
基本的なセキュリティーマネージャーを使用する場合には、すべてのユーザーおよびロールデータはバインディングジャーナル (または JDBC 永続性を使用している場合は バインディング テーブル ) に保存されます。したがって、ライブバックアップブローカーグループを設定している場合、ライブブローカーで peform というユーザー管理は、フェイルオーバー時にバックアップブローカーに自動的に反映されます。これにより、LDAP サーバーを個別に管理する必要がなくなりました。これは、この動作を達成する代替方法です。
基本的なセキュリティーマネージャーを設定して使用する前に、以下の点に留意してください。
- 基本的なセキュリティーマネージャーは、デフォルトの JAAS セキュリティーマネージャーのようにプラグ可能でありません。
- 基本的なセキュリティーマネージャーは JAAS をサポートしません。代わりに、ユーザー名とパスワードの認証情報による認証および承認のみをサポートします。
-
AMQ 管理コンソールには JAAS が必要です。そのため、基本的なセキュリティーマネージャーを使用し、コンソールを使用する必要がある場合は、ユーザーおよびパスワード認証用の
login.config
設定ファイルも設定する必要があります。ユーザーおよびパスワード認証の設定に関する詳細は、「基本的なユーザーとパスワード認証の設定」 を参照してください。 - AMQ Broker では、ユーザー管理 はブローカー管理 API によって提供されます。この管理には、ユーザーとロールを追加、リスト表示、更新、および削除する機能が含まれます。これらの機能は、JMX、管理メッセージ、HTTP(Jolokia または AMQ 管理コンソール) および AMQ Broker コマンドラインインターフェイスを使用して実行できます。ブローカーはこのデータを直接格納するため、ユーザーを管理するためにブローカーを実行する必要があります。バインディングデータを手動で変更する方法はありません。
- HTTP(Jolokia または AMQ 管理コンソールを使用するなど) による管理アクセスは、コンソール JAAS ログインモジュールによって処理されます。JConsole またはその他のリモート JMX ツールによる MBean アクセスは、基本的なセキュリティーマネージャーによって処理されます。管理メッセージは、基本的なセキュリティーマネージャーによって処理されます。
5.6.1.1. 基本的なセキュリティーマネージャーの設定
以下の手順は、基本的なセキュリティーマネージャーを使用するようにブローカーを設定する方法を説明します。
手順
-
<broker-instance-dir>/etc/boostrap.xml
設定ファイルを編集します。 security-manager
要素のclass-name
属性に、ActiveMQBasicSecurityManager
クラス名をすべて指定します。<broker xmlns="http://activemq.org/schema"> ... <security-manager class-name="org.apache.activemq.artemis.spi.core.security.ActiveMQBasicSecurityManager"> </security-manager> ... </broker>
ユーザーおよびロールデータを保持するバインディングデータを手動で変更することはできず、ブローカーを実行してユーザーを管理する必要があるため、初回起動時にブローカーのセキュリティーを保護することを推奨します。これを行うには、認証情報を使用して他の ユーザーを追加できるブートストラップ ユーザーを定義します。
security-manager
要素にbootstrapUser
、bootstrapPassword
、およびbootstrapRole
プロパティーを追加し、値を指定します。以下に例を示します。<broker xmlns="http://activemq.org/schema"> ... <security-manager class-name="org.apache.activemq.artemis.spi.core.security.ActiveMQBasicSecurityManager"> <property key="bootstrapUser" value="myUser"/> <property key="bootstrapPassword" value="myPass"/> <property key="bootstrapRole" value="myRole"/> </security-manager> ... </broker>
bootstrapUser
- ブートストラップユーザーの名前。
bootstrapPassword
- boostrap ユーザーの Passsword。暗号化したパスワードを指定することもできます。
bootstrapRole
boostrap ユーザーのロール。
注記設定でブートストラップユーザーの前述のプロパティーを定義する場合、ブローカーの実行中に加える変更に関係なく、これらの認証情報はブローカーを起動するたびに設定されます。
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 broker.xml
設定ファイルで、activemq.management#
アドレス一致に対してデフォルトで定義されるaddress-setting
要素を見つけます。これらのデフォルトアドレス設定を以下に示します。<address-setting match="activemq.management#"> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <!--...--> <max-size-bytes>-1</max-size-bytes> <message-counter-history-day-limit>10</message-counter-history-day-limit> <address-full-policy>PAGE</address-full-policy> <auto-create-queues>true</auto-create-queues> <auto-create-addresses>true</auto-create-addresses> <auto-create-jms-queues>true</auto-create-jms-queues> <auto-create-jms-topics>true</auto-create-jms-topics> </address-setting>
activemq.management#
アドレス一致向けのアドレス設定内に、この手順で以前に指定したブートストラップロール名に対して、以下の必要なパーミッションを追加します。-
createNonDurableQueue
-
createAddress
-
consume
-
manage
-
send
以下に例を示します。
<address-setting match="activemq.management#"> ... <permission type="createNonDurableQueue" roles="myRole"/> <permission type="createAddress" roles="myRole"/> <permission type="consume" roles="myRole"/> <permission type="manage" roles="myRole"/> <permission type="send" roles="myRole"/> </address-setting>
-
関連情報
-
ActiveMQBasicSecurityManager
クラスの詳細は、ActiveMQ Artemis Core API ドキュメントの Class ActiveMQBasicSecurityManager を参照してください。 - 設定ファイルでパスワードを暗号化する方法は、「設定ファイルのパスワードの暗号化」 を参照してください。
5.6.2. カスタムセキュリティーマネージャーの指定
以下の手順では、ブローカー設定でカスタムセキュリティーマネージャーを指定する方法を説明します。
手順
-
<broker_instance_dir>/etc/boostrap.xml
設定ファイルを編集します。 security-manager
要素のclass-name
属性に、org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager5
インターフェイスのユーザー定義の実装であるクラスを指定します。以下に例を示します。<broker xmlns="http://activemq.org/schema"> ... <security-manager class-name="com.myclass.MySecurityManager"> <property key="myKey1" value="myValue1"/> <property key="myKey2" value="myValue2"/> </security-manager> ... </broker>
関連情報
-
ActiveMQSecurityManager5
インターフェイスの詳細は、ActiveMQ Artemis Core API ドキュメントの Interface ActiveMQSecurityManager5 を参照してください。
5.6.3. カスタムセキュリティーマネージャーのサンプルプログラムの実行
AMQ Broker には、カスタムセキュリティーマネージャーの実装方法を実証するサンプルプログラムが含まれています。この例では、カスタムセキュリティーマネージャーは認証および承認の詳細をログに記録してから、その詳細を ActiveMQJAASSecurityManager
(デフォルトのセキュリティーマネージャー) のインスタンスに渡します。
以下の手順は、カスタムセキュリティーマネージャーのサンプルプログラムを実行する方法を示しています。
前提条件
- AMQ Broker サンプルプログラムを実行するようにマシンを設定する必要があります。詳細については、AMQ Broker のサンプルの実行 を参照してください。
手順
カスタムセキュリティーマネージャーの例が含まれるディレクトリーに移動します。
$ cd <install_dir>/examples/features/standard/security-manager
サンプルを実行します。
$ mvn verify
サンプルプログラムの実行時にブローカーインスタンスを手動で作成して起動する場合は、前の手順のコマンドを mvn -PnoServer verify
に置き換えてください。
関連情報
-
ActiveMQJAASSecurityManager
クラスの詳細は、ActiveMQ Artemis Core API ドキュメントの Class ActiveMQJAASSecurityManager を参照してください。