雲訊息佇列 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白名單 |
操作
雲訊息佇列 RabbitMQ 版支援在控制台實現使用者建立和許可權配置,詳情請參見使用者和許可權管理。