日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ管理(1)——多租户与权限

發(fā)布時(shí)間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ管理(1)——多租户与权限 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-management-of-vhost/


每一個(gè)RabbitMQ服務(wù)器都能創(chuàng)建虛擬的消息服務(wù)器,我們稱(chēng)之為虛擬主機(jī)(virtual host),簡(jiǎn)稱(chēng)為vhost。每一個(gè)vhost本質(zhì)上是一個(gè)獨(dú)立的小型RabbitMQ服務(wù)器,擁有自己獨(dú)立的隊(duì)列、交換器以及綁定關(guān)系等待,并且它擁有自己獨(dú)立的權(quán)限。vhost就像是虛擬機(jī)與物理服務(wù)器一樣,它們?cè)诟鱾€(gè)實(shí)例間提供邏輯上的分離,允許你為不同程序安全保密地運(yùn)行數(shù)據(jù),它既能將同一個(gè)RabbitMQ的中眾多客戶區(qū)分開(kāi),又可以避免隊(duì)列和交換器等命令沖突。vhost之間是絕對(duì)隔離的,你無(wú)法將vhost1中的交換器與vhost2中的隊(duì)列進(jìn)行綁定,這樣既保證了安全性,又可以確保可移植性。如果在使用RabbitMQ達(dá)到一定規(guī)模的時(shí)候,建議用戶對(duì)業(yè)務(wù)功能、場(chǎng)景進(jìn)行歸類(lèi)區(qū)分,并為之分配獨(dú)立的vhost。

vhost是AMQP概念的基礎(chǔ),客戶端在連接的時(shí)候必須制定一個(gè)vhost。RabbitMQ默認(rèn)已創(chuàng)建的vhost為“/”,如果不需要多個(gè)vhost或者對(duì)vhost的概念不是很理解,那么就用這個(gè)默認(rèn)的vhost也是非常合理的,使用默認(rèn)的用戶名guest和密碼guest就可以訪問(wèn)它。但是為了安全以及方便,建議重新建立一個(gè)新的用戶來(lái)訪問(wèn)它。

可以使用rabbitmqctl add_vhost {vhost}命令創(chuàng)建一個(gè)新的vhost,大括號(hào)里的參數(shù)表示vhost的名稱(chēng)。示例如下:

[root@node1 ~]# rabbitmqctl add_vhost vhost1 Creating vhost "vhost1"

