zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    大数据和云计算
    关于移动开发的一些讨论(在有些场合,移动就是噱头,胡乱鼓吹是不负责任的)
    软件开发设计中的两个误区
    【转】从底层了解ASP.NET体系结构
    DotNet命名规范参考(转)
    PAD会取代PC吗
    转:关于http server
    AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!
    关于字符集(讲的比较清楚的一片字符集科普文章)
    .NET vs JAVA
  • 原文地址:https://www.cnblogs.com/cjsblog/p/8311627.html
Copyright © 2011-2022 走看看