RabbitMQ權限


RabbitMQ

引言

RabbitMQ是一個在AMQP基礎上完整的,可復用的企業消息系統。他遵循Mozilla Public License開源協議。

MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。RabbitMQ可以,多個程序同時使用RabbitMQ ,但是必須隊列名稱不一樣。采用erlang語言,屬於愛立信公司開發的。

起停服務

# 啟用web管理界面
# rabbitmq-plugins enable rabbitmq_management
# 開啟服務:rabbitmq-server -detached
# 關閉服務:rabbitmqctl stop    (連同節點上的其它應用程序一同關閉了)
# or
# 關閉服務:rabbitmqctl stop_app	(只關閉rabbitmq節點)
# 開啟插件:rabbitmq-plugins enable 插件名
# 關閉插件:rabbitmq-plugins disable 插件名
# 檢查rabbitmq狀態:rabbitmqctl status

 啟動后查看進程(已開啟web插件)

此時,即可打開瀏覽器輸入http://127.0.0.1:15672地址,進入web端(如下圖)

登陸用戶,系統默認用戶:賬號:guest  密碼:guest   角色:administration

如想新建用戶,可通過下方命令,自行創建!

默認端口

4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)

# 特殊說明
web:15672
api_port:5672

 配置文件和日志

# 默認情況下rabbitmq的日志在     /var/log/rabbitmq/rabbit@[hostname].log
# 默認配置文件            /etc/rabbitmq/rabbitmq.config

 用戶管理

# 新建用戶:rabbitmqctl add_user username password
# 刪除用戶:rabbitmqctl delete_user username
# 查看用戶列表:rabbitmqctl list_users
# 查看用戶列表:rabbitmqctl list_users

 例:

# 新建用戶 zhaok 
rabbitmqctl add_user zhaok ******
# 修改用戶密碼  zhaok
rabbitmqctl change_password zhaok newpassword
# 刪除用戶 zhaok
rabbitmqctl delete_user zhaok

 角色授權

角色大致有五類:
  超級管理員administrator, 監控者monitoring, 策略制定者policymaker, 普通管理者management以及其他
角色說明:
超級管理員(administrator):可登陸管理控制台(啟用management plugin的情況下),可查看所有的信息,並且可以對用戶,策略(policy)進行操作。


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

 


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

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


其他(other):無法登陸管理控制台,通常就是普通的生產者和消費者。

略。。。

授權角色

# 授權角色:rabbitmqctl  set_user_tags  User  Tag
# 查看用戶角色: 可通過rabbitmqctl list_users查看
# 重新授權,直接重新執行授權命令即可

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

例:

# 授權單角色
rabbitmqctl  set_user_tags  zhaok monitoring
# 授權多角色
rabbitmqctl  set_user_tags  zhaok monitoring  policymaker

 可通過查看用戶命令來查看用戶角色

權限授權

用戶授權說明(與角色之間不同,不可混淆)

rabbitmq的權限控制通過兩層來實現,一是vhost的權限,二是確認有權限訪問vhost后,對vhost內資源的權限控制(配置,讀,寫)

通俗的可以理解為:指用戶對exchange,queue的操作權限,包括配置權限,讀寫權限。配置權限會影響到exchange,queue的聲明和刪除。讀寫權限影響到從queue里取消息,向exchange發送消息以及queue和exchange的綁定(bind)操作等等

授權分三個操作:
  讀:有關消費消息的任何操作,包括"清除"整個隊列
  寫:發布消息
  配置:隊列和交換機的創建和刪除

每一條訪問控制是由以下四部分組成:
  1、被授予訪問權限的用戶
  2、權限控制應用的Vhost
  3、需要授權的讀/寫/配置權限組合
  4、權限范圍——權限控制僅應用與客戶端命名的隊列和交換機
注:訪問控制權限是無法跨越Vhost的!!!

(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

 例:

# 單用戶授權
示例:rabbitmqctl set_permissions -p broker_one producer_one ".*"  ".*"   ".*"
# 說明:給用戶producer_one授權 vhost名稱為broker_one的 配置 寫入 讀取的權限 
示例:rabbitmqctl set_permissions -p broker_one producer_one " " ".*" " "
# 說明:給用戶producer_one授權 vhost名稱為broker_one的 配置 寫入 讀取的權限 

 特殊說明:
  “---” 雙引號中的信息為正則表達式
  ".*" 表示配置任何隊列和交換機
  "checks-.*"表示只能配置名字以"checks-"開頭的隊列和交換機
  " " 不匹配隊列和交換機

virtual_host管理

新建virtual_host: rabbitmqctl add_vhost xxx
撤銷virtual_host: rabbitmqctl delete_vhost xxx
查看列表:rabbitmqctl list_vhosts

 隊列管理

查看當前隊列信息:rabbitmqctl list_queues
清除所有隊列:rabbitmqctl reset

 獲取服務器狀態信息

查看節點信息:rabbitmqctl cluster_status
服務器狀態:rabbitmqctl status
queue信息:rabbitmqctl list_queues	# 默認會查看 / 下的隊列
# 如果想看其他vhost中的,加參數 -p "vhost_name"
exchange信息:rabbitmqctl list_exchanges
binding信息:rabbitmqctl list_bindings 
connection信息:rabbitmqctl list_connections 
channel信息:rabbitmqctl list_channels

 集群命令

 集群的事宜會有詳解,暫略

查看集群狀態:rabbitmqctl cluster_status
創建集群:rabbitmqctl join_cluster 節點@主機名

全命令


免責聲明!

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



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