7.2. 宛先のセキュリティー保護
メッセージングサーバーへのリモート接続のセキュリティーを保護する他に、特定の宛先のセキュリティーを設定することもできます。この設定をする場合は、security-setting
設定要素を使用してセキュリティー制約を追加します。JBoss EAP メッセージングには、以下の管理 CLI コマンドの出力のような security-setting
がデフォルトで設定されています。
/subsystem=messaging-activemq/server=default:read-resource(recursive=true) { "outcome" => "success", "result" => { .... "security-setting" => {"#" => {"role" => {"guest" => { "consume" => true, "create-durable-queue" => false, "create-non-durable-queue" => true, "delete-durable-queue" => false, "delete-non-durable-queue" => true, "manage" => false, "send" => true }}}} } }
security-setting
オプションでは、name
フィールドにワイルドカードを使用して、セキュリティー制約を適用する宛先を指定できます。#
1 つでアドレスが任意であることを表します。セキュリティー制約でのワイルドカードの使用に関する詳細は、アドレスのロールベースのセキュリティー を参照してください。
7.2.1. アドレスのロールベースのセキュリティー
JBoss EAP メッセージングでは、アドレスに基づいてキューにセキュリティーを適用する、柔軟なロールベースのセキュリティーモデルを採用しています。
コア JBoss EAP メッセージングサーバーは、主にアドレスにバインドされたキューのセットで設定されます。メッセージをアドレスに送信すると、サーバーはまずそのアドレスにバインドされたキューのセットをルックアップし、そのメッセージをバインドされたキューに転送します。
JBoss EAP メッセージングには、アドレスに基づいてキューに適用できる一連のパーミッションがあります。アドレスの文字列の完全一致を使用することができます。または、ワイルドカード文字 #
と *
を使用したワイルドカード一致を使用することも可能です。ワイルドカード構文の使用方法の詳細は、アドレス設定 を参照してください。
security-setting
ごとに複数のロールを作成できます。またロールに適用できるパーミッション設定は 7 つあります。利用可能なパーミッションの全リストは次のとおりです。
-
create-durable-queue
は、一致するアドレスの永続キューの作成をロールに許可します。 -
delete-durable-queue
は、一致するアドレスの永続キューの削除をロールに許可します。 -
create-non-durable-queue
は、一致するアドレスの非永続キューの作成をロールに許可します。 -
delete-non-durable-queue
は、一致するアドレスの非永続キューの削除をロールに許可します。 -
Send
は、一致するアドレスへのメッセージの送信をロールに許可します。 -
consume
は、一致するアドレスにバインドされたキューからのメッセージの消費をロールに許可します。 -
manage
は、管理アドレスに管理メッセージを送信して管理操作を起動することをロールに許可します。
ロールベースのセキュリティーの設定
security-setting
にロールベースのセキュリティーを使用するには、最初に security-setting を作成する必要があります。たとえば、次のように news.europe.#
の security-setting
を作成します。これは news.europe.fr
や news.europe.tech.uk
などの news.europe.
から始まる宛先に適用されます。
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#:add() {"outcome" => "success"}
次に、作成した security-setting
にロールを追加し、そのロールのパーミッションを宣言します。以下の例では、dev
ロールが作成され、キューからの消費とキューへの送信のパーミッションが付与されます。また非永続キューの作成と削除も同様です。デフォルトは false
であるため、オンにするパーミッションのみを JBoss EAP に指示する必要があります。
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=dev:add(consume=true,delete-non-durable-queue=true,create-non-durable-queue=true,send=true) {"outcome" => "success"}
パーミッションの使用方法を詳しく説明すると、以下の例では admin
ロールを作成し、manage
パーミッションをオンにして管理メッセージを送信できるようにします。永続的なキューの作成と削除を行うためのパーミッションもオンにします。
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=admin:add(manage=true,create-durable-queue=true,delete-durable-queue=true) {"outcome" => "success"}
security-setting
の設定を確認するには、管理 CLI を使用します。recursive=true
オプションを使用して、パーミッションの全体表示を指定することを忘れないでください。
/subsystem=messaging-activemq/server=default:read-children-resources(child-type=security-setting,recursive=true) { "outcome" => "success", "result" => { "#" => {"role" => {"guest" => { "consume" => true, "create-durable-queue" => false, "create-non-durable-queue" => true, "delete-durable-queue" => false, "delete-non-durable-queue" => true, "manage" => false, "send" => true }}}, "news.europe.#" => {"role" => { "dev" => { "consume" => true, "create-durable-queue" => false, "create-non-durable-queue" => true, "delete-durable-queue" => false, "delete-non-durable-queue" => true, "manage" => false, "send" => true }, "admin" => { "consume" => false, "create-durable-queue" => true, "create-non-durable-queue" => false, "delete-durable-queue" => true, "delete-non-durable-queue" => false, "manage" => true, "send" => false } }} }
上記の例では、文字列 news.europe.
から始まるアドレスのパーミッションはすべて、管理 CLI で表示されます。要約すると、admin
ロールを持つユーザーのみが永続キューの作成または削除を行うことができます。また、dev
ロールを持つユーザーのみが非永続キューの作成または削除を行うことができます。さらに、dev
ロールを持つユーザーは、メッセージを送信または消費できますが、admin
ユーザーはできません。ただし、manage
パーミッションが true
に設定されているため、管理メッセージは送信できます。
アドレスのセットに複数の一致が当てはまる場合は、より限定的な一致が優先されます。たとえば、news.europe.tech.uk.#
アドレスは news.europe.tech.#
よりも限定的です。パーミッションは継承されないため、指定しないだけで、より限定的な security-setting
ブロックのパーミッションを効果的に拒否することができます。それ以外の方法では、アドレスのサブグループのパーミッションを拒否することはできません。
ユーザーと、ユーザーが持つロールのマッピングは、セキュリティーマネージャーが管理します。JBoss EAP には、ディスク上のファイルからユーザーの認証情報を読み取るユーザーマネージャーが含まれています。ユーザーマネージャーは JAAS または JBoss EAP セキュリティーにプラグインすることもできます。
セキュリティーマネージャーの設定の詳細は、JBoss EAP セキュリティーアーキテクチャー ガイドを参照してください。
7.2.1.1. レガシーセキュリティーサブシステムを使用した非認証クライアントのゲストロールの許可
認証されていないクライアントを JBoss EAP に自動許可させる必要がある場合、guest
ロールでは以下の 2 つの変更を行います。
新しい
module-option
をother
セキュリティードメインに追加します。新しいオプションのunauthenticatedIdentity
は、認証されていないクライアントにguest
アクセスを許可するよう JBoss EAP に指示します。これは管理 CLI を使用して実施することを推奨します。/subsystem=security/security-domain=other/authentication=classic/login-module=RealmDirect:map-put(name=module-options,key=unauthenticatedIdentity,value=guest) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } }
コマンドを発行した後にサーバーのリロードが必要なことに注意してください。以下の管理 CLI コマンドを使用すると新しいオプションを確認できます。
/subsystem=security/security-domain=other/authentication=classic/login-module=RealmDirect:read-resource() { "outcome" => "success", "result" => { "code" => "RealmDirect", "flag" => "required", "module" => undefined, "module-options" => { "password-stacking" => "useFirstPass", "unauthenticatedIdentity" => "guest" } } }
またサーバー設定ファイルは、コマンドの実行後に以下のようになります。
<subsystem xmlns="urn:jboss:domain:security:2.0"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> ... <login-module code="RealmDirect" flag="required"> ... <module-option name="unauthenticatedIdentity" value="guest"/> ... </login-module> ... </authentication> </security-domain> ... </security-domains> </subsystem>
#
文字を削除し、application-roles.properties
ファイルの以下の行をコメント解除します。ファイルはEAP_HOME/standalone/configuration/
またはEAP_HOME/domain/configuration/
のいずれかにあります。これは、スタンドアロンサーバー、ドメインコントローラーのいずれを使用しているかに応じて異なります。#guest=guest
これで、リモートクライアントは認証せずにサーバーにアクセスできるようになりました。guest
ロールに関連するパーミッションが付与されます。