关于rabbitmq权限的几点:
rabbitmq的权限控制通过两层来实现,一是vhost的权限,二是确认有权限访问vhost后,对vhost内资源的权限控制(配置,读,写)
1.默认的guest用户
当rabbitmq进程启动后,会自动拥有一个guest用户,拥有默认virtual host "/" 的登入权限,但只限于从回环接口登入,即localhost。官方建议删除guest用户或者更改密码。如果想去掉这种限制,需要更改配置文件中的[{rabbit, [{loopback_users, []}]}].
后续新增的用户,不会有这种限制。
2.权限工作流程
一个客户端连接到服务器后,指定一个所操作虚拟机。这是权限产生作用的第一层,服务器会检查该用户是否有权限访问该虚拟机,有则进行下一层,否则拒绝连接。
资源,如一个虚拟机内的交换器、队列等,在资源上rabbitmq提供三种类型的操作,配置、读、写。当客户端被允许连接到某虚拟机后,服务器根据客户端所拥有的权限,允许其做相应的操作。
权限配置支持正则表达式,可以实现一定粒度的权限控制,比如说对某一类队列的控制。
3.rabbitmqctl中对用户的管理命令
rabbitmqctl list_users
add_user {username} {password}
#rabbitmqctl add_user admin 123456
delete_user {username}
#rabbitmqctl delete_user admin
change_password {username} {newpassword}
#rabbitmqctl change_password admin 111111
clear_password {username}
#rabbitmqctl clear admin
set_user_tags {username} {tag ...}
#rabbitmqctl set_user_tags admin administrator #可跟多少tag,tag为空的时候表示清除原有
set_permissions [-p vhost] {user} {conf} {write} {read}
#rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
clear_permissions [-p vhost] {username}
list_permissions [-p vhost]
#rabbitmqctl list_permissions -p "/"
list_user_permissions {username}
#rabbitmqctl list_user_permissions admin