web-dev-qa-db-ja.com

マルチテナンシーシステムのRabbitMQでキューをプライベート/セキュアにするにはどうすればよいですか?

RabbitMQが提供する Get Started ガイドを読み、6番目の例を stormed-amqp に提供したので、AMQPについての知識が蓄積されています。

ただし、このガイドは包括的ではなく、認証や承認などを回避しています。

RPCタイプの状況でRabbitMQを使用するマルチテナンシーシステムを設計しています。このRPCの実装のおそらく異なる点は、リモートプロシージャが実際にはシステム上の他のテナントプログラムになることです。

基本的に、次のアサーションを含むデータバスを分離します。

  1. 私たちのサーバーはデータを間違ったテナントプログラムに配信しません(これは簡単に処理され、関連はありますが問題ではありません)。
  2. テナントプログラムは、自分のものではないキューからデータを読み取ることができません。
  3. テナントプログラムは、自分のものではないキューに書き込むことができません。

この質問は、RabbitMQのセキュリティに関するものです。 RabbitMQがエンドツーエンドの暗号化を提供するSSLをサポートしていること、RabbitMQがユーザー名/パスワード認証をサポートしていることを知っています。これらがキューのプライベート使用(別名ACL)に適用されるかどうかはわかりません。つまり、接続が暗号化され、ユーザーが検証される可能性がありますが、ユーザーはすべてのキューに対して読み取り/書き込みを行うことができます。

誰かがこのより高度なトピックについて私を啓発できますか? RabbitMQはこの種のシステムをサポートできると確信していますが、必ずしもポジティブではありません。 RabbitMQには、知らないことがあることがわかっています。 vhostsとは何ですか?この状況で役立ちますか?私の現在の知識では、ルーティングキー、キュー名、および交換に限定された解決策を見ていません。

30
Brian

マルチテナンシーシステムでは、ユーザーが持つアクセス許可を定義することにより、キューをセキュリティで保護します。 RabbitMQ管理者ガイドのアクセス制御セクションを読む http://www.rabbitmq.com/admin-guide.html

すべてをvhosts内で発生させ、汎用vhostを完全にブロックすることから始めます。つまり、vhost "/"でキューと交換を誰にも宣言させないでください。

6
Michael Dillon

私は信じています this チュートリアルはあなたが何をしようとしているのかを示しています。
という事実 コールバックキュー は排他的な自動削除であり、その名前は自動生成され、十分なセキュリティを提供します。

2
daharon

Rabbitmqサーバーのセキュリティのために、RabbitMQにはいくつかのセキュリティメカニズムがあります。

  1. アクセス制御
  2. SASL認証
  3. SSLサポート
0
hien711