5.4.2. LDAP 認証の設定
LegacyLDAPSecuritySettingPlugin
セキュリティー設定プラグインは、LDAPAuthorizationMap
および cachedLDAPAuthorizationMap
で過去に AMQ 6 で処理されたセキュリティー情報を読み取り、できるだけ、この情報を対応する AMQ 7 セキュリティー設定に変換します。
AMQ 6 および AMQ 7 のブローカーのセキュリティー実装は、完全に一致しません。そのため、プラグインは、2 つのバージョン間の翻訳を実行し、ほぼ同等の機能を実現します。
以下の例は、プラグインを設定する方法を示しています。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 security-settings
要素内にsecurity-setting-plugin
要素を追加します。以下に例を示します。<security-settings> <security-setting-plugin class-name="org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin"> <setting name="initialContextFactory" value="com.sun.jndi.ldap.LdapCtxFactory"/> <setting name="connectionURL" value="ldap://localhost:1024"/>`ou=destinations,o=ActiveMQ,ou=system` <setting name="connectionUsername" value="uid=admin,ou=system"/> <setting name="connectionPassword" value="secret"/> <setting name="connectionProtocol" value="s"/> <setting name="authentication" value="simple"/> </security-setting-plugin> </security-settings>
class-name
-
この実装は
org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin
です。 initialContextFactory
-
LDAP への接続に使用される初期コンテキストファクトリー。これは、常に
com.sun.jndi.ldap.LdapCtxFactory
(デフォルト値) に設定する必要があります。 connectionURL
-
LDAP URL <ldap://Host:Port> を使用してディレクトリーサーバーの場所を指定します。オプションでこの URL を修飾するには、スラッシュ
/
とその後にディレクトリーツリーの特定ノードの識別名 (DN) を追加します。例:ldap://ldapserver:10389/ou=system
デフォルト値はldap://localhost:1024
です。 connectionUsername
-
ディレクトリーサーバーへの接続を開くユーザーの DN。たとえば、
uid=admin,ou=system
です。ディレクトリーサーバーでは、通常、クライアントが接続を開くためにユーザー名/パスワードの認証情報を提示する必要があります。 connectionPassword
-
connectionUsername
の DN に一致するパスワード。Directory Information Tree (DIT) のディレクトリーサーバーでは、パスワードは通常、対応するディレクトリーエントリーにuserPassword
属性として保存されます。 connectionProtocol
- 現在は使用されていません。今後、このオプションを使用すると、ディレクトリーサーバーへの接続に Secure Socket Layer(SSL) を選択できます。このオプションはデフォルト値がないために明示的に設定する必要があります。
authentication
LDAP サーバーにバインドする際に使用する認証方法を指定します。このパラメーターの有効な値は
simple
(ユーザー名とパスワード) またはnone
(匿名) です。デフォルト値はsimple
です。注記Simple Authentication and Security Layer(SASL) 認証はサポートされ ません。
前述の設定例に記載されていない他の設定は次のとおりです。
destinationBase
-
子がすべての宛先にパーミッションを提供するノードの DN を指定します。この場合、DN はリテラル値です (つまり、プロパティー値の文字列は置き換えられません)。たとえば、このプロパティーの通常の値は
ou=destinations,o=ActiveMQ,ou=system
で、デフォルト値はou=destinations,o=ActiveMQ,ou=system
です。 filter
-
あらゆる種類の宛先のパーミッションを検索するときに使用する LDAP 検索フィルターを指定します。検索フィルターは、キューまたはトピックノードの子孫の 1 つとの照合を試行します。デフォルト値は
(cn=*)
です。 roleAttribute
-
ロールの DN の値が
filter
に一致するノードの属性を指定します。デフォルト値はuniqueMember
です。 adminPermissionValue
-
admin
パーミッションに一致する値を指定します。デフォルト値はadmin
です。 readPermissionValue
-
read
パーミッションに一致する値を指定します。デフォルト値はread
です。 writePermissionValue
-
write
パーミッションに一致する値を指定します。デフォルト値はwrite
です。 enableListener
-
LDAP サーバーでのを自動的に受信し、ブローカーの認証設定をリアルタイムで更新するリスナーを有効にするかどうかを指定します。デフォルト値は
true
です。 mapAdminToManage
レガシー (AMQ 6) の
admin
パーミッションを AMQ 7 のmanage
パーミッションにマップするかどうかを指定します。以下の表のマッピングセマンティクスの詳細を参照してください。デフォルト値はfalse
です。LDAP で定義されたキューまたはトピックの名前は、セキュリティー設定の一致として機能し、パーミッション値は AMQ 6 タイプから AMQ 7 タイプにマッピングされ、ロールはそのままマッピングされます。LDAP で定義されたキューまたはトピックの名前はセキュリティー設定の一致として機能するため、セキュリティー設定は想定どおりに JMS 宛先に適用されない可能性があります。これは、必要に応じて、AMQ 7 は常に JMS 宛先を jms.queue.または jms.topic.で接頭辞を付けるためです。
AMQ 6 には、
read
、write
、およびadmin
の 3 つのパーミッションタイプがあります。これらのパーミッションタイプは、ActiveMQ の Web サイト (Security) に記載されています。AMQ 7 には以下のパーミッションタイプがあります。
-
createAddress
-
deleteAddress
-
createDurableQueue
-
deleteDurableQueue
-
createNonDurableQueue
-
deleteNonDurableQueue
-
send
-
consume
-
manage
browse
以下の表は、セキュリティー設定プラグインが AMQ 6 パーミッションタイプを AMQ 7 パーミッションタイプにマッピングする方法を示しています。
AMQ 6 パーミッションタイプ AMQ 7 のパーミッションタイプ read
consume, browse
write
send
admin
createAddress、deleteAddress、createDurableQueue、deleteDurableQueue、createNonDurableQueue、deleteNonDurableQueue、manage(
mapAdminToManage
がtrue
に設定されている場合)下記のとおり、プラグインが AMQ 6 と AMQ 7 のパーミッションタイプ間の変換を実行するケースがあります。これにより、同等の機能を実現できます。
-
AMQ 6 には同様のパーミッションタイプがないため、このマッピングにはデフォルトで、AMQ 7 の
manage
パーミッションタイプが含まれません。ただし、mapAdminToManage
がtrue
に設定されている場合、プラグインは AMQ 6admin
パーミッションを AMQ 7manage
にマップします。 -
AMQ 6 の
admin
パーミッションタイプは、宛先が存在しない場合にブローカーが宛先を自動作成し、ユーザーがその宛先にメッセージを送信するかどうかを決定します。AMQ 7 では、ユーザーが宛先にメッセージを送信するパーミッションがある場合に、自動的に宛先の自動作成を許可します。したがって、プラグインは、デフォルトで、レガシーadmin
パーミッションを上記の AMQ 7 パーミッションにマップします。また、このプラグインは、mapAdminToManage
がtrue
に設定されている場合に、AMQ 6admin
パーミッションを AMQ 7 のmanage
パーミッションにマップします。
-
AMQ 6 には同様のパーミッションタイプがないため、このマッピングにはデフォルトで、AMQ 7 の
-
allowQueueAdminOnRead
createDurableQueue、createNonDurableQueue、および deleteDurableQueue パーミッションにレガシー読み取りパーミッションをマッピングするかどうか。これにより、JMS クライアントが admin パーミッションなしに永続サブスクリプションと非永続サブスクリプションを作成できます。これは AMQ 6 で許可されます。デフォルト値は false です。
以下の表は、
allowQueueAdminOnRead
がtrue
の場合に、セキュリティー設定プラグインが AMQ 6 パーミッションタイプを AMQ 7 パーミッションタイプにマッピングする方法を示しています。AMQ 6 パーミッションタイプ AMQ 7 のパーミッションタイプ read
consume, browse, createDurableQueue, createNonDurableQueue, deleteDurableQueue
write
send
admin
createAddress、deleteAddress、deleteNonDurableQueue、manage(
mapAdminToManage
がtrue
に設定されている場合)