RabbitMQ访问控制

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

原文地址:https://www.cnblogs.com/cjsblog/p/8311627.html

时间: 2024-07-31 19:15:02

RabbitMQ访问控制的相关文章

rabbitmq访问控制试坑篇

访问控制我理解就是两层,第一层是Virtual host,相当于一个个独立主机 第二层是这个permissions,对照下图权限表 权限表(重要!) 需求 configgure write read 创建或删除交换机或队列 是     交换机绑定或解绑   目标交换机 源交换机 队列与交换机绑定或解绑   队列 交换机 发送消息到交换机   交换机   获取或清除消息     队列 注意: 发送消息这里只有一项  write ->交换机,也就是说Write regexp这项只能匹配交换机的名称,

RabbitMQ简介与使用

RabbitMQ简介与使用 2013年3月23日  小白  学习笔记 1. AMQP简介 在了解RabbitMQ之前,首先要了解AMQP协议.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. 当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本.AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与

消息队列_RabbitMQ-0003.深入RabbitMQ节点/配置/管理及日志实时化?

理解节点: 说明: 节点是指Erlang节点,而且节点之间支持相互通信,RabbitMQ应用跑在Erlang节点之上,应用崩溃,Erlang节点会自动尝试重启应用程序,前提是Erlang本身没有崩溃,节点日志默认位于var/log/rabbitmq/[email protected]log 基本管理: 启动节点: rabbitmq-server -detached 关闭节点: rabbitmqctl stop -n [email protected] 说明: rabbitmq-server启动后

运行和管理RabbitMQ

RabbitMQ服务管理 启动RabbitMQ应用程序和Erlang节点 # /etc/init.d/rabbitmq-server start 停止RabbitMQ应用程序和Erlang节点 # /etc/init.d/rabbitmq-server stop 或者 # rabbitmqctl stop 只启动/停止RabbitMQ应用 [[email protected] ~]# rabbitmqctl stop_app [[email protected] ~]# rabbitmqctl 

Rabbitmq基本框架和安装(1)

Rabbitmq简介.特点.使用场景: 1.1)RabbitMQ是一个遵循AMQP协议的消息中间件,它从生产者接收消息并递送给消费者,在这个过程中,根据规则进行路由,缓存与持久化. 1.2)AMQP(Advanced Message Queuing Protocol) 高级消息队列协议,应用层协议的一个开放标准,为面向消息的中间件设计.AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受不同客户端/中间件产品,不同开发语言等条件的限制.AMQP的主要特

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

1.服务为管理 Erlang天生就是为了让应用程序无需知道对方是否存在同一台机器上即可互相通信. Erlang节点:Erlang虚拟机的每个实例.多个Erlang应用程序可以运行在同一个节点之上.节点之间可以进行本地通信(不管他们是运行在同一台服务器之上).举例说明:一个运行在节点A上应用程序可以调用节点B上应用程序的方法,就好像调用本地函数一样.如果应用程序由于某些原因奔溃,Erlang节点会自动尝试重启应用程序. 1.1启动节点 在RabbitMQ的安装目录下运行./rabbitmq-ser

RabbitMQ学习之:(十)AMQP和RabbitMQ介绍 (转贴+我的评论)

From: http://www.infoq.com/cn/articles/AMQP-RabbitMQ 准备开始 高级消息队列协议(AMQP1)是一个异步消息传递所使用的应用层协议规范.作为线路层协议,而不是API(例如JMS2),AMQP客户端能够无视消息的来源任意发送和接受信息.现在,已经有相当一部分不同平台的服务器3和客户端可以投入使用4. AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具.因此,面向消息的中间件(MOM)系

RabbitMQ windows安装官方文档翻译!

RabbitMQ Windows安装和配置 下载地址 官网windows下载地址: http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10.exe github windows版下载地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmqv36_10/rabbitmq-server-3.6.10.exe

RabbitMQ安装笔记

RabbitMQ安装笔记 安装Erlang 在安装RabbitMQ之前,需要先安装Erlang.可以通过以下命令安装: yum install erlang 安装时信息如下: 安装RabbitMQ 服务端 安装命令如下: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-3.4.2-1.noarch.rpm rpm -Uvh rabbitmq_server-3.4.2-1.noarch.rpm