1. 程式人生 > >(十三)RabbitMQ訊息佇列-VirtualHost與許可權管理

(十三)RabbitMQ訊息佇列-VirtualHost與許可權管理

VirtualHost

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

rabbitmqctl add_vhost [vhostname]

當然也可以通過WEB管理外掛來建立。
RabbitMQ建立vhost

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

使用者許可權管理

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

  1. 新建使用者
  2. 配置許可權
  3. 配置角色

新建使用者

rabbitmqctl add_user superrd superrd

配置許可權

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

如下示例將superrd設定成administrator角色。

rabbitmqctl set_user_tags superrd administrator

RabbitMQ技術交流QQ群:327034977(新增時請備註RabbitMQ)