像mysql有数据库的概念并且可以指定用户对库和表等操作的权限。那RabbitMQ呢?RabbitMQ也有类似的权限管理。在RabbitMQ中可以虚拟消息服务器VirtualHost,每个VirtualHost相当月一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 
在RabbitMQ中无法通过AMQP创建VirtualHost,可以通过以下命令来创建。

rabbitmqctl add_vhost [vhostname]

如上图在创建完vhost后可以在All Virtual Host标签看到新建的VirtualHost。

用户权限管理

通常在权限管理中主要包含三步:

  1. 新建用户
  2. 配置权限
  3. 配置角色

新建用户

rabbitmqctl add_user wyt wyt

配置权限

set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

其中, 的位置分别用正则表达式来匹配特定的资源,如

'^(amq.gen.*|amq.default)$'

可以匹配server生成的和默认的exchange,’^$’不匹配任何资源

  • exchange和queue的declare与delete分别需要exchange和queue上的配置权限
  • exchange的bind与unbind需要exchange的读写权限
  • queue的bind与unbind需要queue写权限exchange的读权限 发消息(publish)需exchange的写权限
  • 获取或清除(get、consume、purge)消息需queue的读权限

示例:我们赋予superrd在“/”下面的全部资源的配置和读写权限。

rabbitmqctl set_permissions -p / superrd ".*" ".*" ".*"

注意”/”代表virtual host为“/”这个“/”和linux里的根目录是有区别的并不是virtual host为“/”可以访问所以的virtual host,把这个“/”理解成字符串就行。

配置角色

rabbitmqctl set_user_tags [user] [role]

RabbitMQ中的角色分为如下五类:none、management、policymaker、monitoring、administrator

官方解释如下:

management
User can access the management plugin
policymaker
User can access the management plugin and manage policies and parameters for the vhosts they have access to.
monitoring
User can access the management plugin and see all connections and channels as well as node-related information.
administrator
User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts.
  • none 
    不能访问 management plugin

  • management 
    用户可以通过AMQP做的任何事外加: 
    列出自己可以通过AMQP登入的virtual hosts 
    查看自己的virtual hosts中的queues, exchanges 和 bindings 
    查看和关闭自己的channels 和 connections 
    查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

  • policymaker 
    management可以做的任何事外加: 
    查看、创建和删除自己的virtual hosts所属的policies和parameters

  • monitoring 
    management可以做的任何事外加: 
    列出所有virtual hosts,包括他们不能登录的virtual hosts 
    查看其他用户的connections和channels 
    查看节点级别的数据如clustering和memory使用情况 
    查看真正的关于所有virtual hosts的全局的统计信息

  • administrator 
    policymaker和monitoring可以做的任何事外加: 
    创建和删除virtual hosts 
    查看、创建和删除users 
    查看创建和删除permissions 
    关闭其他用户的connections

如下示例将wyt设置成administrator角色。

rabbitmqctl set_user_tags wyt administrator

RabbitMQ消息队列(十三)-VirtualHost与权限管理的更多相关文章

  1. (十三)RabbitMQ消息队列-VirtualHost与权限管理

    原文:(十三)RabbitMQ消息队列-VirtualHost与权限管理 VirtualHost 像mysql有数据库的概念并且可以指定用户对库和表等操作的权限.那RabbitMQ呢?RabbitMQ ...

  2. RabbitMQ消息队列(四)-服务详细配置与日常监控管理

    RabbitMQ服务管理 启动服务:rabbitmq-server -detached[ /usr/local/rabbitmq/sbin/rabbitmq-server -detached ] 查看 ...

  3. (四)RabbitMQ消息队列-服务详细配置与日常监控管理

    原文:(四)RabbitMQ消息队列-服务详细配置与日常监控管理 RabbitMQ服务管理 启动服务:rabbitmq-server -detached[ /usr/local/rabbitmq/sb ...

  4. 使用EasyNetQ组件操作RabbitMQ消息队列服务

    RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...

  5. RabbitMQ消息队列

    RabbitMQ消息队列 !!!  注意,保证服务器的内存足够,磁盘足够,以及删除/etc/hosts中没有用的dns解析 # 优点,能够保证消息数据持久化,不丢失,支持高并发 安装学习rabbitm ...

  6. Python RabbitMQ消息队列

    python内的队列queue 线程 queue:不同线程交互,不能夸进程 进程 queue:只能用于父进程与子进程,或者同一父进程下的多个子进程,进行交互 注:不同的两个独立进程是不能交互的.   ...

  7. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...

  8. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  9. (三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1

    原文:(三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1 如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Cen ...

  10. .net core使用rabbitmq消息队列

    看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...

随机推荐

  1. firefox添加post插件

    附加组件 - > 插件 -> 搜索RESTClient

  2. 20181115 python-第一章学习小结part4

    python第一章 流程控制 单分枝任务 If  条件: 满足条件执行动作 注意if下面的缩进,建议直接使用tab键,4个空格太难输入. 双分枝任务 If  条件: 满足条件执行动作 else: 条件 ...

  3. C++进阶:新人易入的那些坑 --1.常量、常指针和指针常量

    声明:以下内容B站/Youtube学习笔记,https://www.youtube.com/user/BoQianTheProgrammer/ Advanced C++. /* why use con ...

  4. 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件

    从零开始构建一个centos+jdk7+tomcat7的镜像文件 centos7系统下docker运行环境的搭建 准备centos基础镜像 docker pull centos 或者直接下载我准备好的 ...

  5. 性能之ab简单使用

    ab是apache自带的性能测试工具,他所有关注的请求返回的状态码(2XX),不关心后续处理过程,所以测试时间很小,严重依赖CPU颗粒数 一.进入ab存放的目录执行./ab.其中/ab [option ...

  6. Maven 插件之 docker-maven-plugin 的使用

    目录 docker-maven-plugin 介绍环境.软件准备Demo 示例 配置 DOCKER_HOST示例构建镜像 指定构建信息到 POM 中构建使用 Dockerfile 构建使用命令绑定 D ...

  7. 记录opencv编译过程

    准备学习opencv,参考了几个网页终于完成.编辑器和opencv版本都选择最新的版本. 记录过程如下 1. 下载准备: 1)         Opencv源码, 下载地址: https://sour ...

  8. Java当中的线程

    1.进程和线程 进程和线程之间是什么关系 多进程:在操作系统中能(同时)运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流(同时)执行 线程的执行过程 2.定义线程的方法 方法1: 定义一个线 ...

  9. 自然语言处理(四)统计机器翻译SMT

    1.统计机器翻译三要素 1.翻译模型 2.语言模型 3.排序模型 2.翻译流程 1.双语数据预处理 2.词对齐 3.构造短语翻译表 4.对短语翻译表进行概率估计 5.解码,beam search 6. ...

  10. weex 学习: 添加图标(使用阿里吧吧-icon)

    添加图标(使用阿里吧吧-icon) <text slot="left" class="header-left"></text>   i ...