RabbitMQ中的权限控制

在刚开始看RabbitMq权限的时候,分不清楚角色和权限(permission)的区别和用法,今天把我对它们的理解做一个总结。

角色

也可以理解为权限,但它只是针对管理RabbitMQ的权限,包括vhost、用户、exchange、queue、链接等。举个实际的例子:假设开启了rabbitmq_manage 的插件,通过set_user_tags 就可以赋予某个用户使用rabbitmq_manage的权限。

系统默认有5种角色:none、management、policymaker、monitoring、administrator

none

  • 不能访问 management plugin

management

  • 用户可以通过AMQP做的任何事外加:
  • 列出自己可以通过AMQP登入的virtual hosts
  • 查看自己的virtual hosts中的queues, exchanges 和 bindings
  • 查看和关闭自己的channels 和 connections
  • 查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

policymaker

  • management可以做的任何事外加:
  • 查看、创建和删除自己的virtual hosts所属的policies和parameters

monitoring

  • management可以做的任何事外加:
  • 列出所有virtual hosts,包括他们不能登录的virtual hosts
  • 查看其他用户的connections和channels
  • 查看节点级别的数据如clustering和memory使用情况
  • 查看真正的关于所有virtual hosts的全局的统计信息

administrator

  • policymaker和monitoring可以做的任何事外加:
  • 创建和删除virtual hosts
  • 查看、创建和删除users
  • 查看创建和删除permissions
  • 关闭其他用户的connections

权限 – permission

主要是set_permissions的使用,这个有点奇葩,先看下命令的格式:

set_permissions [-p vhost] {user} {conf} {write} {read}

首先需要注意以下几点的理解:

  1. 这里的权限,只是针对一般用户的访问权限,注意和角色的区分。举个例子来说,非管理用户(普通用户),角色设置为none,然后在这里配置conf、write、read的权限。
  2. conf、write、read采用正则表达式,之前在很多的网络文章中都提到过,但到底是针对什么做正则,网络中的文章提到的很少,我自己实践琢磨出,这里的正则主要是针对exchange和queue。正在表达式可以省略^和$,主要2种特殊的表达式,”:表示完全不匹配(即没有权限)’.*’ :表示匹配所有(即所有权限)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>