RabbitMQ消息隊列(十三)-VirtualHost與權限管理

像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

  1. 新建用戶
  2. 配置權限
  3. 配置角色

新建用戶正則表達式

rabbitmqctl add_user wyt wyt

配置權限sql

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

其中, 的位置分別用正則表達式來匹配特定的資源,如數據庫

'^(amq.gen.*|amq.default)$'

能夠匹配server生成的和默認的exchange,’^$’不匹配任何資源服務器

  • exchange和queue的declare與delete分別須要exchange和queue上的配置權限
  • exchange的bind與unbind須要exchange的讀寫權限
  • queue的bind與unbind須要queue寫權限exchange的讀權限 發消息(publish)需exchange的寫權限
  • 獲取或清除(get、consume、purge)消息需queue的讀權限

示例:咱們賦予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
相關文章
相關標籤/搜索