RabbitMQ权限
RabbitMQ
引言
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ可以,多个程序同时使用RabbitMQ ,但是必须队列名称不一样。采用erlang语言,属于爱立信公司开发的。
起停服务
- # 启用web管理界面
- # rabbitmq-plugins enable rabbitmq_management
- # 开启服务:rabbitmq-server -detached
- # 关闭服务:rabbitmqctl stop (连同节点上的其它应用程序一同关闭了)
- # or
- # 关闭服务:rabbitmqctl stop_app (只关闭rabbitmq节点)
- # 开启插件:rabbitmq-plugins enable 插件名
- # 关闭插件:rabbitmq-plugins disable 插件名
- # 检查rabbitmq状态:rabbitmqctl status
启动后查看进程(已开启web插件)
此时,即可打开浏览器输入http://127.0.0.1:15672地址,进入web端(如下图)
登陆用户,系统默认用户:账号:guest 密码:guest 角色:administration
如想新建用户,可通过下方命令,自行创建!
默认端口
- 4369 (epmd), 25672 (Erlang distribution)
- 5672, 5671 (AMQP 0-9-1 without and with TLS)
- 15672 (if management plugin is enabled)
- 61613, 61614 (if STOMP is enabled)
- 1883, 8883 (if MQTT is enabled)
- # 特殊说明
- web:15672
- api_port:5672
配置文件和日志
- # 默认情况下rabbitmq的日志在 /var/log/rabbitmq/rabbit@[hostname].log
- # 默认配置文件 /etc/rabbitmq/rabbitmq.config
用户管理
- # 新建用户:rabbitmqctl add_user username password
- # 删除用户:rabbitmqctl delete_user username
- # 查看用户列表:rabbitmqctl list_users
- # 查看用户列表:rabbitmqctl list_users
例:
- # 新建用户 zhaok
- rabbitmqctl add_user zhaok ******
- # 修改用户密码 zhaok
- rabbitmqctl change_password zhaok newpassword
- # 删除用户 zhaok
- rabbitmqctl delete_user zhaok
角色授权
角色大致有五类:
超级管理员administrator, 监控者monitoring, 策略制定者policymaker, 普通管理者management以及其他
角色说明:
超级管理员(administrator):可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
监控者(monitoring):可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者(policymaker):可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)
普通管理者(management):仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
其他(other):无法登陆管理控制台,通常就是普通的生产者和消费者。
略。。。
授权角色
- # 授权角色:rabbitmqctl set_user_tags User Tag
- # 查看用户角色: 可通过rabbitmqctl list_users查看
- # 重新授权,直接重新执行授权命令即可
User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)
例:
- # 授权单角色
- rabbitmqctl set_user_tags zhaok monitoring
- # 授权多角色
- rabbitmqctl set_user_tags zhaok monitoring policymaker
可通过查看用户命令来查看用户角色
权限授权
用户授权说明(与角色之间不同,不可混淆)
rabbitmq的权限控制通过两层来实现,一是vhost的权限,二是确认有权限访问vhost后,对vhost内资源的权限控制(配置,读,写)
通俗的可以理解为:指用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作等等
授权分三个操作:
读:有关消费消息的任何操作,包括"清除"整个队列
写:发布消息
配置:队列和交换机的创建和删除
每一条访问控制是由以下四部分组成:
1、被授予访问权限的用户
2、权限控制应用的Vhost
3、需要授权的读/写/配置权限组合
4、权限范围——权限控制仅应用与客户端命名的队列和交换机
注:访问控制权限是无法跨越Vhost的!!!
- (1) 设置用户权限
- rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
- (2) 查看(指定hostpath)所有用户的权限信息
- rabbitmqctl list_permissions [-p VHostPath]
- (3) 查看指定用户的权限信息
- rabbitmqctl list_user_permissions User
- (4) 清除用户的权限信息
- rabbitmqctl clear_permissions [-p VHostPath] User
例:
- # 单用户授权
- 示例:rabbitmqctl set_permissions -p broker_one producer_one ".*" ".*" ".*"
- # 说明:给用户producer_one授权 vhost名称为broker_one的 配置 写入 读取的权限
- 示例:rabbitmqctl set_permissions -p broker_one producer_one " " ".*" " "
- # 说明:给用户producer_one授权 vhost名称为broker_one的 配置 写入 读取的权限
特殊说明:
“---” 双引号中的信息为正则表达式
".*" 表示配置任何队列和交换机
"checks-.*"表示只能配置名字以"checks-"开头的队列和交换机
" " 不匹配队列和交换机
virtual_host管理
- 新建virtual_host: rabbitmqctl add_vhost xxx
- 撤销virtual_host: rabbitmqctl delete_vhost xxx
- 查看列表:rabbitmqctl list_vhosts
队列管理
- 查看当前队列信息:rabbitmqctl list_queues
- 清除所有队列:rabbitmqctl reset
获取服务器状态信息
- 查看节点信息:rabbitmqctl cluster_status
- 服务器状态:rabbitmqctl status
- queue信息:rabbitmqctl list_queues # 默认会查看 / 下的队列
- # 如果想看其他vhost中的,加参数 -p "vhost_name"
- exchange信息:rabbitmqctl list_exchanges
- binding信息:rabbitmqctl list_bindings
- connection信息:rabbitmqctl list_connections
- channel信息:rabbitmqctl list_channels
集群命令
集群的事宜会有详解,暂略
- 查看集群状态:rabbitmqctl cluster_status
- 创建集群:rabbitmqctl join_cluster 节点@主机名
全命令
RabbitMQ权限的更多相关文章
- RabbitMQ权限控制原理
我们在使用MQ搭建系统的时候,经常要开放队列给外接系统访问.外接系统的稳定性是不可控的.为了防止外接系统不稳定导致误操作破坏了MQ的配置或数据,需要对MQ做比较精细的权限控制. 我的需求是这样的: 我 ...
- rabbitMQ权限相关命令
权限相关命令为: (1) 设置用户权限 rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP (2) 查看(指 ...
- RabbitMQ 权限分离&HA操作文档
概要 默认情况下,使用帐号guest帐号登陆MQ,所有用户的queue信息,全部创建在根目录/的virtual host下,而这样,就会导致,任一用户登录后,都能看到其他用户的queue信息. 针对以 ...
- rabbitmq权限细分二
禁止用户远程登录 主要有以下几步 1.进入容器 docker exec -it ID /bin/bash 2.打开配置文件 vi /etc/rabbitmq/rabbitmq.conf 3.加入配置, ...
- RabbitMQ用户角色及权限控制
RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...
- RabbitMQ用户角色及权限控制(转)
转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538 ### ...
- RabbitMQ用户角色及权限控制 -2
1.RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator none 不能访问 management plugin ...
- RabbitMQ用户角色及权限控制(不错)
########################用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.moni ...
- rabbitMQ安装docker版 /权限管理命令
1.进入docker hub镜像仓库地址:https://hub.docker.com/ 2.搜素rabbitMQ 查询镜像,可以看到多种类型,选择带有web页面的(managment) 3.拉取镜像 ...
随机推荐
- Arc073_F Many Moves
传送门 题目大意 有$n$个格子从左到右依次挨着,一开始有两枚棋子分布在$A,B$某一个或两个格子里,有$m$个操作,第$i$次操作要求你把其中一个棋子移到$X_i$上,移动一个棋子的代价是两个格子之 ...
- 卸载DCOS
再次安装,已经是隔了两天,我打算换一台机器作为boot机器,但是发现报错,告知部署设备已经安装了dcos:看来需要卸载:uninstall-master.sh /opt/mesosphere/bin/ ...
- Django_form补充
问题1: 注册页面输入为空,报错:keyError:找不到password def clean(self): print("---",self.cleaned_data) ...
- Shiro 权限管理filterChainDefinitions过滤器配置
博客转载:http://blog.csdn.net/userrefister/article/details/47807075 /** * Shiro-1.2.2内置的FilterChain * @s ...
- Image Sub-pixel interpolation by Verilog
bilinear interpolation -------------------------------------------------------- input a0 a1 b0 b1 ...
- 自定义echart tooltip格式
formatter: function (tipData) { return tipData[0].name + '</br>' + '<span style="displ ...
- ng2 中使用echart
1.首先创建echarts指令 //echart.directive.ts important { Directive,ElementRef,Input,Ouput,Onchanges,OnInit, ...
- 使用jquery扩展表格行合并方法探究
1.前言 最近项目中用到一个表格中对于相同内容的数据进行行合并的需求,本来想从网上找个现成的,省的自己再造轮子.于是就开始谷歌了...不过在搜索的过程中,发现找到的工具类很多都有一个前提,就是该表格中 ...
- sql 根据年份、月份查询数据
CREATE TABLE [dbo].[T_UserAccess]( ,) NOT NULL, [UserId] [int] NULL, [UserType] [int] NULL, ) NULL, ...
- shell入门-tr替换字符和split切割大文件
命令:tr 说明:替换字符 格式tr ‘原字符’ ‘新字符’ 可以是范围字符,指定字符 命令:split 选项:-b 50m 1.txt 根据大小分割 单位是b不用单位,单位是兆加m -l 100 ...