關於RabbitMQ的權限控制的介紹也有很多(很多都是對官網的翻譯),但是根據他們的介紹,最後新建的用戶還是能對exchange和queue這些組件進行增刪操作。我們希望通過對角色的控制的同時,也要做到對exchange和queue這些核心組件的權限控制。
如何通過設置tags來達到目的呢:
RabbitMQ有以下幾種tags,management,policymaker,monitoring,administrator,注意這些都是tags,這些tags默認一般都是對Admin一項起作用,對exchange和queue的權限不起作用,比如policymaker角色的用戶只能看到policies。
那如何在設置角色的時候,不只對Admin起作用,還要對Exchanges和Queues也起作用呢,我們可以通過設置Permission能達到目的,操作如下:
安裝完rabbitmq後,通過命令行,新建一個administrator角色的用戶,並賦予讀寫和配置的權限,命令如下:
rabbitmqctl add_user admin 123456
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin "." "." ".*"
然後用此用戶登錄RabbitMQ的控制檯,就可以對其他用戶進行管理。詳細步驟如下:
說明:要建一個management角色的用戶managementer,它只能訪問指定的vhost /ha-exactly,且不能對Exchanges和Queues進行增刪操作,只有查看功能。
首先,新建用戶managementer:
新設置的用戶還沒有指定訪問的訪問vhost,點擊managementer,進入對managementer權限控制的界面:
然後:爲用戶設置權限權限,截屏如下:
說明:Configure 權限比較大,包括對Exchanges和Queues的增刪查權限,如果Configure regexp設置爲空,則表示沒有此項權限。按截屏設置就OK了
Write和Read表示對Queues的寫和讀,這個可選,若是policymaker,monitor也可以不設置。
設置成功後,清除瀏覽器緩存,然後重新用managementer登錄,然後對exchanges和queue進行增刪操作,就會提示權限不夠,驗證成功。