文档章节

【原创】RabbitMQ 之 Access Control(翻译)

摩云飞
 摩云飞
发布于 2015/04/27 19:01
字数 1466
阅读 182
收藏 3
点赞 0
评论 0

Access Control

When the server first starts running, and detects that its database is uninitialised or has been deleted, it initialises a fresh database with the following resources:
当服务器启动运行后,检测到所使用的数据库未进行过初始化,或者被删除了,则会使用如下资源初始化一个新的数据库:
  • a virtual host named /
    使用 / 作为虚拟主机名
  • a user named guest with a default password of guest, granted full access to the / virtual host.
    使用 guest/guest 作为用户名密码,并授予针对 / 虚拟主机的全部权限

It is advisable to delete the guest user or change the password to something private, particularly if your broker is accessible publicly.
建议删除该默认 guest 用户,或者将其密码变更为你自定义的内容,尤其当你的 broker 暴露在公网环境下时。


"guest" user can only connect via localhost
仅能通过 localhost 进行连接的 "guest" 用户

By default, the guest user is prohibited from connecting to the broker remotely; it can only connect over a loopback interface (i.e. localhost). This applies both to AMQP and to any other protocols enabled via plugins. Any other users you create will not (by default) be restricted in this way.
默认情况下,guest 用户被禁止用于非本地的连接;其仅能在通过 loopback 接口(如 localhost)进行连接时使用。该原则对于 AMQP 协议和其他通过插件功能使能的协议都有效。而对于你所创建的任何其他用户,在默认情况下不受该限制约束。

This is configured via the loopback_users item in the configuration file.
可以通过配置文件中的 loopback_users 条目进行相关配置。

If you wish to allow the guest user to connect from a remote host, you should set the loopback_users configuration item to []. A complete rabbitmq.config which does this would look like:
如果你打算允许 guest 用户用于非本地连接,你可以将 loopback_users 条目设置成 [] 。下面给出在 rabbitmq.config 中的完整配置:
[{rabbit, [{loopback_users, []}]}].


How permissions work
权限控制方式

When an AMQP client establishes a connection to an AMQP server, it specifies a virtual host within which it intends to operate. A first level of access control is enforced at this point, with the server checking whether the user has any permissions to access the virtual hosts, and rejecting the connection attempt otherwise.
当一个 AMQP 客户端建立了一条到 AMQP 服务器的连接时,就已经指定了其所使用的虚拟主机。而虚拟主机就是访问权限控制的第一级,因为服务器会校验当前用户是否拥有相关权限来访问对应的虚拟主机,若没有,则会拒绝连接。

Resources, i.e. exchanges and queues, are named entities inside a particular virtual host; the same name denotes a different resource in each virtual host. A second level of access control is enforced when certain operations are performed on resources.
而资源,也就是 exchange 和 queue ,实际是指位于特定虚拟主机内容的命名实体;在不同虚拟主机上的同名实体属于不同的资源。访问权限控制的第二级就是针对资源进行可操作性约束实现的

RabbitMQ distinguishes between configure, write and read operations on a resource. The configure operations create or destroy resources, or alter their behaviour. The write operations inject messages into a resource. And the read operations retrieve messages from a resource.
RabbitMQ 针对资源的操作权限分为 configure 、write 和 read 。
configure 权限用于控制针对资源的创建和删除,或者变更的能力;
write 权限用于限制向资源注入消息的能力;
read 权限用于限制从资源获取消息的能力;

In order to perform an operation on a resource the user must have been granted the appropriate permissions for it. The following table shows what permissions on what type of resource are required for all the AMQP commands which perform permission checks.
为了能够对某种资源进行操作,用户必须被授予相应的权限。下面的表格显示了针对不同类型资源进行 AMQP 命令操作所需的各种权限。

AMQP command

configure
write
read
exchange.declare
(passive=false)
exchange


exchange.declare
(passive=true)



exchange.declare
(with AE)
exchange
 exchange (AE)
exchange
exchange.delete

exchange


queue.declare
(passive=false)
queue


queue.declare
(passive=true) 



queue.declare
(with DLX)
queue
exchange (DLX)
queue
queue.delete

queue


exchange.bind


exchange (destination)
exchange (source)
exchange.unbind


exchange (destination) 
exchange (source)
queue.bind


queue
exchange
queue.unbind


queue
exchange
basic.publish


exchange

basic.get



queue
basic.consume



queue
queue.purge



queue


