开源身份验证和权限管理
云消息队列 RabbitMQ 版支持开源RabbitMQ身份验证和权限管理方式来实现对云消息队列 RabbitMQ 版资源的管理。
使用限制
仅支持新购的Serverless系列独享实例,存量实例不支持。
禁止默认账户guest的创建和权限管理。
不支持User Tags 的权限管理。控制台和OpenAPI的管理权限请参见使用RAM进行访问控制。
开源身份验证和权限管理方式和阿里云访问控制(RAM)两种身份验证和权限模式仅支持选择其中一种,不支持更改。
当Serverless系列独享实例选择开源身份验证和权限管理方式的身份验证和权限模式后,不支持降配为共享实例。
功能原理
云消息队列 RabbitMQ 版支持以Vhost为维度通过configure、write和read对实例资源(Exchange和Queue)操作权限进行细粒度控制。其中对configure、write和read的配置通过正则表达式(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 |
权限认证流程主要包括两个步骤:
当RabbitMQ客户端与服务器建立连接并进行身份验证时,它会指定一个Vhost。此时系统将执行第一级访问控制,服务器将检查用户是否具备访问该Vhost的权限,若无权限,则拒绝连接。
在对Exchange和Queue进行操作时,将会执行第二级访问控制,此时会验证是否具备对该Exchange和Queue的操作权限。
安全性
在开源身份验证和权限管理方式下,云消息队列 RabbitMQ 版通过以下方案来提升网络及数据的安全性。
网络类型 | 方案 |
VPC网络 | 开源身份验证和权限管理 + 私网接入点 |
公网 | 开源身份验证和权限管理 + 公网IP白名单 |
操作
云消息队列 RabbitMQ 版支持在控制台实现用户创建和权限配置,详情请参见用户和权限管理。