RabbitMQ權限控制


一、權限說明

rabbitmq中,可以創建被稱為虛擬主機(vhost)的虛擬消費服務器。每個vhost邏輯上是一個獨立的消息服務器,擁有自己獨立的交換器、隊列和綁定等資源。
vhost提供了隔離機制,使得用戶可以在同一套rabbitmq服務器上創建多個vhost,並對不同對應用使用不同對vhost,不同的vhost之間相互隔離,這在業務復雜的大型應用中會比較有用。

二、相關命令

#創建vhost

rabbitmqctl add_vhost {vhost}

#查看vhost

rabbitmqctl list_vhosts

#刪除vhost

rabbitmqctl delete_vhost {vhost}

#創建用戶

rabbitmqctl add_user {username} {password}

#賦予角色

rabbitmqctl set_user_tags {username} {tag}

tag包含:nonemanagementpolicymakermonitoringadministrator

1none 不能訪問 management plugin

2management 用戶可以通過AMQP做的任何事情外

列出自己可以通過AMQP登入的virtual hosts  

查看自己的virtual hosts中的queues, exchanges bindings

查看和關閉自己的channels connections

查看有關自己的virtual hosts全局的統計信息,包含其他用戶在這些virtual hosts中的活動。

3policymaker management可以做的任何事外加:

查看、創建和刪除自己的virtual hosts所屬的policiesparameter

4monitoring management可以做的任何事外加:

列出所有virtual hosts,包括他們不能登錄的virtual hosts

查看其他用戶的connectionschannels

查看節點級別的數據如clusteringmemory使用情況

查看真正的關於所有virtual hosts的全局的統計信息  

5administrator policymakermonitoring可以做的任何事外加:

創建和刪除virtual hosts

查看、創建和刪除users

查看創建和刪除permissions

關閉其他用戶的connections

#刪除用戶

rabbitmqctl delete_user {username}

#為用戶授權

rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

l -p 為可選項,指定vhost

l user指定用戶;

l {conf}{write}{read}分別指定用戶可以在哪些資源上做配置、讀、和寫的權限。它們都是一個正則表達式,如果資源名稱與指定的正則匹配,則用戶對該資源有對應操作權限。需要說明{conf}是指可以對隊列、交換器等做創建、刪除之類等管理操作,{write}是指可以發布消息,{read}是指可以消費消息。

7、查看權限

查看vhost權限

rabbitmqctl list_permissions [-p vhost]

 查看用戶權限

rabbitmqctl list_user_permissions {username}

8、清除權限

與授權相同,清除用戶權限也是以vhost為單位對,即一次性清除用戶在某個vhost上設置對所有權限。
清除權限命令為: rabbitmqctl clear_permissions [-p vhost] {username}

 

9、設置topic權限

set_topic_permissions [-p vhost] {username}  {exchange} {write} {read}

l vhost:授予用戶訪問權的虛擬主機的名稱,默認為“/”。

l user:目標虛擬主機中的權限適用的用戶的名稱。

l exchange:主題交換授權檢查名稱將應用於。

l write:與發布的消息的路由鍵匹配的正則表達式。

l read:與消費消息的路由鍵匹配的正則表達式。

clear_topic_permissions [-p vhost]  {username}  [exchange]

list_topic_permissions [-p vhost]

list_user_topic_permissions {username}

用戶可以用哪個交換機 的交換策略(交換機 以某種策略去讀寫)

 

1、測試用戶是否可以創建exchange   即不設置conf

rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

不配置conf 生產者報錯 發布出去消息

conf為新增刪除等一些權限

 

2、測試讀寫權限

set_topic_permissions [-p vhost] {username}  {exchange} {write} {read}

 

三、示例:

1、創建/dev_order_vhost虛擬主機的讀權限用戶dev_order_read與寫權限用戶dev_order_write

#創建寫用戶dev_order_write  即生產者用戶

rabbitmqctl add_user dev_order_write  password

 

#創建讀用戶dev_order_read  即消費者用戶

rabbitmqctl add_user dev_order_write  password

#創建/dev_order_vhost虛擬主機

rabbitmqctl add_vhost /dev_order_vhos

#賦予讀用戶dev_order_read/dev_order_vhost虛擬主機讀的權限

rabbitmqctl set_permissions -p /dev_order_vhost dev_order_read ".*" "" ".*"

#賦予寫用戶dev_order_write/dev_order_vhost虛擬主機寫的權限

rabbitmqctl set_permissions -p /dev_order_vhost dev_order_write ".*" ".*" ""

#賦予用戶A/dev_order_vhost虛擬主機寫的讀寫權限

rabbitmqctl set_permissions -p /dev_order_vhost A ".*" ".*" ".*"

 

說明:需要配置conf,並且需要創建exchange  queue 並綁定

 

 

2、針對topic_per用戶在/vhost虛擬主機中的testexcheange交換機控制只有路由符合pre開頭的才可以生產消費

rabbitmqctl set_topic_permissions -p /vhost topic_per  testxchange "^pre" "^pre"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM