RabbitMQ 用户授权读取队列但防止清除访问

RabbitMQ user authorization to read queues but prevent purge access

我在 RabbitMQ 中添加了一个用户,并在 RabbitMQ 管理控制台中编辑了读取“.*”的权限。

命令list_permissions的输出显示用户"readman"只有读取权限。

$ rabbitmqctl list_permissions --vhost /
Listing permissions for vhost "/" ...
user    configure       write   read
admin          .*      .*      .*
guest           .*      .*      .*
readman                         .*

但是,当以 "readman" 身份登录时,我仍然可以从队列中清除消息。这是预期的吗?如何允许用户查看队列和消息,但不能清除队列的消息?

是的,这是预期的,因为根据权限 table,queue.purge 的 amqp (0-9-1) 操作仅需要 READ 权限在队列上,因此任何对队列具有读取权限的用户也将能够清除该队列。