5.4.2. LDAP 認証の設定

LegacyLDAPSecuritySettingPlugin セキュリティー設定プラグインは、LDAPAuthorizationMap および cachedLDAPAuthorizationMap で過去に AMQ 6 で処理されたセキュリティー情報を読み取り、できるだけ、この情報を対応する AMQ 7 セキュリティー設定に変換します。

AMQ 6 および AMQ 7 のブローカーのセキュリティー実装は、完全に一致しません。そのため、プラグインは、2 つのバージョン間の翻訳を実行し、ほぼ同等の機能を実現します。

以下の例は、プラグインを設定する方法を示しています。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. 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 には、readwrite、および 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(mapAdminToManagetrue に設定されている場合)

    下記のとおり、プラグインが AMQ 6 と AMQ 7 のパーミッションタイプ間の変換を実行するケースがあります。これにより、同等の機能を実現できます。

    • AMQ 6 には同様のパーミッションタイプがないため、このマッピングにはデフォルトで、AMQ 7 の manage パーミッションタイプが含まれません。ただし、mapAdminToManagetrue に設定されている場合、プラグインは AMQ 6 admin パーミッションを AMQ 7 manage にマップします。
    • AMQ 6 の admin パーミッションタイプは、宛先が存在しない場合にブローカーが宛先を自動作成し、ユーザーがその宛先にメッセージを送信するかどうかを決定します。AMQ 7 では、ユーザーが宛先にメッセージを送信するパーミッションがある場合に、自動的に宛先の自動作成を許可します。したがって、プラグインは、デフォルトで、レガシー admin パーミッションを上記の AMQ 7 パーミッションにマップします。また、このプラグインは、mapAdminToManagetrue に設定されている場合に、AMQ 6 admin パーミッションを AMQ 7 の manage パーミッションにマップします。