其他分享
首页 > 其他分享> > rabbitmq权限控制

rabbitmq权限控制

作者:互联网

两级权限控制

RabbitMQ 授权模型分两级:
第一级控权单位是 virtual host,
第二级控权单位是 resource(包含exchange和queue),两个相同名称的 resource如果分属不同的 virtual host,则算是不同的 resource。
当用户访问 RabbitMQ 时,首先触发第一级控权,判断用户是否有访问该 virtual host 的权限;
若可访问,则进行第二级控权,判断用户是否具有操作所请求 resource 的权限。

权限定义

RabbitMQ 定义的操作有三种:
configure 主要是创建、删除 exchange 和 queue 操作;
write 主要对应绑定和推送消息操作;
read 主要对应读取消息操作。
当管理员对一个用户进行授权时,要配置两个元素:
允许什么操作,即 configure、write、read三种 operation ;
操作什么 resource,即用户是否拥有某资源的权限,通过对该资源的名称与授权时配置的正则进行匹配来判断,如果能匹配上则允许对应的操作

操作

添加 virtual host

rabbitmqctl add_vhost /vhost

添加用户

rabbitmqctl add_user test 123456
#用户test,密码123456

设置权限

rabbitmqctl set_permissions -p /vhost test ".*" ".*" ".*"
#test用户可以访问/vhost

限制操作

不允许配置 Exchange 和 Queue

rabbitmqctl set_permissions -p /vhost test "^$" ".*" ".*"
#注意 conf 字段设置的是 ^$,这个是匹配一个空行,所以不会匹配到任何 exchange 和 queue ,所以没法对 /vhost 下面的任何 exchange 和 queue 进行创建、删除操作

只允许用户消费以”star”开头的队列

rabbitmqctl set_permissions -p /vhost test "^$" ".*" "^star.*"
#注意 read 字段设置的是 ^star.*,如果某个 queue 不是以 “star” 开头,那么用户 test 则不能获取、消费队列中的消息

标签:控制,resource,用户,rabbitmq,vhost,test,操作,权限
来源: https://www.cnblogs.com/aiverhua/p/16525903.html