2011-10-20 19 views
28

Tôi đã đọc hướng dẫn Get Started do RabbitMQ cung cấp và thậm chí đã đóng góp ví dụ thứ sáu vào số stormed-amqp, vì vậy tôi có kiến ​​thức về AMQP.Hàng đợi có thể được thực hiện riêng tư/bảo mật như thế nào trong RabbitMQ trong một hệ thống đa nhiệm?

Tuy nhiên, hướng dẫn không phải là toàn diện và tránh những thứ như xác thực và ủy quyền.

Chúng tôi đang thiết kế một hệ thống đa nhiệm sẽ sử dụng RabbitMQ trong một loại tình huống RPC. Có lẽ điều khác biệt về việc thực hiện RPC này là các thủ tục từ xa sẽ thực sự là các chương trình người thuê nhà khác trên hệ thống.

Về cơ bản, tôi muốn để cô lập các xe buýt dữ liệu, trong đó bao gồm các khẳng định sau:

  1. máy chủ của chúng tôi sẽ không cung cấp dữ liệu cho chương trình thuê nhà sai (điều này được xử lý một cách dễ dàng và có liên quan nhưng không phải chất vấn).
  2. Chương trình người thuê nhà không thể đọc dữ liệu từ hàng đợi không phải của họ.
  3. Chương trình thuê nhà không thể ghi vào hàng đợi không phải của họ.

Câu hỏi này nghiêm chỉnh về bảo mật RabbitMQ. Tôi biết rằng RabbitMQ hỗ trợ SSL, cung cấp mã hóa đầu cuối, và tôi biết RabbitMQ hỗ trợ xác thực tên người dùng/mật khẩu. Tôi không biết liệu những điều này có áp dụng để tư nhân hóa việc sử dụng hàng đợi (hay còn gọi là ACL), tức là kết nối có thể được mã hóa và người dùng có thể được xác minh nhưng người dùng có thể đọc/ghi từ tất cả các hàng đợi.

Ai có thể khai sáng cho tôi về chủ đề nâng cao hơn này không? Tôi tin rằng RabbitMQ có thể hỗ trợ loại hệ thống này nhưng không chính xác là tích cực. Tôi biết có những thứ trong RabbitMQ mà tôi không biết, ví dụ vhosts là gì và chúng có giúp ích gì trong tình huống này không? Tôi chỉ không thấy giải pháp trong kiến ​​thức hiện tại của tôi giới hạn trong các khóa định tuyến, tên hàng đợi và trao đổi.

Trả lời

2

Tôi tin rằng hướng dẫn this thể hiện những gì bạn đang cố gắng làm.
Thực tế là hàng đợi gọi lại là độc quyền, tự động xóa và có tên được tạo tự động sẽ cung cấp đủ bảo mật.

+0

Tôi thực sự đã viết triển khai ví dụ đó trong thư viện stormed-amqp (như được liên kết ở trên). Tôi không chắc chắn rằng chỉ thị 'độc quyền' là đủ an toàn, nhưng tôi sẽ thử nghiệm với nó để xem nếu nó là. Cảm ơn. – Brian

6

Trong hệ thống đa nhiệm, bạn sẽ bảo đảm hàng đợi an toàn bằng cách xác định các quyền mà người dùng có. Đọc phần kiểm soát truy cập của hướng dẫn quản trị RabbitMQ tại đây http://www.rabbitmq.com/admin-guide.html

Bắt đầu bằng cách thực hiện mọi thứ xảy ra bên trong vhost và chặn hoàn toàn vhost chung, tức là không để bất kỳ ai khai báo hàng đợi và trao đổi trên vhost "/".