雲訊息佇列 RabbitMQ 版支援開源RabbitMQ身分識別驗證和許可權管理方式來實現對雲訊息佇列 RabbitMQ 版資源的管理。
使用限制
-
支援以下版本的新購執行個體,存量執行個體不支援:
-
Serverless系列:(独享)预留+弹性、(共享)预留+弹性、(共享)按累积量
-
預付費系列:铂金版、企业版
-
-
禁止預設賬戶guest的建立和許可權管理。
-
不支援User Tags 的許可權管理。控制台和OpenAPI的系統管理權限請參見使用RAM進行存取控制。
-
開源身分識別驗證和許可權管理方式和阿里雲存取控制(RAM)兩種身分識別驗證和許可權模式僅支援選擇其中一種,不支援更改。
-
當Serverless系列獨享執行個體選擇開源身分識別驗證和許可權管理方式的身分識別驗證和許可權模式後,不支援降配為共用執行個體。
功能原理
雲訊息佇列 RabbitMQ 版支援以Vhost為維度通過configure、write和read對執行個體資源(Exchange和Queue)操作許可權進行細粒度控制。其中對configure、write和read的配置通過Regex(Regex)來實現,規則如下:
-
.*表示所有資源。 -
^$表示只匹配Null 字元串,覆蓋所有資源並阻止使用者執行任何操作。 -
'^(amq\.gen.*|amq\.default)$'表示可以訪問系統資源和default Exchange。
執行操作、資源和許可權的對應關係如下:
|
AMQP 0-9-1 Operation |
configure |
write |
read |
|
|
exchange.declare |
(passive=false) |
exchange |
||
|
exchange.declare |
(passive=true) |
|||
|
exchange.declare |
(with AE) |
exchange |
exchange (AE) |
exchange |
|
exchange.delete |
exchange |
|||
|
queue.declare |
(passive=false) |
queue |
||
|
queue.declare |
(passive=true) |
|||
|
queue.declare |
(with DLX) |
queue |
exchange (DLX) |
queue |
|
queue.delete |
queue |
|||
|
exchange.bind |
exchange (destination) |
exchange (source) |
||
|
exchange.unbind |
exchange (destination) |
exchange (source) |
||
|
queue.bind |
queue |
exchange |
||
|
queue.unbind |
queue |
exchange |
||
|
basic.publish |
exchange |
|||
|
basic.get |
queue |
|||
|
basic.consume |
queue |
|||
|
queue.purge |
queue |
許可權認證流程主要包括兩個步驟:
-
當RabbitMQ用戶端與伺服器建立串連並進行身分識別驗證時,它會指定一個Vhost。此時系統將執行第一級存取控制,伺服器將檢查使用者是否具備訪問該Vhost的許可權,若無許可權,則拒絕串連。
-
在對Exchange和Queue進行操作時,將會執行第二級存取控制,此時會驗證是否具備對該Exchange和Queue的操作許可權。
安全性
在開源身分識別驗證和許可權管理方式下,雲訊息佇列 RabbitMQ 版通過以下方案來提升網路及資料的安全性。
|
網路類型 |
方案 |
|
VPC網路 |
開源身分識別驗證和許可權管理 + 私網存取點 |
|
公網 |
開源身分識別驗證和許可權管理 + 公網存取點(詳情請參見公網IP白名單) |
白名單不生效排查
若設定公網 IP 白名單後仍無法正常訪問,可參考以下排查思路:
-
白名單在 AMQP 協議層生效,而非 ICMP 層。因此能 ping 通執行個體 IP 不代表白名單已生效;若建立 AMQP connection 時仍被攔截,請從白名單配置入手排查,而非僅通過 ping 結果判斷。
-
白名單 IP 必須以網段形式設定(例如 x.x.x.x/30),不支援單 IP 或 x.x.x.x/32 格式。
-
排查時,可在控制台的白名單列表中確認已設定的 IP 是否為正確的網段格式。
操作
雲訊息佇列 RabbitMQ 版支援在控制台實現使用者建立和許可權配置,詳情請參見使用者和許可權管理。