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

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

像mysql有數據庫的概念並且可以指定用戶對庫和表等操作的權限。那RabbitMQ呢?RabbitMQ也有類似的權限管理。在RabbitMQ中可以虛擬消息服務器VirtualHost,每個VirtualHost相當月一個相對獨立的RabbitMQ服務器,每個VirtualHost之間是相互隔離的。exchange、queue、message不能互通。 
在RabbitMQ中無法通過AMQP創建VirtualHost,可以通過以下命令來創建。

rabbitmqctl add_vhost [vhostname]

如上圖在創建完vhost後可以在All Virtual Host標籤看到新建的VirtualHost。

用戶權限管理

通常在權限管理中主要包含三步:

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

新建用戶

rabbitmqctl add_user wyt wyt

配置權限

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在“/”下面的全部資源的配置和讀寫權限。

rabbitmqctl set_permissions -p / superrd ".*" ".*" ".*"

注意”/”代表virtual host爲“/”這個“/”和linux裏的根目錄是有區別的並不是virtual host爲“/”可以訪問所以的virtual host,把這個“/”理解成字符串就行。

配置角色

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章