【问题标题】:Configuring RabbitMQ to deny LDAP users from publishing messages配置 RabbitMQ 以拒绝 LDAP 用户发布消息
【发布时间】:2018-08-20 14:22:14
【问题描述】:

我们在 Windows 环境中运行 RabbitMQ 3.6.5 并使用 LDAP 插件。这允许我们的开发人员查看队列并检查消息。默认情况下,RabbitMQ LDAP 插件允许“所有用户访问所有虚拟主机中的所有对象”(如documented here)。这包括直接从 LDAP 插件发布消息的能力。我们想要做的是拒绝 LDAP 用户的此权限,同时仍然允许他们查看队列。

根据LDAP plugin page,这是通过将 Erlang 查询插入 RabbitMQ 配置来完成的。使用该页面上的示例,我们首先尝试使用此查询简单地授予读取权限(LDAP 细节已更改):

{resource_access_query,
      {for, [{permission, configure, {in_group, "OU=someGroup,OU=Departments,OU=ABC,DC=ABC,DC=ORG"}},
             {permission, read, {constant, true}}
            ]
      }}

如果没有效果,我们尝试明确拒绝写入权限:

{resource_access_query,
    {for, [{resource, queue, {for, [{permission, configure,
           {in_group, "OU=someGroup,OU=Departments,OU=ABC,DC=ABC,DC=ORG"}
           },
           {permission, write, {constant, false}},
           {permission, read,  {constant, true}}
    ]}},
]}}

不幸的是,这也没有效果。在这两种情况下,LDAP 用户仍然能够在 LDAP 插件中发布消息。

有人知道我们缺少什么吗?

【问题讨论】:

    标签: erlang rabbitmq


    【解决方案1】:

    RabbitMQ 团队会监控 this mailing list,但有时只会在 StackOverflow 上回答问题。


    您还需要阅读 RabbitMQ 访问控制指南,特别是 this section。消息通过basic.publish AMQP 0.9.1 方法发布到 RabbitMQ 中的 Exchange,而不是队列。在您的情况下,拒绝 writeexchange 资源的权限并授予 readqueue 资源的权限。

    正确配置 LDAP 插件后,我强烈建议您启用 auth cache plugin。否则,在发布或读取每条消息以及所有其他需要授权的操作时都会进行 LDAP 查询。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多