• 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 节点@主机名
    

    全命令

  • 相关阅读:
    Django Rest Framework(认证、权限、限制访问频率)
    MySql 三大知识点——索引、锁、事务
    django聚合查询
    Python装饰器用法
    linux上ssh免密登录原理及实现
    为github公开项目单独设置用户名
    golang协程池设计
    Django-Signals信号量
    linux tcp相关参数
    记一次性能优化,限制tcp_timewait数量,快速回收和重用
  • 原文地址:https://www.cnblogs.com/shangpolu/p/8275126.html
Copyright © 2020-2023  润新知