Permissions are expressed as a triple of regular expressions - one each for configure, write and read - on per-vhost basis. The user is granted the respective permission for operations on all resources with names matching the regular expressions. (Note: For convenience RabbitMQ maps AMQP's default exchange's blank name to 'amq.default' when performing permission checks.)
权限通过三元的正则表达式进行描述 - 分别对应 configure 、write 和 read - 以虚拟主机为单位进行配置。用户通过正则匹配决定被授予针对各种资源相应何种权限(注意,为了方便起见,RabbitMQ 会在进行权限检查时,将 AMQP 中的默认 exchange 名,即空字符串,映射为 'amq.default')。


The regular expression '^$', i.e. matching nothing but the empty string, covers all resources and effectively stops the user from performing any operation. Standard AMQP resource names are prefixed with amq. and server generated names are prefixed with amq.gen. For example, '^(amq\.gen.*|amq\.default)$' gives a user access to server-generated names and the default exchange. The empty string, '' is a synonym for '^$' and restricts permissions in the exact same way.
正则表达式 '^$' ,即仅对空字符串匹配,将对所有资源产生效果,可以阻止用户执行任何操作。
标准 AMQP 资源名以 amq. 作为前缀;服务器自动生成的名字以 amq.gen 作为前缀。例如,'^(amq\.gen.*|amq\.default)$' 将允许用户访问服务器生成名字的资源,以及默认 exchange 。空字符串 '' 与 '^$' 是同义的。

RabbitMQ may cache the results of access control checks on a per-connection or per-channel basis. Hence changes to user permissions may only take effect when the user reconnects.
RabbitMQ 可以按照 Connection 或 channel 层次进行权限控制检查结果的缓存。如此的话,针对用户权限的变更将在用户重连后生效。

For details of how to set up access control, please see the Access Control section of the rabbitmqctl(1) man page.
如何建立访问权限控制的细节,请参考 rabbitmqctl(1) man 手册中的 Access Control 节内容。




© 著作权归作者所有

共有 人打赏支持
摩云飞
粉丝 367
博文 534
码字总数 952690
作品 0
徐汇
程序员
【原创】RabbitMQ 之 Plugins(翻译)

为了方便工作中使用,对 RabbitMQ 的【插件】相关文档进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。此文以中英对照方式呈现。 官方原文:http://www.rabb...

摩云飞
2012/12/12
0
0
【原创】rabbitmq-server用户手册(翻译)

为了方便工作中使用,周末抽空对rabbitmq-server用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbitmq-...

摩云飞
2012/11/12
0
0
【原创】rabbitmq-echopid用户手册(翻译)

为了方便工作中使用,周末抽空对 rabbitmq-echopid 用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbi...

摩云飞
2012/11/12
0
0
【原创】rabbitmq-plugins用户手册(翻译)

为了方便工作中使用,周末抽空对 rabbitmq-plugins 用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbi...

摩云飞
2012/11/12
0
0
【原创】rabbitmq-service用户手册(翻译)

为了方便工作中使用,周末抽空对 rabbitmq-service 用户手册进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。 官方原文:http://www.rabbitmq.com/man/rabbi...

摩云飞
2012/11/12
0
0
【原创】rabbitmq-env.conf用户手册(翻译)

官方原文:http://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html =============== 我是分割线 ================ 名字 rabbitmq-env.conf — RabbitMQ AMQP server 的默认配置文件 描述......

摩云飞
2013/01/03
0
0
centos7安装rabbitmq3.7.3

安装erlang 安装rabbitmq服务 开机启动 web插件 配置文件位置

paascloud
02/27
0
0
【原创】RabbitMQ 之 HTTP server 插件(翻译)

HTTP server plugin HTTP 服务器插件 The rabbitmq-mochiweb plugin provides hosting for other plugins that have HTTP interfaces. It allows these interfaces to co-exist on one or mo......

摩云飞
2015/04/27
0
0
PHP版 RabbitMQ官方中文入门教程

工作中用到 RabbitMQ,但是RabbitMQ官方的 Tutorials 是英文Python和Jave的,官网的教程很好,正好最近业余在撸Python,所以直接来搞个PHP版本的,仅供PHP菜鸟一起来入门学习,如有错误和问题...

Yuansir
2013/06/03
0
0
【原创】RabbitMQ官网文档翻译 -- Clustering Guide

为了方便工作中使用,自己花费了周末空闲的时间对 RabbitMQ 的集群配置相关文档进行了翻译,鉴于自己水平有限,翻译中难免有纰漏产生,如果疑问,欢迎指出探讨。此文以中英对照方式呈现。 官...

摩云飞
2012/12/03
0
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
20分钟前
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部