Access Control (Authentication, Authorisation) in RabbitMQ

认证和授权这两个概念经常容易被混淆,甚至被互换使用。在RabbitMQ中这是错的,它们是两个独立的概念。可以简单的这样理解,认证就是“识别这个用户是谁”,而授权就是“决定哪些用户不能这么做”。

Default Virtual Host and User

当服务器第一次启动运行的时候,并且检测到它的数据库没有被初始化或者已经被删除了,那么它将用下面这样的资源配置初始化一个新的数据库:

  • 一个虚拟主机,名字叫/
  • 一个名字叫guest的用户,并且密码也是guest,它可以访问/下面的所有资源

我们建议删除guest用户,或者修改它的密码,尤其是当你的MQ是公共访问的时候。

"guest" user can only connect via localhost

默认情况下,guest用户被禁止通过远程连接到RabbitMQ,它只能用localhost连接。你自己创建的其它的用户不会受限于这一条。

这个配置是通过配置文件中的loopback_users来设置的。

如果你希望guest用户从远程主机连接上来,你应该设置loopback_users为none。一个完整的配置应该是这样的:

或者在rabbitmq.config中这样配置:

How Permissions Work

当一个RabbitMQ客户端和服务器建立一个连接的时候,它指定一个它打算操作的虚拟主机。第一个级别的访问控制就在这个这里,这个时候服务器会检查这个用户是否有权限访问该虚拟主机。

资源,比如:交换机和队列,它们是在一个特定的虚拟主机下被命名的实体。相同名字在不同的虚拟主句中表示不同的资源。第二级别的访问控制就是强制检查对资源的某个确定的操作是否被允许执行。

RabbitMQ对一个资源有configure(配置)、read(读)、write(写)操作。(PS:简单的理解就是读、写、执行这三种操作,俗称rwx)

  • configure操作指的是创建或者销毁资源
  • write操作指的是注入一个消息到资源中
  • read操作指的是从资源中检索一个消息

小结:

  第一级别的访问控制是在客户端与服务器建立连接的时候检查用户对虚拟主机是否有访问权限

  第二级别的访问控制是在执行操作的时候检查用户是否对资源有相应的访问权限

为了在资源上执行操作,用户必须被授权相应的权限。下面这个表显示的是在执行AMQP命令的时候需要哪些权限:

权限用正在表达式来表示

参考  http://www.rabbitmq.com/access-control.html

RabbitMQ访问控制的更多相关文章

  1. rabbitmq访问控制试坑篇

    访问控制我理解就是两层,第一层是Virtual host,相当于一个个独立主机 第二层是这个permissions,对照下图权限表 权限表(重要!) 需求 configgure write read ...

  2. RabbitMQ入门_15_访问控制

    参考资料:https://www.rabbitmq.com/access-control.html A. 核心概念 Virtual Host:虚拟主机为 RabbitMQ 中的资源提供了逻辑分组与隔离 ...

  3. RabbitMQ简介

    AMQP简介 在了解RabbitMQ之前,首先要了解AMQP协议.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消 ...

  4. RabbitMq 技术文档

    RabbitMq 技术文档 目录 1 AMQP简介 2 AMQP的实现 3 RabbitMQ简介 3.1 概念说明 3.2 消息队列的使用过程 3.3 RabbitMQ的特性 4 RabbitMQ使用 ...

  5. AMQP与RabbitMQ简介

    MQ(Message Queue,消息队列)是一种应用系统之间的通信方法.是通过读写出入队列的消息来通信(RPC则是通过直接调用彼此来通信的). 1.AMQP协议 在了解RabbitMQ之前,首先要了 ...

  6. RabbitMQ学习3----运行和管理RabbitMQ

    1.服务为管理 Erlang天生就是为了让应用程序无需知道对方是否存在同一台机器上即可互相通信. Erlang节点:Erlang虚拟机的每个实例.多个Erlang应用程序可以运行在同一个节点之上.节点 ...

  7. RabbitMQ安装与初始配置

    [TOC] 本文只讨论linux下的Rabbitmq安装. Erlang安装 rabbitmq依赖于Erlang,需先安装,推荐安装rabbitmq/erlang-rpm: #clone源码 git ...

  8. RabbitMQ windows安装官方文档翻译!

    RabbitMQ Windows安装和配置 下载地址 官网windows下载地址: http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/r ...

  9. 权限管理系统之集成Shiro实现登录、url和页面按钮的访问控制

    用户权限管理一般是对用户页面.按钮的访问权限管理.Shiro框架是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理,对于Shiro的介绍这里就不多说.本篇博客主要是了解Shiro的 ...

随机推荐

  1. java38

    字符串内存分析 String str = new String("ABCD") 会先在堆中开辟一个空间,然后去常量池(方法区)中寻找是否有该变量,如果有,直接引用常量池中的内容 如 ...

  2. mysql中gbk_chinese_ci与gbk_bin区别

    如果在query browser中选create new table在字符集的选择中collation栏有两个选择gbk_chinese_ci与gbk_bin gbk_bin是二进制存储.区分大小写的 ...

  3. js浮点数加减乘除精度不准确

    做个记录,以备不时之需 //加法 Number.prototype.add = function(arg){ var r1,r2,m; try{r1=this.toString().split(&qu ...

  4. JAVA:调用cmd指令(支持多次手工输入)

    JDK开发环境:1.8 package com.le.tool; import java.io.BufferedReader; import java.io.File; import java.io. ...

  5. 自我理解node.js相比java的优势

    今天学习node.js,相比于之前学习过的java,node.js有一些优越之处.原因是它是一个基于Chrome v8引擎建立的JavaScript运行平台. (1)创建服务器:自行服务器来监听客户端 ...

  6. jquery,html5,css3主要特性总结

    jquery特性: 1.丰富简单的DOM选择器 2.同一函数实现get和set 3.支持链式方法书写 4.完善的事件处理功能 5.强大的css动画效果 6.完善的Ajax 7.简单的元素样式操作 8. ...

  7. win10 win7 环境下 oracle 11g和Plsql的安装、卸载遇到的问题。

    * win7一体机在安装好oracle和PlSQL后,无法连接到orcl数据库,同时也忘记了sys设置的密码.(在这里应注意在安装过程中,应选择统一口令,这里我均设置成了orcl,同时也应该注意在最后 ...

  8. 兆芯 服务器 win2012/win7装机总结

    兆芯cpu 服务器 win2012/win7装机总结 一.设置U盘启动装机 启动后,esc进入bios修改下图两个地方,都要改,然后保存. 二.重启计算机,进入win安装界面,会出现无法安装,原因是: ...

  9. unigui ShowModal、MessageDlg

    procedure Calback(Sender: TComponent; AResult: Integer);procedure TForm.Calback(Sender: TComponent; ...

  10. 05 详解C# 迭代器

    迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式. 简单来说,迭代器模式使得你能够获取到序列中的所有元素 ...