开源身份验证和权限管理

更新时间:

云消息队列 RabbitMQ 版支持开源RabbitMQ身份验证和权限管理方式来实现对云消息队列 RabbitMQ 版资源的管理。

使用限制

  • 仅支持新购的Serverless系列独享实例,存量实例不支持。

  • 禁止默认账户guest的创建和权限管理。

  • 不支持User Tags 的权限管理。控制台和OpenAPI的管理权限请参见使用RAM进行访问控制

  • 开源身份验证和权限管理方式和阿里云访问控制(RAM)两种身份验证和权限模式仅支持选择其中一种,不支持更改。

  • Serverless系列独享实例选择开源身份验证和权限管理方式的身份验证和权限模式后,不支持降配为共享实例。

功能原理

云消息队列 RabbitMQ 版支持以Vhost为维度通过configure、writeread对实例资源(ExchangeQueue)操作权限进行细粒度控制。其中对configure、writeread的配置通过正则表达式(Regex)来实现,规则如下:

  • .* 表示所有资源。

  • ^$表示只匹配空字符串,覆盖所有资源并阻止用户执行任何操作。

  • '^(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

权限认证流程主要包括两个步骤:

  1. RabbitMQ客户端与服务器建立连接并进行身份验证时,它会指定一个Vhost。此时系统将执行第一级访问控制,服务器将检查用户是否具备访问该Vhost的权限,若无权限,则拒绝连接。

  2. 在对ExchangeQueue进行操作时,将会执行第二级访问控制,此时会验证是否具备对该ExchangeQueue的操作权限。

安全性

在开源身份验证和权限管理方式下,云消息队列 RabbitMQ 版通过以下方案来提升网络及数据的安全性。

网络类型

方案

VPC网络

开源身份验证和权限管理 + 私网接入点

公网

开源身份验证和权限管理 + 公网IP白名单

操作

云消息队列 RabbitMQ 版支持在控制台实现用户创建和权限配置,详情请参见用户和权限管理