2011-10-20 15 views
28

Przeczytałem poradnik dostarczony przez RabbitMQ i nawet włączyłem szósty przykład do stormed-amqp, więc mam wyczucie wiedzy o AMQP.W jaki sposób kolejki mogą stać się prywatne/bezpieczne w RabbitMQ w systemie wielodostępu?

Przewodnik nie jest jednak obszerny i unika takich spraw, jak uwierzytelnianie i autoryzacja.

Projektujemy system wielodostępności, który będzie wykorzystywał RabbitMQ w sytuacji typu RPC. Prawdopodobnie różni się to wdrażaniem RPC, ponieważ zdalne procedury będą faktycznie innymi programami najemców w systemie.

Zasadniczo, chcę odizolować magistrali danych, który obejmuje następujące twierdzenia:

  1. Nasz serwer nie będzie dostarczać dane do niewłaściwego programu najemcy (to jest obsługiwane łatwo i jest istotna, ale nie zakwestionowanych).
  2. Programy najemców nie mogą odczytać danych z kolejek, które nie są ich.
  3. Programy najemców nie mogą pisać w kolejkach, które nie należą do nich.

To pytanie dotyczy wyłącznie zabezpieczeń RabbitMQ. Wiem, że RabbitMQ obsługuje SSL, który zapewnia szyfrowanie end-to-end, i wiem, że RabbitMQ obsługuje uwierzytelnianie nazwy użytkownika/hasła. Nie wiem, czy te rzeczy mają zastosowanie do prywatyzacji użycia kolejki (alias ACL), tj. Połączenie może być szyfrowane, a użytkownik może zostać zweryfikowany, ale użytkownik może czytać/pisać ze wszystkich kolejek.

Czy ktoś może mnie oświecić w tym bardziej zaawansowanym temacie? Jestem przekonany, że RabbitMQ może wspierać ten rodzaj systemu, ale nie do końca pozytywnie. Wiem, że są rzeczy w RabbitMQ, o których po prostu nie wiem, np. czym są vhostowie i czy pomogą w tej sytuacji? Po prostu nie widzę, aby rozwiązanie w mojej obecnej wiedzy ograniczało się do kluczy routingu, nazw kolejek i wymian.

Odpowiedz

2

Wierzę, że tutorial samouczka pokazuje, co próbujesz zrobić.
Fakt, że kolejka wywołania zwrotnego jest wyłączna, automatycznie usuwa i ma automatycznie wygenerowaną nazwę, powinna zapewnić wystarczającą ochronę.

+0

Właściwie napisałem implementację tego przykładu w bibliotece stormed-amqp (jak wyżej). Nie byłem pewien, czy dyrektywa "wyłączna" była wystarczającym zabezpieczeniem, ale eksperymentuję z nią, aby sprawdzić, czy tak jest. Dzięki. – Brian

6

W systemie wielozadaniowym można ustawić kolejki jako bezpieczne, definiując uprawnienia użytkowników. Przeczytaj sekcję kontroli dostępu w przewodniku administratora RabbitMQ tutaj http://www.rabbitmq.com/admin-guide.html

Zacznij od tego, aby wszystko działo się wewnątrz vhostów i całkowicie zablokuj ogólny vhost, czyli nie pozwól nikomu zadeklarować kolejki i wymiany na vhost "/".

Powiązane problemy