一、相关概念

  • vhost

        rabbitMQ的虚拟服务器,每一个rabbitMQ服务器都能创建虚拟服务器,而每一个vhost本质上又是一个独立的小型rabbitMQ服务器,拥有自己独立的队列、交换器、及绑定关系,并拥有自己独立权限,类似电脑的实体机和虚拟机的关系,rabbitMQ默认创建一个“/”的vhost

  • 用户

        在rabbitMQ中,用户是访问控制的基本单元,可以类似理解成linux系统的用户

  • 角色

        用户的身份,就类似于a用户是学生;b用户是老师,那么显然老师和学生的权限是不同的,同样,不同角色的rabbitMQ用户对于rabbitMQ的权限也不同,角色固定可以取以下值

  1. none:无任何角色。新建用户的角色默认为none
  2. management:可以访问web界面
  3. policymaker:包含management的所有权限,并可管理策略和参数
  4. monitoring:包含management的所有权限,并可以看到所有连接、信道及节点相关信息
  5. administrator:包含monitoring的所有权限,并可以管理用户、vhost、权限、策略、参数等
  • 权限

        rabbitMQ权限是基于vhost的,意思就是设置权限就是设置一个用户在vhost的操作范围,有以下几个操作范围

  1. conf:可配置权限
  2. write:可写
  3. 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查看当前插件的使用情况,执行过之后的截图如下

rabbitMQ用户与权限管理

其中标记[E*]为显式启动,[e*]为隐式启动

    插件启动成功后打开浏览器输入http://localhost:15672进入登录界面,界面如下

rabbitMQ用户与权限管理

可输入默认用户guest/guest进行登录,上文提到的所有命令行指令的功能都可以在web界面中实现

  • 用户管理界面

rabbitMQ用户与权限管理

点击1可以进入用户管理界面,点击2可以查看所有用户,点击3可以新增用户,点击用户可以查看详细用户信息

  • vhost管理界面

rabbitMQ用户与权限管理

按顺序点击1->2可以进入vhost管理界面,点击3可以查看所有vhost,点击4可以新增vhost,点击具体的vhost可以查看vhost的详细信息,并可以配置vhost的权限,具体界面见下图

rabbitMQ用户与权限管理

具体配置规则和命令行类似,不再赘述

相关文章: