第6章 セキュリティー
AMQ JMS には、アプリケーションのニーズに応じて活用できるセキュリティー関連の設定オプションが複数あります。
アプリケーション内で Connection
を作成する際に、ユーザー名とパスワードなどの基本的なユーザーの認証情報を ConnectionFactory
に直接渡す必要があります。ただし、no-argument ファクトリーメソッドを使用している場合は、接続 URI でユーザーの認証情報を指定することもできます。詳細は、「JMS オプション」 セクションを参照してください。
もう 1 つの一般的なセキュリティー対策として、SSL/TLS が使用されます。クライアントは、amqps
URI スキームが接続 URI で指定され、動作を設定するさまざまなオプションとともに、SSL/TLS トランスポートを介してサーバーに 接続 します。詳細は、「SSL/TLS オプション」 セクションを参照してください。
以前の項目と並べると、クライアントが、対応するすべてのものから選択するのではなく、サーバーで提供できる特定の SASL メカニズムのみを使用できるようにクライアントを制限することが望ましい場合があります。詳細は、「AMQP オプション」 セクションを参照してください。
受信した ObjectMessage
で getObject()
を呼び出すアプリケーションはデシリアライズ中に作成された型を制限する必要がある場合があります。AMQP タイプシステムを使用して設定されたメッセージ本文は ObjectInputStream
メカニズムを使用しないため、この予防措置は必要ありません。詳細は、「デシリアライズポリシーオプション」 セクションを参照してください。
6.1. Kerberos を使用した認証
クライアントは、適切に設定されたサーバーで使用される場合に Kerberos を使用して認証するように設定できます。Kerberos を有効にするには、以下の手順に従います。
amqp.saslMechanisms
URI オプションを使用して、SASL 認証にGSSAPI
メカニズムを使用するようにクライアントを設定します。amqp://myhost:5672?amqp.saslMechanisms=GSSAPI failover:(amqp://myhost:5672?amqp.saslMechanisms=GSSAPI)
java.security.auth.login.config
システムプロパティーを、KerberosLoginModule
の適切な設定が含まれる JAAS ログイン設定ファイルのパスに設定します。-Djava.security.auth.login.config=<login-config-file>
ログイン設定ファイルは以下の例のようになります。
amqp-jms-client { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true; };
使用される正確な設定は、接続に対してクレデンシャルを確立する方法と、使用中の特定の LoginModule
によって異なります。Oracle Krb5LoginModule
の詳細は、Oracle Krb5LoginModule
class reference を参照してください。IBM Java 8 Krb5LoginModule
の詳細は、IBM Krb5LoginModule
class reference を参照してください。
LoginModule
を設定して、プリンシパルの指定や既存のチケットキャッシュまたはキータブを使用するかどうかなど、Kerberos プロセスに使用する認証情報を確立できます。しかし、LoginModule
設定が必要なすべてのクレデンシャルを確立する手段を提供しない場合、ConnectionFactory
を使用して Connection
を作成する場合、クライアント Connection
オブジェクトからユーザー名とパスワードの値が渡されます。
Kerberos は認証の目的でのみサポートされることに注意してください。暗号化には SSL/TLS 接続を使用します。
以下の接続 URI オプションを使用して、Kerberos 認証プロセスに影響を与えることができます。
- sasl.options.configScope
-
認証に使用されるログイン設定エントリーの名前。デフォルトは
amqp-jms-client
です。 - sasl.options.protocol
-
GSSAPI SASL プロセス中に使用されるプロトコル値。デフォルトは
amqp
です。 - sasl.options.serverName
-
GSSAPI SASL プロセス中に使用される
serverName
値。デフォルトは、接続 URI からのサーバーのホスト名です。
これまでで説明した amqp.
オプションおよび transport.
オプションと同様に、これらのオプションはホストごとに指定するか、フェイルオーバー URI のすべてのホストネストされたオプションとして指定する必要があります。