9.2. 着信クライアント接続のセキュリティー保護
SSL/TLS および SASL を使用して、クライアントトラフィックの適切なセキュリティーレベルをルーターネットワークに提供することができます。以下の方法を使用して、AMQP クライアント、外部コンテナー、または edge ルーターから受信接続をセキュリティー保護することができます。
9.2.1. SSL/TLS 暗号化の有効化
SSL/TLS を使用して、クライアントから着信接続を暗号化できます。
前提条件
- X.509 認証局 (CA) がクライアント接続に存在している必要があります。
- セキュリティー証明書は CA によって生成および署名されている必要があります。
手順
-
/etc/qpid-dispatch/qdrouterd.conf
設定ファイルを開きます。 ルーターに、クライアント接続の秘密鍵と証明書を定義する
sslProfile
が含まれていない場合は、これを追加します。この
sslProfile
には、ルーターがクライアントからの接続の暗号化に使用する秘密鍵と証明書の場所が含まれます。sslProfile { name: service-tls certFile: /etc/pki/tls/certs/tls.crt caCertFile: /etc/pki/tls/certs/ca.crt privateKeyFile: /etc/pki/tls/private/tls.key password: file:/etc/pki/tls/private/password.txt ... }
name
-
この
sslProfile
の参照に使用できる一意の名前。 certFile
- このルーターのパブリック証明書を含むファイルへの絶対パス。
caCertFile
- ルーターが受信クライアントの認証に使用する CA 証明書への絶対パス。
privateKeyFile
このルーターのパブリック証明書に対する秘密鍵が含まれるファイルへの絶対パス。
注記qdrouterd
または root ユーザーが秘密鍵にアクセスできることを確認します。以下は例になります。chmod 0600 /etc/pki/tls/private/tls.key chown qdrouterd /etc/pki/tls/private/tls.key
パスワード
証明書キーのロックを解除するパスワード。証明書キーにパスワードがない場合は、指定する必要はありません。異なる接頭辞を使用することで、セキュリティー要件に応じてパスワードを複数回指定できます。
パスワードを含むファイルへの絶対パスを指定します。これは、パスワードを含むファイルにパーミッションを設定することができるため、最も安全なオプションです。以下は例になります。
password: file:/etc/qpid-dispatch-certs/inter-router/password.txt
パスワードを保存する環境変数を指定します。他のプロセスの環境は特定のプラットフォームで表示されるため、このオプションの使用には注意が必要です。以下は例になります。
password: env:CERT_PASSWORD
パスワードをクリアテキストで指定します。このオプションは安全ではないため、セキュリティーが懸念されていない場合にのみ使用してください。以下は例になります。
password: pass:mycertpassword
SSL/TLS を使用して接続を暗号化するように、この接続が
listener
を設定します。この例では、
normal
リスナーがクライアントからの接続を暗号化するように設定します。listener { host: 0.0.0.0 port: 5672 role: normal sslProfile: inter_router_tls requireSsl: yes ... }
sslProfile
-
SSL/TLS プライベートキーおよびクライアント接続の証明書を定義する
sslProfile
の名前。 requireSsl
-
true
を指定して SSL/TLS で接続を暗号化します。
9.2.2. SSL/TLS クライアント認証の有効化
SSL/TLS 暗号化の他に、SSL/TLS を使用してクライアントから受信接続を認証することもできます。この方法では、クライアントが独自の X.509 証明書をルーターに提示する必要があります。ルーターを使用してクライアントのアイデンティティーを検証します。
前提条件
SSL/TLS 暗号化を設定する必要があります。
詳細は、「SSL/TLS 暗号化の有効化」 を参照してください。
- クライアントには、ルーターに対する認証に使用できる X.509 証明書が必要です。
手順
-
/etc/qpid-dispatch/qdrouterd.conf
設定ファイルを開きます。 SSL/TLS を使用してクライアントを認証するように、この接続の
listener
を設定します。この例では、クライアントからの受信接続を認証するために、
normal
リスナーに SSL/TLS 認証を追加します。クライアントは、独自の X.509 証明書を提示してルーターにだけ接続でき、ルーターを使用してクライアントのアイデンティティーを検証するために使用されます。listener { host: 0.0.0.0 port: 5672 role: normal sslProfile: service-tls requireSsl: yes authenticatePeer: yes saslMechanisms: EXTERNAL ... }
authenticatePeer
-
クライアントのアイデンティティーを認証するには
yes
を指定します。 saslMechanisms
-
X.509 クライアント証明書認証を有効にするために
EXTERNAL
を指定します。
9.2.3. ユーザー名とパスワード認証の有効化
SASL PLAIN メカニズムを使用して、ユーザー名とパスワードのセットに対して受信クライアント接続を認証できます。このメソッドは独自に使用することも、SSL/TLS 暗号化と組み合わせることもできます。
前提条件
cyrus-sasl-plain
プラグインがインストールされている。Cyrus SASL は、プラグインを使用して特定の SASL メカニズムをサポートします。特定の SASL メカニズムを使用する前に、関連するプラグインをインストールする必要があります。
Red Hat Enterprise Linux の Cyrus SASL プラグインのリストを表示するには、
yum search cyrus-sasl
コマンドを使用します。Cyrus SASL プラグインをインストールするには、yum install <plugin>
コマンドを使用します。
手順
必要に応じて、ユーザー名とパスワードを SASL データベースに追加します。
この例では、新しいユーザー (user1@example.com) を SASL データベース (qdrouterd.sasldb) に追加します。
$ sudo saslpasswd2 -c -f qdrouterd.sasldb -u example.com user1
注記完全なユーザー名は、入力したユーザー名 (
<user-name>
@<domain-name>
) です。ユーザーをデータベースに追加する場合、ドメイン名を指定する必要はありませんが、これを指定しないと、デフォルトのドメインが自動的に追加されます (ツールが実行されているマシンのホスト名)。qdrouterd
プロセスが SASL データベースを読み取りできることを確認します。qdrouterd
プロセスが非特権ユーザーとして実行される場合は、ルーターが読み取れるように SASL データベースのパーミッションまたは所有権を調整する必要がある場合があります。この例では、qdrouterd ユーザーが SASL データベースの所有者になります。
$ sudo chown qdrouterd /var/lib/qdrouterd/qdrouterd.sasldb
/etc/sasl2/qdrouterd.conf
設定ファイルを開きます。以下の例では、
/etc/sasl2/qdrouterd.conf
設定ファイルを示しています。pwcheck_method: auxprop auxprop_plugin: sasldb sasldb_path: qdrouterd.sasldb mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI
-
mech_list
属性にPLAIN
メカニズムが含まれることを確認します。 -
/etc/qpid-dispatch/qdrouterd.conf
設定ファイルを開きます。 router
セクションで、SASL 設定ファイルへのパスを指定します。router { mode: interior id: Router.A saslConfigDir: /etc/sasl2/ }
saslConfigDir
- ユーザー名とパスワードを格納する SASL データベースへのパスが含まれる SASL 設定ファイルへのパス。
SASL PLAIN を使用してクライアントを認証するように、この接続の
listener
を設定します。この例では、
listener
に基本的なユーザー名とパスワード認証を設定します。この場合、SSL/TLS 暗号化は使用されません。listener { host: 0.0.0.0 port: 5672 authenticatePeer: yes saslMechanisms: PLAIN }
9.2.4. Kerberos との統合
環境に Kerberos を実装している場合、GSSAPI
SASL メカニズムとともに使用して受信接続を認証できます。
前提条件
- Kerberos インフラストラクチャーはお使いの環境にデプロイする必要があります。
Kerberos 環境では、
amqp/<hostname>@<realm>
のサービスプリンシパルを設定する必要があります。これは、AMQ Interconnect が使用するサービスプリンシパルです。
-
cyrus-sasl-gssapi
パッケージが各クライアントおよびルーターホストマシンにインストールされている。
手順
ルーターのホストマシンで、
/etc/sasl2/qdrouterd.conf
設定ファイルを開きます。以下の例では、
/etc/sasl2/qdrouterd.conf
設定ファイルを示しています。pwcheck_method: auxprop auxprop_plugin: sasldb sasldb_path: qdrouterd.sasldb keytab: /etc/krb5.keytab mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI
以下を確認します。
-
mech_list
属性にはGSSAPI
メカニズムが含まれます。 -
keytab
属性は、キータブファイルの場所を参照します。
-
-
/etc/qpid-dispatch/qdrouterd.conf
設定ファイルを開きます。 router
セクションで、SASL 設定ファイルへのパスを指定します。router { mode: interior id: Router.A saslConfigDir: /etc/sasl2/ }
saslConfigDir
- SASL データベースへのパスが含まれる SASL 設定ファイルへのパス。
認証に Kerberos を使用する各着信接続に対して、
listener
がGSSAPI
メカニズムを使用するように設定します。listener { host: 0.0.0.0 port: 5672 authenticatePeer: yes saslMechanisms: GSSAPI }