一、相关概念
- vhost
rabbitMQ的虚拟服务器,每一个rabbitMQ服务器都能创建虚拟服务器,而每一个vhost本质上又是一个独立的小型rabbitMQ服务器,拥有自己独立的队列、交换器、及绑定关系,并拥有自己独立权限,类似电脑的实体机和虚拟机的关系,rabbitMQ默认创建一个“/”的vhost
- 用户
在rabbitMQ中,用户是访问控制的基本单元,可以类似理解成linux系统的用户
- 角色
用户的身份,就类似于a用户是学生;b用户是老师,那么显然老师和学生的权限是不同的,同样,不同角色的rabbitMQ用户对于rabbitMQ的权限也不同,角色固定可以取以下值
- none:无任何角色。新建用户的角色默认为none
- management:可以访问web界面
- policymaker:包含management的所有权限,并可管理策略和参数
- monitoring:包含management的所有权限,并可以看到所有连接、信道及节点相关信息
- administrator:包含monitoring的所有权限,并可以管理用户、vhost、权限、策略、参数等
- 权限
rabbitMQ权限是基于vhost的,意思就是设置权限就是设置一个用户在vhost的操作范围,有以下几个操作范围
- conf:可配置权限
- write:可写
- read:可读
二、命令行指令进行用户与权限管理
- 新增用户 rabbitmqctl add_user {username} {passwd}
eg. rabbitmqctl add_user root root123 创建一个用户名为root、密码为root123的用户
- 修改密码 rabbitmqctl change_password {username} {newpasswd}
eg. rabbitmqctl change_password root root321
- 清除密码 rabbitmqctl clear_password {username}
eg. rabbitmqctl clear_password root
- 验证用户密码 rabbitmqctl authenticate_user {username} {passwd}
- 删除用户 rabbitmqctl delete_user
- 显示当前所有用户 rabbitmqctl list_users
- 设置用户角色 rabbitmqctl set_user_tags {username} {tag}
eg. rabbitmqctl set_user_tags root administrator 设置root角色为administrator
- 创建vhost rabbitmqctl add_vhost {vhost}
- 列出当前所有vhost的信息 rabbitmqctl list_vhosts [option],其中option取值如下
name:表示显示vhost名称
tracing:表示是否启用了rabbitMQ的trace功能
- 删除vhost rabbitmqctl delete_vhost {vhost}
- 授权指令 rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}
vhost:设置权限的vhost,如果指定则为“/”
user:设置权限的用户
conf:一个正则表达式,表示用户在哪些资源上有可配置的权限
write:一个正则表达式,表示用户在哪些资源上有可写权限
read:一个正则表达式,表示用户在哪些资源上有可读权限
eg. rabbitmqctl set_permissions -p vhost1 root "^test.*" ".*" ".*" 设置root在vhost1上的权限,在以test开头的资源上有可配置权限,在其他所有资源上有可读写权限
- 清除权限 rabbitmqctl clear_permissions [-p vhost] {username}
- 显示虚拟主机上的权限 rabbitmqctl list_permissions [-p vhost]
- 显示用户权限 rabbitmqctl list_user_permissions {user}
三、图形界面进行用户与权限管理
使用图形界面前需要开启rabbitMQ的managment的插件,开始此插件的指令:
rabbitmq-plugins enable rabbitmq_management
可使用rabbitmq-plugins list查看当前插件的使用情况,执行过之后的截图如下
其中标记[E*]为显式启动,[e*]为隐式启动
插件启动成功后打开浏览器输入http://localhost:15672进入登录界面,界面如下
可输入默认用户guest/guest进行登录,上文提到的所有命令行指令的功能都可以在web界面中实现
- 用户管理界面
点击1可以进入用户管理界面,点击2可以查看所有用户,点击3可以新增用户,点击用户可以查看详细用户信息
- vhost管理界面
按顺序点击1->2可以进入vhost管理界面,点击3可以查看所有vhost,点击4可以新增vhost,点击具体的vhost可以查看vhost的详细信息,并可以配置vhost的权限,具体界面见下图
具体配置规则和命令行类似,不再赘述