• RabbitMQ权限控制


    一、权限说明

    rabbitmq中,可以创建被称为虚拟主机(vhost)的虚拟消费服务器。每个vhost逻辑上是一个独立的消息服务器,拥有自己独立的交换器、队列和绑定等资源。
    vhost提供了隔离机制,使得用户可以在同一套rabbitmq服务器上创建多个vhost,并对不同对应用使用不同对vhost,不同的vhost之间相互隔离,这在业务复杂的大型应用中会比较有用。

    二、相关命令

    #创建vhost

    rabbitmqctl add_vhost {vhost}

    #查看vhost

    rabbitmqctl list_vhosts

    #删除vhost

    rabbitmqctl delete_vhost {vhost}

    #创建用户

    rabbitmqctl add_user {username} {password}

    #赋予角色

    rabbitmqctl set_user_tags {username} {tag}

    tag包含:nonemanagementpolicymakermonitoringadministrator

    1none 不能访问 management plugin

    2management 用户可以通过AMQP做的任何事情外

    列出自己可以通过AMQP登入的virtual hosts  

    查看自己的virtual hosts中的queues, exchanges bindings

    查看和关闭自己的channels connections

    查看有关自己的virtual hosts全局的统计信息,包含其他用户在这些virtual hosts中的活动。

    3policymaker management可以做的任何事外加:

    查看、创建和删除自己的virtual hosts所属的policiesparameter

    4monitoring management可以做的任何事外加:

    列出所有virtual hosts,包括他们不能登录的virtual hosts

    查看其他用户的connectionschannels

    查看节点级别的数据如clusteringmemory使用情况

    查看真正的关于所有virtual hosts的全局的统计信息  

    5administrator policymakermonitoring可以做的任何事外加:

    创建和删除virtual hosts

    查看、创建和删除users

    查看创建和删除permissions

    关闭其他用户的connections

    #删除用户

    rabbitmqctl delete_user {username}

    #为用户授权

    rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

    l -p 为可选项,指定vhost

    l user指定用户;

    l {conf}{write}{read}分别指定用户可以在哪些资源上做配置、读、和写的权限。它们都是一个正则表达式,如果资源名称与指定的正则匹配,则用户对该资源有对应操作权限。需要说明{conf}是指可以对队列、交换器等做创建、删除之类等管理操作,{write}是指可以发布消息,{read}是指可以消费消息。

    7、查看权限

    查看vhost权限

    rabbitmqctl list_permissions [-p vhost]

     查看用户权限

    rabbitmqctl list_user_permissions {username}

    8、清除权限

    与授权相同,清除用户权限也是以vhost为单位对,即一次性清除用户在某个vhost上设置对所有权限。
    清除权限命令为: rabbitmqctl clear_permissions [-p vhost] {username}

     

    9、设置topic权限

    set_topic_permissions [-p vhost] {username}  {exchange} {write} {read}

    l vhost:授予用户访问权的虚拟主机的名称,默认为“/”。

    l user:目标虚拟主机中的权限适用的用户的名称。

    l exchange:主题交换授权检查名称将应用于。

    l write:与发布的消息的路由键匹配的正则表达式。

    l read:与消费消息的路由键匹配的正则表达式。

    clear_topic_permissions [-p vhost]  {username}  [exchange]

    list_topic_permissions [-p vhost]

    list_user_topic_permissions {username}

    用户可以用哪个交换机 的交换策略(交换机 以某种策略去读写)

     

    1、测试用户是否可以创建exchange   即不设置conf

    rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}

    不配置conf 生产者报错 发布出去消息

    conf为新增删除等一些权限

     

    2、测试读写权限

    set_topic_permissions [-p vhost] {username}  {exchange} {write} {read}

     

    三、示例:

    1、创建/dev_order_vhost虚拟主机的读权限用户dev_order_read与写权限用户dev_order_write

    #创建写用户dev_order_write  即生产者用户

    rabbitmqctl add_user dev_order_write  password

     

    #创建读用户dev_order_read  即消费者用户

    rabbitmqctl add_user dev_order_write  password

    #创建/dev_order_vhost虚拟主机

    rabbitmqctl add_vhost /dev_order_vhos

    #赋予读用户dev_order_read/dev_order_vhost虚拟主机读的权限

    rabbitmqctl set_permissions -p /dev_order_vhost dev_order_read ".*" "" ".*"

    #赋予写用户dev_order_write/dev_order_vhost虚拟主机写的权限

    rabbitmqctl set_permissions -p /dev_order_vhost dev_order_write ".*" ".*" ""

    #赋予用户A/dev_order_vhost虚拟主机写的读写权限

    rabbitmqctl set_permissions -p /dev_order_vhost A ".*" ".*" ".*"

     

    说明:需要配置conf,并且需要创建exchange  queue 并绑定

     

     

    2、针对topic_per用户在/vhost虚拟主机中的testexcheange交换机控制只有路由符合pre开头的才可以生产消费

    rabbitmqctl set_topic_permissions -p /vhost topic_per  testxchange "^pre" "^pre"

     

  • 相关阅读:
    WPF-WPF的内部世界-Binding
    WPF-XMAL-布局和控件-布局(一)
    SQL Server的简单使用
    redis的简单使用
    JWT
    C# 面试
    dapper的使用
    .NET发展史
    idea Jrebel升级后看不到且无法重新安装Jrebel
    laydate时间点击后马上消失
  • 原文地址:https://www.cnblogs.com/TimeSay/p/14803530.html
Copyright © 2020-2023  润新知