1.4. ブローカー設定ファイルのモジュラー
共通の設定を共有する複数のブローカーがある場合は、個別のファイルに共通設定を定義し、各ブローカーの broker.xml
設定ファイルにこれらのファイルを含めることができます。
ブローカー間で共有できる最も一般的な設定には、以下が含まれます。
- アドレス
- アドレス設定
- セキュリティー設定
手順
共有する
broker.xml
セクションごとに個別の XML ファイルを作成します。各 XML ファイルには、
broker.xml
の単一のセクションのみを含めることができます (例: アドレス設定またはアドレス設定のどちらかですが、両方ではありません)。top-level 要素は、要素 namespace (xmlns="urn:activemq:core"
) も定義する必要があります。以下の例は、
my-security-settings.xml
で定義されたセキュリティー設定を示しています。my-security-settings.xml
<security-settings xmlns="urn:activemq:core"> <security-setting match="a1"> <permission type="createNonDurableQueue" roles="a1.1"/> </security-setting> <security-setting match="a2"> <permission type="deleteNonDurableQueue" roles="a2.1"/> </security-setting> </security-settings>
-
共通の設定を使用する各ブローカーの
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 開かれた
broker.xml
ファイルごとに、以下を行います。broker.xml
の最初の<configuration>
要素で、以下の行が表示されることを確認します。xmlns:xi="http://www.w3.org/2001/XInclude"
共有設定が含まれる各 XML ファイルに対して XML 包含を追加します。
この例には
my-security-settings.xml
ファイルが含まれます。broker.xml
<configuration ...> <core ...> ... <xi:include href="/opt/my-broker-config/my-security-settings.xml"/> ... </core> </configuration>
必要に応じて、
broker.xml
を検証し、XML がスキーマに対して有効であることを確認します。任意の XML バリデータープログラムを使用できます。この例では、
xmllint
を使用して、artemis-server.xsl
スキーマに対してbroker.xml
を検証します。$ xmllint --noout --xinclude --schema /opt/redhat/amq-broker/amq-broker-7.2.0/schema/artemis-server.xsd /var/opt/amq-broker/mybroker/etc/broker.xml /var/opt/amq-broker/mybroker/etc/broker.xml validates
関連情報
- XML 包含 (XIncludes) の詳細は、https://www.w3.org/TR/xinclude/ を参照してください。
1.4.1. モジュール設定ファイルのリロード
ブローカーが設定変更を定期的にチェックすると (configuration-file-refresh-period
で指定される頻度)、xi:include
を使用して broker.xml
設定ファイルに含まれる設定ファイルへの変更を自動的に検出しません。たとえば、broker.xml
に my-address-settings.xml
が含まれ、my-address-settings.xml
に加えられると、ブローカーは my-address-settings.xml
の変更を自動的に検出せず、設定を再読み込みしません。
broker.xml
設定ファイルのリロードと、それに含まれる変更された設定ファイルを 強制するには、broker.xml
設定ファイルの "last modified" タイムスタンプが変更されたことを確認する必要があります。標準の Linux touch
コマンドを使用して、他の変更を加えずに broker.xml
の最終変更のタイムスタンプを更新できます。以下に例を示します。
$ touch -m <broker_instance_dir>/etc/broker.xml
または、管理 API を使用して Broker のリロードを強制的に実行することもできます。設定ファイルは、ActiveMQServerControl
で管理操作 reloadConfigurationFile()
を使用してリロードできます (ObjectName
org. apache.activemq.artemis:broker="BROKER_NAME"
またはリソースネーム server
を使用)。
関連情報
- 管理 API の使用方法は、AMQ Broker の管理の 管理 API の使用 を参照してください。
1.4.2. 外部 XML エンティティー (XXE) 処理の無効化
broker.xml
ファイルに含まれる別個のファイルでブローカー設定をモジュール化しない場合は、XXE 処理を無効にして AMQ Broker を XXE セキュリティー脆弱性から保護できます。モジュラーブローカー設定がない場合、Red Hat は XXE 処理を無効にすることを推奨します。
手順
-
<broker_instance_dir>/etc/artemis.profile
ファイルを開きます。 新しい引数
-Dartemis.disableXxe
を Java システム引数のJAVA_ARGS
リストに追加します。-Dartemis.disableXxe=true
-
artemis.profile
ファイルを保存します。