2011-10-20 3 views
28

私はRabbitMQによって提供されたGet Startedガイドを読んでおり、第6の例もstormed-amqpに寄稿しているので、AMQPに関する知識があります。マルチテナントシステムのRabbitMQでキューをプライベート/セキュアにするにはどうすればよいですか?

しかし、ガイドは包括的ではなく、認証や認可などのことを避けています。

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

基本的に、私は以下のアサーションを含むデータバスを、分離したい:

  1. 当社のサーバーは(これは容易に取り扱うと関連しているではなく、疑問視され、間違ったテナントプログラムにデータを配信しません)。
  2. テナントプログラムは、それらのキュー以外のキューからデータを読み取ることができません。
  3. テナントプログラムは、自分以外のキューに書き込むことができません。

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

誰でももっと高度なトピックを教えていただけますか?私はRabbitMQがこの種のシステムをサポートできると確信しています。私はRabbitMQに私が知らないことがあることを知っています。幽霊は何ですか?そして、彼らはこの状況で助けになるでしょうか?私はちょうど私の現在の知識のソリューションがルーティングキー、キュー名と交換に限定されて表示されません。

答えて

2

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

+0

私は実際にその例の実装をstormed-amqpライブラリ(上記のリンク先)に書きました。私は '排他的な'指示が十分なセキュリティであるかどうか確信がありませんでしたが、私はそれがあるかどうかを調べるためにそれを試します。ありがとう。 – Brian

6

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

まず、仮想ホスト内ですべての処理を行い、一般的な仮想ホストを完全にブロックする、つまり仮想ホスト上でキューや交換を宣言しないようにします。

関連する問題