可以使用rabbitmqctl list_vhosts [vhostinfoitem…]來(lái)羅列當(dāng)前vhost的相關(guān)信息。目前vhostinfoitem的取值有2個(gè):

  • name:表示vhost的名稱(chēng)。
  • tracing:表示是否使用了RabbitMQ的trace功能。有關(guān)trace功能,詳細(xì)可以參考10.1章節(jié)。
  • 示例如下:

    [root@node1 ~]# rabbitmqctl list_vhosts name tracing Listing vhosts vhost1 false / false [root@node1 ~]# rabbitmqctl trace_on Starting tracing for vhost "/" [root@node1 ~]# rabbitmqctl list_vhosts name tracing Listing vhosts vhost1 false / true

    對(duì)應(yīng)的刪除的vhost的命令是:rabbitmqctl delete_vhost {vhost},其中大括號(hào)里面的參數(shù)表示vhost的名稱(chēng)。刪除一個(gè)vhost同時(shí)也會(huì)刪除其下所有的隊(duì)列、交換器、綁定關(guān)系、用戶權(quán)限、參數(shù)以及策略等信息。示例如下:

    [root@node1 ~]# rabbitmqctl delete_vhost vhost1 Deleting vhost "vhost1" [root@node1 ~]# rabbitmqctl list_vhosts Listing vhosts

    AMQP協(xié)議中并沒(méi)有指定權(quán)限在vhost級(jí)別還是在服務(wù)器端級(jí)別實(shí)現(xiàn),由具體的應(yīng)用自定義。在RabbitMQ中,權(quán)限控制則是以vhost為單位的。當(dāng)創(chuàng)建一個(gè)用戶時(shí),用戶通常會(huì)被指派給至少一個(gè)vhost,并且只能訪問(wèn)被指派vhost內(nèi)的隊(duì)列、交換器以及綁定關(guān)系。因此,RabbitMQ中的授予權(quán)限是指在vhost級(jí)別對(duì)用戶而言的權(quán)限授予。

    相關(guān)的授予權(quán)限命令為:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}。其中各個(gè)參數(shù)的含義為:

  • vhost:授予用戶訪問(wèn)權(quán)限的vhost名稱(chēng),可以缺省,即vhost為"/"。
  • user:可以訪問(wèn)指定vhost的用戶名稱(chēng)。
  • conf:一個(gè)用于匹配用戶在哪些資源上擁有可配置權(quán)限的正則表達(dá)式。
  • write:一個(gè)用于匹配用戶在哪些資源上擁有可寫(xiě)權(quán)限的正則表達(dá)式。
  • read:一個(gè)用于匹配用戶在哪些資源上有用可讀權(quán)限的正則表達(dá)式。
  • 注:可配置指的是隊(duì)列和交換器的創(chuàng)建以及刪除之類(lèi)的操作;可寫(xiě)指的是發(fā)布消息;可讀指與消息有關(guān)的操作,包括讀取消息以及清空整個(gè)隊(duì)列等。

    授予用戶root可訪問(wèn)虛擬主機(jī)vhost1,并在所有資源上都具備可配置、可寫(xiě)以及可讀的權(quán)限。示例如下:

    [root@node1 ~]# rabbitmqctl set_permissions -p vhost1 root ".*" ".*" ".*" Setting permissions for user "root" in vhost "vhost1"

    授予用戶root可訪問(wèn)虛擬主機(jī)vhost2,在以“queue”開(kāi)頭的資源上具備可配置權(quán)限,并在所有資源上擁有可寫(xiě)、可讀的權(quán)限,示例如下:

    [root@node1 ~]# rabbitmqctl set_permissions -p vhost2 root "^queue.*" ".*" ".*" Setting permissions for user "root" in vhost "vhost2"

    清除權(quán)限也是在vhost級(jí)別對(duì)用戶而言的清除權(quán)限。清除權(quán)限的命令為:rabbitmqctl clear_permissions [-p vhost] {username}。其中vhost用于設(shè)置禁止用戶訪問(wèn)的虛擬主機(jī)的名稱(chēng),默認(rèn)為“/”;username表示禁止訪問(wèn)特定虛擬主機(jī)的用戶名稱(chēng)。示例如下:

    [root@node1 ~]# rabbitmqctl clear_permissions -p vhost1 root Clearing permissions for user "root" in vhost "vhost1"

    在RabbitMQ中有兩個(gè)shell命令可以列舉權(quán)限信息。第一個(gè)命令是:rabbitmqctl list_permissions [-p vhost],用來(lái)顯示虛擬主機(jī)上的權(quán)限;第二個(gè)命令是:rabbitmqctl list_user_permissions {username},用來(lái)顯示用戶的權(quán)限。示例如下:

    [root@node1 ~]# rabbitmqctl list_permissions -p vhost1 Listing permissions in vhost "vhost1" root .* .* .* [root@node1 ~]# rabbitmqctl list_user_permissions root Listing permissions for user "root" / .* .* .* vhost1 .* .* .*

    細(xì)心的讀者可能會(huì)注意到本章節(jié)中用到的所有命令都是rabbitmqctl工具的擴(kuò)展命令,rabbitmqctl工具是用來(lái)管理RabbitMQ中間件的命令行工具,它通過(guò)連接各個(gè)RabbitMQ節(jié)點(diǎn)來(lái)執(zhí)行所有操作。如果有節(jié)點(diǎn)沒(méi)有運(yùn)行,將會(huì)顯示診斷信息、不能到達(dá),或因不匹配的Erlang cookie(有關(guān)Erlang cookie的細(xì)節(jié)可以參考7.1章節(jié))而拒絕連接。rabbitmqctl工具的標(biāo)準(zhǔn)語(yǔ)法如下:

    rabbitmqctl [-n node] [-t timeout] [-q] {command} [command options...]

    [-n node]
    默認(rèn)節(jié)點(diǎn)是"rabbit@hostname",此處的hostname是主機(jī)名稱(chēng)。在一個(gè)名為"node.hidden.com"的主機(jī)上, RabbitMQ Erlang node 的節(jié)點(diǎn)名稱(chēng)通常是rabbit@node (除非RABBITMQ_NODENAME參數(shù)在啟動(dòng)時(shí)設(shè)置了非默認(rèn)值)。 hostname -s 的輸出通常是"@" 標(biāo)志后的東西。
    [-q]
    使用-q標(biāo)志來(lái)啟用quiet模式,這樣可以屏蔽一些消息的輸出。 默認(rèn)不開(kāi)啟quiet模式。
    [-t timeout]
    操作超時(shí)時(shí)間(秒為單位)。只適用于“l(fā)ist”類(lèi)型的命令。 默認(rèn)是無(wú)窮大。
    下面來(lái)演示下[-q]和[-t timeout]參數(shù)的用法和效果:

    [root@node1 ~]# rabbitmqctl list_vhosts Listing vhosts / [root@node1 ~]# rabbitmqctl list_vhosts -q / [root@node1 ~]# rabbitmqctl list_vhosts -q -t 1 / [root@node1 ~]# rabbitmqctl list_vhosts -q -t 0 Error: {timeout,0.0}

    歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/mq/rabbitmq-management-of-vhost/


    歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


    總結(jié)

    以上是生活随笔為你收集整理的RabbitMQ管理(1)——多租户与权限的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。