RabbitMQ 教程

权限管理

在前面章节介绍了 RabbitMQ 的虚拟机 vhost,下面将继续介绍 RabbitMQ 的权限管理。

在 AMQP 协议中并没有指定权限在 vhost 级别还是在服务器级别实现,实现方式由实现 AMQP 的应用自定义实现。

在 RabbitMQ 中,权限控制则是以 vhost 为单位。当创建一个用户时,用户通常会被指定一个或多个 vhost,并且用户只能访问被指定的 vhost 内的队列、交换器和绑定关系等等。因此,RabbitMQ 中的授权是指在 vhost 级别对用户进行授权。

授权命令

RabbitMQ 中,使用 rabbitmqcl set_permissions 命令进行授权,命令格式:

rabbitmqcl set_permissions [-p vhost] user conf write read

参数含义如下:

  • vhost:表示 vhost 名称,可以设置为默认值,即 vhost 为 “/”

  • user:表示可以访问指定 vhost 的用户名

  • conf:表示用于匹配用户在哪些资源上拥有可配置权限的正则表达式,可配置指的是队列和交换器的创建及删除之类的操作

  • write:表示用于匹配用户在哪些资源上拥有可写(指发布消息)权限的正则表达式

  • read:表示用于匹配用户在哪些资源上拥有可读(指消息有关的操作,如读取消息、清空队列等)权限的正则表达式

用户授权

(1)授予 hxstrive 用户可访虚拟主机 vhostl,并在所有资源上都具备可配置、可写及可读的权限。示例如下:

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_permissions -p vhost1 hxstrive ".*" ".*" ".*"
Setting permissions for user "hxstrive" in vhost "vhost1" ...

(2)授予 hxstrive 用户可访问虚拟主机 vhost1。且在以 “queue” 开头的资源上具备可配置权限,并在所有资源上拥有可写、可读的权限。示例如下:

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl.bat set_permissions -p vhost1 hxstrive "^queue.*" ".*" ".*"
Setting permissions for user "hxstrive" in vhost "vhost1" ...

权限清理

上面介绍了怎样对用户授权,这里将介绍怎样清理权限。清理权限也是在 vhost 级别的,清除权限的名为:

rabbitmqctl clear_permissions [-p vhost] user

参数说明:

  • vhost:表示 vhost 名称,可以设置为默认值,即 vhost 为 “/”

  • user:表示用户名

例如:清理 hxstrive 用户在 vhost1 上面的所有权限

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl clear_permissions -p vhost1 hxstrive
Clearing permissions for user "hxstrive" in vhost "vhost1" ...

查看权限

RabbitMQ 中提供了 rabbitmqctl list_permissions 和 rabbitmqctl list_user_permissions 两个命令,这些命令用来查询虚拟机或用户的权限。

rabbitmqctl list_permissions 命令用来查看指定虚拟机 vhost 的权限,命令格式如下:

rabbitmqctl list_permissions [-p vhost]

示例:查看 vhost1 虚拟机的权限

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_permissions -p vhost1
Listing permissions for vhost "vhost1" ...
user    configure       write   read
hxstrive        .*      .*      .*

rabbitmqctl list_user_permissions 命令用来查看指定用户的权限,命令格式如下:

rabbitmqctl list_user_permissions username

其中:

  • username:表示要查看权限的用户名

示例:查看 hxstrive 用户的所有权限

D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_user_permissions hxstrive
Listing permissions for user "hxstrive" ...
vhost   configure       write   read
vhost2  .*      .*      .*
vhost1  .*      .*      .*
/       .*      .*      .*

上面输出中得知,hxstrive 用户在默认虚拟机 /、vhost1 和 vhost2 中拥有所有资源的配置、写和读的权限。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号