1. 程式人生 > >Rabbitmq用戶權限配置

Rabbitmq用戶權限配置

就是 mqc [] pan eat gin 情況下 creat 參考

由於賬號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

  1. 用戶角色

按照個人理解,用戶角色可分為五類,超級管理員, 監控者, 策略制定者, 普通管理者以及其他。

(1) 超級管理員(administrator)

可登陸管理控制臺(啟用management plugin的情況下),可查看所有的信息,並且可以對用戶,策略(policy)進行操作。

(2) 監控者(monitoring)

可登陸管理控制臺(啟用management plugin的情況下),同時可以查看rabbitmq節點的相關信息(進程數,內存使用情況,磁盤使用情況等)

(3) 策略制定者(policymaker)

可登陸管理控制臺(啟用management plugin的情況下), 同時可以對policy進行管理。但無法查看節點的相關信息(上圖紅框標識的部分)。

與administrator的對比,administrator能看到這些內容

(4) 普通管理者(management)

僅可登陸管理控制臺(啟用management plugin的情況下),無法看到節點信息,也無法對策略進行管理。

(5) 其他

無法登陸管理控制臺,通常就是普通的生產者和消費者。

了解了這些後,就可以根據需要給不同的用戶設置不同的角色,以便按需管理。

設置用戶角色的命令為:

rabbitmqctl set_user_tags User Tag

User為用戶名, Tag為角色名(對應於上面的administrator,monitoring,policymaker,management,或其他自定義名稱)。

也可以給同一用戶設置多個角色,例如

rabbitmqctl set_user_tags hncscwc monitoring policymaker

  1. 用戶權限

用戶權限指的是用戶對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

liuxin@MacBook-Pro  ~  rabbitmqctl add_user liuxin 950914lx
Creating user "liuxin" ...
 liuxin@MacBook-Pro  ~  rabbitmqctl  list_users
Listing users ...
liuxin  []
guest   [administrator]
 liuxin@MacBook-Pro  ~  rabbitmqctl  set_user_tags  liuxin administrator
Setting tags for user "liuxin" to [administrator] ...
 liuxin@MacBook-Pro  ~  rabbitmqctl  list_users
Listing users ...
liuxin  [administrator]
guest   [administrator]

2.刪除用戶
rabbitmqctl delete_user username

3.修改密碼
rabbitmqctl change_password usernamenewpassword

4.列出所有用戶
rabbitmqctl list_users
權限控制1.創建虛擬主機
rabbitmqctl add_vhost vhostpath

2.刪除虛擬主機
rabbitmqctl delete_vhost vhostpath

3.列出所有虛擬主機
rabbitmqctl list_vhosts

4.設置用戶權限
rabbitmqctl set_permissions [-pvhostpath] username regexp regexp regexp

5.清除用戶權限
rabbitmqctl clear_permissions [-pvhostpath] username

6.列出虛擬主機上的所有權限
rabbitmqctl list_permissions [-pvhostpath]

7.列出用戶權限
rabbitmqctl list_user_permissionsusername

#添加虛擬端口
 liuxin@MacBook-Pro  ~  rabbitmqctl add_vhost az
Creating vhost "az" ...
 liuxin@MacBook-Pro  ~  rabbitmqctl add_user liuxin liuxin
Creating user "liuxin" ...
Error: user_already_exists: liuxin
#為用戶設置權限策略
 ? liuxin@MacBook-Pro  ~  rabbitmqctl set_user_tags User administrator
Setting tags for user "User" to [administrator] ...
Error: no_such_user: User
 ? liuxin@MacBook-Pro  ~  rabbitmqctl set_user_tags liuxin administrator
Setting tags for user "liuxin" to [administrator] ...
 liuxin@MacBook-Pro  ~  rabbitmqctl set_permissions -p az User ConfP WriteP ReadP
Setting permissions for user "User" in vhost "az" ...
Error: no_such_user: User
#為用戶設置虛擬端口
 ? liuxin@MacBook-Pro  ~  rabbitmqctl set_permissions -p az liuxin ConfP WriteP ReadP
Setting permissions for user "liuxin" in vhost "az" ...

Rabbitmq用戶權限配置