第22章 メッセージキュー
メッセージキューサービスは、OpenStack でのプロセス間通信を容易にします。これは、以下のメッセージキューサービスのバックエンドを使用して行われます。
- RabbitMQ: Red Hat OpenStack Platform はデフォルトで RabbitMQ を使用します。
- Qpid
RabbitMQ と Qpid はいずれも Advanced Message Queuing Protocol (AMQP) フレームワークで、ピアツーピア通信用のメッセージキューを提供します。キューの実装は、通常、キューサーバーの集中的または分散プールとしてデプロイされます。
メッセージキューは、OpenStack デプロイメント全体にわたるコマンドおよび制御機能を効果的に容易化します。キューへのアクセスが許可されたら、それ以上の承認チェックは実行されません。キュー経由でアクセス可能なサービスは、実際のメッセージペイロード内のコンテキストおよびトークンを検証します。ただし、トークンは再使用でき、インフラストラクチャー内の他のサービスを承認できるため、トークンの有効期限に注意してください。
OpenStack は、メッセージ署名などのメッセージレベルの機密性をサポートしません。したがって、メッセージトランスポート自体をセキュア化し、認証する必要があります。高可用性 (HA) 設定には、キューツーキュー認証および暗号化を実行する必要があります。
22.1. メッセージングトランスポートのセキュリティー
AMQP ベースのソリューション (Qpid および RabbitMQ) は、TLS を使用したトランスポートレベルのセキュリティーをサポートします。
メッセージキューのトランスポートレベルの暗号化を有効にすることを検討してください。メッセージングクライアント接続に TLS を使用すると、メッセージングサーバーへの改ざんおよび盗聴から通信を保護することができます。以下のガイダンスは、TLS が一般的な 2 つのメッセージングサーバー (Qpid および RabbitMQ) 用にどのように設定されているかに関するものです。メッセージングサーバーがクライアント接続を検証するために使用する信頼できる認証局 (CA) バンドルを設定する場合は、これをノードに使用される CA のみに制限することが推奨されます (内部管理 CA が推奨されます)。信頼された CA のバンドルは、承認されるクライアント証明書を決定し、TLS 接続の設定のクライアント-サーバー検証手順をスキップします。
証明書と鍵ファイルをインストールする場合は、ファイルパーミッションが制限されており (たとえば、chmod 0600
を使用)、メッセージングサーバーの他のプロセスやユーザーによる不正アクセスを阻止するために、その所有権がメッセージングサーバーのデーモンユーザーに制限されるようにしてください。
22.1.1. RabbitMQ サーバーの SSL 設定
以下の行をシステム全体の RabbitMQ 設定ファイル (通常は /etc/rabbitmq/rabbitmq.config
) に追加する必要があります。
[ {rabbit, [ {tcp_listeners, [] }, {ssl_listeners, [{"<IP address or hostname of management network interface>", 5671}] }, {ssl_options, [{cacertfile,"/etc/ssl/cacert.pem"}, {certfile,"/etc/ssl/rabbit-server-cert.pem"}, {keyfile,"/etc/ssl/rabbit-server-key.pem"}, {verify,verify_peer}, {fail_if_no_peer_cert,true}]} ]} ].
SSL 以外のポートでリッスンしないように、tcp_listeners
オプションは []
に設定します。サービスの管理ネットワークでのみリッスンするように、ssl_listeners
オプションは制限する必要があります。