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