1. 程式人生 > >rabbitmq 許可權和角色管理

rabbitmq 許可權和角色管理

翻看官方的release文件後,得知由於賬號guest具有所有的操作許可權,並且又是預設賬號,出於安全因素的考慮,guest使用者只能通過localhost登陸使用,並建議修改guest使用者的密碼以及新建其他賬號管理使用rabbitmq(該功能是在3.3.0版本引入的)。

1. 使用者管理

使用者管理包括增加使用者,刪除使用者,檢視使用者列表,修改使用者密碼。

相應的命令

(1) 新增一個使用者

rabbitmqctl  add_user  Username  Password

(2) 刪除一個使用者

rabbitmqctl  delete_user  Username

(3) 修改使用者的密碼

rabbitmqctl  change_password  Username  Newpassword

(4) 檢視當前使用者列表

rabbitmqctl  list_users

2.RabbitMQ的使用者角色分類:

none、management、policymaker、monitoring、administrator

RabbitMQ各類角色描述:
none
不能訪問 management plugin

management
使用者可以通過AMQP做的任何事外加:
列出自己可以通過AMQP登入的virtual hosts  
檢視自己的virtual hosts中的queues, exchanges 和 bindings
檢視和關閉自己的channels 和 connections
檢視有關自己的virtual hosts的“全域性”的統計資訊,包含其他使用者在這些virtual hosts中的活動。

policymaker 

management可以做的任何事外加:
檢視、建立和刪除自己的virtual hosts所屬的policies和parameters

monitoring  
management可以做的任何事外加:
列出所有virtual hosts,包括他們不能登入的virtual hosts
檢視其他使用者的connections和channels
檢視節點級別的資料如clustering和memory使用情況
檢視真正的關於所有virtual hosts的全域性的統計資訊

administrator   
policymaker和monitoring可以做的任何事外加:
建立和刪除virtual hosts
檢視、建立和刪除users
檢視建立和刪除permissions
關閉其他使用者的connections

建立使用者並設定角色:

可以建立管理員使用者,負責整個MQ的運維,例如:
  1. $sudo rabbitmqctl add_user  user_admin  passwd_admin  
賦予其administrator角色:
  1. $sudo rabbitmqctl set_user_tags user_admin administrator  

可以建立RabbitMQ監控使用者,負責整個MQ的監控,例如:
  1. $sudo rabbitmqctl add_user  user_monitoring  passwd_monitor  
賦予其monitoring角色:
  1. $sudo rabbitmqctl set_user_tags user_monitoring monitoring  

可以建立某個專案的專用使用者,只能訪問專案自己的virtual hosts
  1. $sudo rabbitmqctl  add_user  user_proj  passwd_proj  
賦予其monitoring角色:
  1. $sudo rabbitmqctl set_user_tags user_proj management  

建立和賦角色完成後檢視並確認:
  1. $sudo rabbitmqctl list_users  

3. 使用者許可權

使用者許可權指的是使用者對exchange,queue的操作許可權,包括配置許可權,讀寫許可權。配置許可權會影響到exchange,queue的宣告和刪除。讀寫許可權影響到從queue裡取訊息,向exchange傳送訊息以及queue和exchange的繫結(bind)操作。

例如: 將queue繫結到某exchange上,需要具有queue的可寫許可權,以及exchange的可讀許可權;向exchange傳送訊息需要具有exchange的可寫許可權;從queue裡取資料需要具有queue的可讀許可權。詳細請參考官方文件中"How permissions work"部分。

相關命令為:

(1) 設定使用者許可權

rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP

(2) 檢視(指定hostpath)所有使用者的許可權資訊

rabbitmqctl  list_permissions  [-p  VHostPath]

(3) 檢視指定使用者的許可權資訊

rabbitmqctl  list_user_permissions  User

(4)  清除使用者的許可權資訊

rabbitmqctl  clear_permissions  [-p VHostPath]  User


為使用者賦權:
  1. $sudo rabbitmqctl  set_permissions -p /vhost1  user_admin '.*' '.*' '.*'  
該命令使使用者user_admin具有/vhost1這個virtual host中所有資源的配置、寫、讀許可權以便管理其中的資源

檢視許可權:

  1. $sudo rabbitmqctl list_user_permissions user_admin  
  2. Listing permissions for user "user_admin" ...  
  3. /vhost1<span style="white-space:pre"> </span>.*<span style="white-space:pre"> </span>.*<span style="white-space:pre"> </span>.*