RabbitMQ存取控制,

來源:互聯網
上載者:User

RabbitMQ存取控制,
Access Control (Authentication, Authorisation) in RabbitMQ

認證和授權這兩個概念經常容易被混淆,甚至被互換使用。在RabbitMQ中這是錯的,它們是兩個獨立的概念。可以簡單的這樣理解,認證就是“識別這個使用者是誰”,而授權就是“決定哪些使用者不能這麼做”。

Default Virtual Host and User

當伺服器第一次啟動啟動並執行時候,並且檢測到它的資料庫沒有被初始化或者已經被刪除了,那麼它將用下面這樣的資源配置初始化一個新的資料庫:

  • 一個虛擬機器主機,名字叫/
  • 一個名字叫guest的使用者,並且密碼也是guest,它可以訪問/下面的所有資源

我們建議刪除guest使用者,或者修改它的密碼,尤其是當你的MQ是公用訪問的時候。

"guest" user can only connect via localhost

預設情況下,guest使用者被禁止通過遠端連線到RabbitMQ,它只能用localhost串連。你自己建立的其它的使用者不會受限於這一條。

這個配置是通過設定檔中的loopback_users來設定的。

如果你希望guest使用者從遠程主機串連上來,你應該設定loopback_users為none。一個完整的配置應該是這樣的:

或者在rabbitmq.config中這樣配置:

How Permissions Work

當一個RabbitMQ用戶端和伺服器建立一個串連的時候,它指定一個它打算操作的虛擬機器主機。第一個層級的存取控制就在這個這裡,這個時候伺服器會檢查這個使用者是否有許可權訪問該虛擬機器主機。

資源,比如:交換器和隊列,它們是在一個特定的虛擬機器主機下被命名的實體。相同名字在不同的虛擬主句中表示不同的資源。第二層級的存取控制就是強制檢查對資源的某個確定的操作是否被允許執行。

RabbitMQ對一個資源有configure(配置)、read(讀)、write(寫)操作。(PS:簡單的理解就是讀、寫、執行這三種操作,俗稱rwx)  

  • configure操作指的是建立或者銷毀資源
  • write操作指的是注入一個訊息到資源中
  • read操作指的是從資源中檢索一個訊息

 

小結:

  第一層級的存取控制是在用戶端與伺服器建立串連的時候檢查使用者對虛擬機器主機是否有存取權限

  第二層級的存取控制是在執行操作的時候檢查使用者是否對資源有相應的存取權限

 

為了在資源上執行操作,使用者必須被授權相應的許可權。下面這個表顯示的是在執行AMQP命令的時候需要哪些許可權:

許可權用正在運算式來表示

 

參考  http://www.rabbitmq.com/access-control.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.