共计 1832 个字符,预计需要花费 5 分钟才能阅读完成。
rabbitmq 的 web 管理界面无法使用 guest 用户登录
安装最新版本的 rabbitmq(3.3.1),并启用 management plugin 后,使用默认的账号 guest 登陆管理控制台,却提示登陆失败。
翻看官方的 release 文档后,得知由于账号 guest 具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest 用户只能通过 localhost 登陆使用,并建议修改 guest 用户的密码以及新建其他账号管理使用 rabbitmq(该功能是在 3.3.0 版本引入的)。
虽然可以以比较猥琐的方式:将 ebin 目录下 rabbit.app 中 loopback_users 里的 <<“guest”>> 删除,
并重启 rabbitmq,可通过任意 IP 使用 guest 账号登陆管理控制台,但始终是违背了设计者的初衷,再加上以前对这一块了解也不多,因此有必要总结一下。
1. 用户管理
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。
相应的命令
(1) 新增一个用户
rabbitmqctl add_user Username Password
(2) 删除一个用户
rabbitmqctl delete_user Username
(3) 修改用户的密码
rabbitmqctl change_password Username Newpassword
(4) 查看当前用户列表
rabbitmqctl list_users
2. 用户角色
按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
(1) 超级管理员(administrator)
可登陆管理控制台 (启用 management plugin 的情况下),可查看所有的信息,并且可以对用户,策略(policy) 进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用 management plugin 的情况下),同时可以查看 rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用 management plugin 的情况下), 同时可以对 policy 进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
与 administrator 的对比,administrator 能看到这些内容
(4) 普通管理者(management)
仅可登陆管理控制台(启用 management plugin 的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
了解了这些后,就可以根据需要给不同的用户设置不同的角色,以便按需管理。
设置用户角色的命令为:
rabbitmqctl set_user_tags User Tag
User 为用户名,Tag 为角色名(对应于上面的 administrator,monitoring,policymaker,management,或其他自定义名称)。
也可以给同一用户设置多个角色,例如
rabbitmqctl set_user_tags hncscwc monitoring policymaker
3. 用户权限
用户权限指的是用户对 exchange,queue 的操作权限,包括配置权限,读写权限。配置权限会影响到 exchange,queue 的声明和删除。读写权限影响到从 queue 里取消息,向 exchange 发送消息以及 queue 和 exchange 的绑定 (bind) 操作。
例如:将 queue 绑定到某 exchange 上,需要具有 queue 的可写权限,以及 exchange 的可读权限;向 exchange 发送消息需要具有 exchange 的可写权限;从 queue 里取数据需要具有 queue 的可读权限。详细请参考官方文档中 ”How permissions work” 部分。
相关命令为:
(1) 设置用户权限
rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
(2) 查看 (指定 hostpath) 所有用户的权限信息
rabbitmqctl list_permissions [-p VHostPath]
(3) 查看指定用户的权限信息
rabbitmqctl list_user_permissions User
(4) 清除用户的权限信息
rabbitmqctl clear_permissions [-p VHostPath] User