代码之家  ›  专栏  ›  技术社区  ›  JorgeeFG

如果用户没有“配置”权限,就不能从PHP向RabbitMQ发布消息,为什么?

  •  0
  • JorgeeFG  · 技术社区  · 3 年前

    我有以下配置文件,它来自 export 命令

    {
        "rabbit_version": "3.9.18",
        "rabbitmq_version": "3.9.18",
        "product_name": "RabbitMQ",
        "product_version": "3.9.18",
        "users": [{
            "name": "bureau_user",
            "password_hash": "gr0kazwxxxxxxOQwblCoB68LX3hcr0QFVl+a/0M5gLYIScw",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": [],
            "limits": {}
        }, {
            "name": "monolito_user",
            "password_hash": "tT3rNrxxxxxxDJ9Rp3kJ8ul1vGRCmS/2aYjxDUub/NSKvnSe",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": [""],
            "limits": {}
        }, {
            "name": "guest",
            "password_hash": "WRz7lNSxxxxxxkNClznlp1uJ5g9HJFwm8ANK3IPOyuoUmWw",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": ["administrator"],
            "limits": {}
        }],
        "vhosts": [{
            "name": "/"
        }],
        "permissions": [{
            "user": "guest",
            "vhost": "/",
            "configure": ".*",
            "write": ".*",
            "read": ".*"
        }, {
            "user": "monolito_user",
            "vhost": "/",
            "configure": ".*",   <<<<<< with this empty, I get the error
            "write": ".*",
            "read": ".*"
        }],
        "topic_permissions": [],
        "parameters": [],
        "global_parameters": [{
            "name": "internal_cluster_id",
            "value": "rabbitmq-cluster-id-e5ChXZuOJaCyj8rQwbGkLA"
        }],
        "policies": [],
        "queues": [{
            "name": "messages",
            "vhost": "/",
            "durable": true,
            "auto_delete": false,
            "arguments": {}
        }],
        "exchanges": [{
            "name": "messages",
            "vhost": "/",
            "type": "fanout",
            "durable": true,
            "auto_delete": false,
            "internal": false,
            "arguments": {}
        }],
        "bindings": [{
            "source": "messages",
            "vhost": "/",
            "destination": "messages",
            "destination_type": "queue",
            "routing_key": "",
            "arguments": {}
        }]
    }
    

    根据测试,我得出的结论是,如果用户没有 configure 权限,则我无法从Symfony Messenger/PHP发布消息

    "Server channel error: 403, message: ACCESS_REFUSED - access to exchange 'messages' in vhost '/' refused for user 'monolito_user'", class: "AMQPExchangeException"

    如果我添加 配置 权限,则用户可以执行此操作。

    为什么?我只想 write/read 就可以了。

    0 回复  |  直到 3 年前