RabbitMQ系列—用户管理、角色管理、权限管理

用户管理

安装RabbitMQ后,RabbitMQ默认提供了guest用户,guest具有最高权限,在开发中不建议直接使用,需要为项目创建用户。

通过命令的方式

添加用户

rabbitmqctl add_user username passwd

删除用户

rabbitmqctl delete_user username

修改用户密码

rabbitmqctl change_password username newpasswd

查看用户列表

rabbitmqctl  list_users

通过Web的方式

登录RabbitMQ的控制台http://localhost:15672,默认的用户名和密码是guest。添加新用户,用户名admin,密码123456,Tags选择Admin,点击Add user添加成功。

角色管理

在添加用户时,我们选择了Tags,Tags也就是用户角色,它有如下五种:

超级管理员(administrator):可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

监控者(monitoring):可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)。

策略制定者(policymaker):可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息。

普通管理者(management):仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

其他:无法登陆管理控制台,通常就是普通的生产者和消费者。

通过命令的方式

# 设置用户为administrator角色
rabbitmqctl set_user_tags username administrator

通过Web的方式

 

成功添加了一个用户后,此时发现virtual hosts是 No access。virtual hosts也可以理解为数据库,现在需要为admin用户添加可以访问的virtual hosts。

vhost特性

  1. RabbitMQ默认的vhost是“/”,开箱即用。

  2. vhost一般以"/"开头。

  3. 多个vhost是隔离的,多个vhost无法通讯,并且不用担心命名冲突(队列和交换器和绑定),实现了多层分离。

  4. 创建用户的时候必须指定vhost。

在Admin下的Virtual Hosts中添加一个virtual hosts,点击Add virtual hosts。

当然你也可以使用命令的方式:

创建vhost:

rabbitmqctl add_vhost[vhost_name]

删除vhost:

rabbitmqctl delete_vhost[vhost_name]

查看所有的vhost:

rabbitmqctl list_vhosts

再点击/vhost_test进行用户授权,如下位置

选择刚刚添加的admin用户

点击Set permission,用户授权成功。此时可以退出登录,用admin用户来登录试试,发现登录成功了。

权限管理

用户仅能对其所能访问的virtual hosts中的资源进行操作。这里的资源指的是virtual hosts中的exchanges、queues等,操作包括对资源进行配置、写、读。配置权限可创建、删除、资源并修改资源的行为,写权限可向资源发送消息,读权限从资源获取消息。比如:

  • exchange和queue的declare与delete分别需要exchange和queue上的配置权限
  • exchange的bind与unbind需要exchange的读写权限
  • queue的bind与unbind需要queue写权限exchange的读权限
  • 发消息(publish)需exchange的写权限
  • 获取或清除(get、consume、purge)消息需queue的读权限

对何种资源具有配置、写、读的权限通过正则表达式来匹配,具体命令如下:

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

其中,<conf> <write> <read>的位置分别用正则表达式来匹配特定的资源,如'^(amq\.gen.*|amq\.default)$'可以匹配server生成的和默认的exchange,'^$'不匹配任何资源。需要注意的是RabbitMQ会缓存每个connection或channel的权限验证结果,因此权限发生变化后需要重连才能生效。

示例:

rabbitmqctl  set_permissions -p /vhost1  admin '.*' '.*' '.*'  

该命令使用户admin具有/vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源。

查看(指定VHostPath)所有用户的权限信息

rabbitmqctl  list_permissions  [-p  VHostPath]

查看指定用户的权限信息

rabbitmqctl  list_user_permissions  username

清除用户的权限信息

rabbitmqctl  clear_permissions  [-p VHostPath]  username

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值