像mysql有數據庫的概念而且能夠指定用戶對庫和表等操做的權限。那RabbitMQ呢?RabbitMQ也有相似的權限管理。在RabbitMQ中能夠虛擬消息服務器VirtualHost,每一個VirtualHost至關月一個相對獨立的RabbitMQ服務器,每一個VirtualHost之間是相互隔離的。exchange、queue、message不能互通。
在RabbitMQ中沒法經過AMQP建立VirtualHost,能夠經過如下命令來建立。node
rabbitmqctl add_vhost [vhostname]
如上圖在建立完vhost後能夠在All Virtual Host標籤看到新建的VirtualHost。mysql
一般在權限管理中主要包含三步:linux
新建用戶正則表達式
rabbitmqctl add_user wyt wyt
配置權限sql
set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
其中, 的位置分別用正則表達式來匹配特定的資源,如數據庫
'^(amq.gen.*|amq.default)$'
能夠匹配server生成的和默認的exchange,’^$’不匹配任何資源服務器
示例:咱們賦予superrd在「/」下面的所有資源的配置和讀寫權限。spa
rabbitmqctl set_permissions -p / superrd ".*" ".*" ".*"
注意」/」表明virtual host爲「/」這個「/」和linux裏的根目錄是有區別的並非virtual host爲「/」能夠訪問因此的virtual host,把這個「/」理解成字符串就行。code
配置角色orm
rabbitmqctl set_user_tags [user] [role]
RabbitMQ中的角色分爲以下五類:none、management、policymaker、monitoring、administrator
官方解釋以下:
management User can access the management plugin policymaker User can access the management plugin and manage policies and parameters for the vhosts they have access to. monitoring User can access the management plugin and see all connections and channels as well as node-related information. administrator User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts.
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
以下示例將wyt設置成administrator角色。
rabbitmqctl set_user_tags wyt administrator