5.5. 認証および承認での Kerberos の使用
AMQP プロトコルでメッセージを送受信する場合、クライアントは Simple Authentication and Security Layer (SASL) フレームワークの GSSAPI メカニズムを使用して、AMQ Broker が認証する Kerberos セキュリティー認証情報を送信できます。Kerberos 認証情報は、認証されたユーザーを LDAP ディレクトリーまたはテキストベースのプロパティーファイルで設定された割り当てられたロールにマッピングすることで、承認にも使用できます。
Transport Layer Security (TLS) と共に SASL を使用して、メッセージングアプリケーションのセキュリティーを確保できます。SASL はユーザー認証を行い、TLS はデータの整合性を確保します。
AMQ Broker が Kerberos 認証情報を認証および承認する前に、Kerberos インフラストラクチャーをデプロイし、設定する必要があります。Kerberos のデプロイメントに関する詳細は、オペレーティングシステムのドキュメントを参照してください。
- RHEL 7 については、Kerberos の使用 を参照してください。
- Windows の場合は、Kerberos Authentication Overview を参照してください。
- Oracle または IBM JDK のユーザーは、Java Cryptography Extension(JCE) をインストールする必要があります。詳細は、Oracle version of the JCE または IBM version of the JCE のドキュメントを参照してください。
以下の手順では、認証および承認に Kerberos を設定する方法を説明します。
5.5.1. Kerberos を使用するネットワーク接続の設定
AMQ Broker は、Simple Authentication and Security Layer (SASL) フレームワークの GSSAPI メカニズムを使用して、Kerberos セキュリティー認証情報と統合します。AMQ Broker で Kerberos を使用するには、Kerberos 認証情報を使用するクライアントを認証または承認する各アクセプターを GSSAPI メカニズムを使用するように設定する必要があります。
以下の手順では、Kerberos を使用するようにアクセプターを設定する方法を説明します。
前提条件
- AMQ Broker が Kerberos 認証情報を認証および承認する前に、Kerberos インフラストラクチャーをデプロイし、設定する必要があります。
手順
ブローカーを停止します。
Linux の場合:
<broker_instance_dir>/bin/artemis stop
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe stop
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 name-value ペアの
saslMechanisms=GSSAPI
をacceptor
の URL のクエリー文字列に追加します。<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI </acceptor>
上記の設定は、Kerberos クレデンシャルの認証時に、アクセプターが GSSAPI メカニズムを使用することを意味します。
(オプション)
PLAIN
およびANONYMOUS
SASL メカニズムもサポートされます。複数のメカニズムを指定するには、コンマ区切りリストを使用します。以下に例を示します。<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN </acceptor>
結果は、
GSSAPI
およびPLAIN
SASL メカニズムの両方を使用するアクセプターです。ブローカーを起動します。
Linux の場合:
<broker_instance_dir>/bin/artemis run
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe start
関連情報
- アクセプターの詳細は、「アクセプターについて」 を参照してください。
5.5.2. Kerberos 認証情報を使用したクライアントの認証
AMQ Broker は、Simple Authentication and Security Layer (SASL) フレームワークからの GSSAPI メカニズムを使用する AMQP 接続の Kerberos 認証をサポートします。
ブローカーは、Java Authentication and Authorization Service (JAAS) を使用して Kerberos アクセプターの認証情報を取得します。Java インストールに含まれる JAAS ライブラリーは、Kerberos 認証情報を認証するログインモジュール Krb5LoginModule
でパッケージ化されています。Krb5LoginModule
の詳細は、Java ベンダーのドキュメントを参照してください。たとえば、Oracle は、Java 8 ドキュメント の一部として、Krb5LoginModule
ログインモジュールに関する情報を提供します。
前提条件
- Kerberos セキュリティー認証情報を使用して AMQP 接続を認証する前に、アクセプターの GSSAPI メカニズムを有効にする必要があります。詳細は、「Kerberos を使用するネットワーク接続の設定」 を参照してください。
手順
ブローカーを停止します。
Linux の場合:
<broker_instance_dir>/bin/artemis stop
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe stop
-
<broker_instance_dir>/etc/login.config
設定ファイルを開きます。 amqp-sasl-gssapi
という名前の設定スコープを追加します。以下の例は、Oracle および OpenJDK バージョンの JDK にあるKrb5LoginModule
の設定を示しています。amqp-sasl-gssapi { com.sun.security.auth.module.Krb5LoginModule required isInitiator=false storeKey=true useKeyTab=true principal="amqp/my_broker_host@example.com" debug=true; };
amqp-sasl-gssapi
-
デフォルトでは、ブローカーの GSSAPI メカニズム実装は
amqp-sasl-gssapi
という名前の JAAS 設定スコープを使用して Kerberos アクセプター認証情報を取得します。 Krb5LoginModule
-
このバージョンの
Krb5LoginModule
は、Oracle および OpenJDK バージョンの JDK で提供されます。Java ベンダーのドキュメントを参照して、Krb5LoginModule
の完全修飾クラス名とその利用可能なオプションを確認します。 useKeyTab
-
Krb5LoginModule
は、プリンシパルの認証時に Kerberos キータブを使用するように設定されます。キータブは、Kerberos 環境からツールを使用して生成されます。Kerberos キータブの生成に関する詳細は、ベンダーのドキュメントを参照してください。 principal
-
プリンシパルは
amqp/my_broker_host@example.com
に設定されます。この値は、Kerberos 環境で作成されたサービスプリンシパルに対応する必要があります。サービスプリンシパルの作成に関する詳細は、ベンダーのドキュメントを参照してください。
ブローカーを起動します。
Linux の場合:
<broker_instance_dir>/bin/artemis run
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe start
5.5.2.1. 代替設定スコープの使用
AMQP アクセプターの URL にパラメーター saslLoginConfigScope
を追加して、 別の設定スコープを指定できます。以下の設定例では、saslLoginConfigScope
パラメーターに alternative-sasl-gssapi
の値が指定されています。結果は、<broker_instance_dir>/etc/login.config
で宣言される alternative-sasl-gssapi
という名前の代わりのスコープを使用するアクセプターです。
<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN;saslLoginConfigScope=alternative-sasl-gssapi` </acceptor>
5.5.3. Kerberos 認証情報を使用したクライアントの承認
AMQ Broker には、ロールのマッピング時に他のセキュリティーモジュールで使用される JAAS Krb5LoginModule
ログインモジュールの実装が含まれています。モジュールは、Kerberos 認証されていないピアプリンシパルを AMQ Broker UserPrincipal として設定された Subject のプリンシパルに追加します。その後、認証情報は PropertiesLoginModule
または LDAPLoginModule
モジュールに渡して、Kerberos 認証のピアプリンシパルを AMQ Broker ロールにマップできます。
Kerberos ピアプリンシパルはロールメンバーとしてのみ存在し、ブローカーユーザーとしては存在しません。
前提条件
- Kerberos セキュリティー認証情報を使用して AMQP 接続を承認する前に、アクセプターの GSSAPI メカニズムを有効にする必要があります。
手順
ブローカーを停止します。
Linux の場合:
<broker_instance_dir>/bin/artemis stop
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe stop
-
<broker_instance_dir>/etc/login.config
設定ファイルを開きます。 AMQ Broker
Krb5LoginModule
およびLDAPLoginModule
の設定を追加します。LDAP プロバイダーのドキュメントを参照して、設定オプションを確認します。以下は設定例です。
org.apache.activemq.artemis.spi.core.security.jaas.Krb5LoginModule required ; org.apache.activemq.artemis.spi.core.security.jaas.LDAPLoginModule optional initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory connectionURL="ldap://localhost:1024" authentication=GSSAPI saslLoginConfigScope=broker-sasl-gssapi connectionProtocol=s userBase="ou=users,dc=example,dc=com" userSearchMatching="(krb5PrincipalName={0})" userSearchSubtree=true authenticateUser=false roleBase="ou=system" roleName=cn roleSearchMatching="(member={0})" roleSearchSubtree=false ;
注記上記の例で示される
Krb5LoginModule
のバージョンは AMQ Broker で配布され、Kerberos アイデンティティーをロールマッピングに使用できるブローカーアイデンティティーに変換します。ブローカーを起動します。
Linux の場合:
<broker_instance_dir>/bin/artemis run
Windows の場合:
<broker_instance_dir>\bin\artemis-service.exe start
関連情報
- AMQ Broker で GSSAPI メカニズムを有効にする方法は、「Kerberos を使用するネットワーク接続の設定」 を参照してください。
-
PropertiesLoginModule
の詳細は、「基本的なユーザーとパスワード認証の設定」 を参照してください。 -
LDAPLoginModule
の詳細は、「クライアント認証用の LDAP の設定」 を参照してください。