【问题标题】: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,而不是队列。在您的情况下,拒绝 write 对 exchange 资源的权限并授予 read 对 queue 资源的权限。

    正确配置 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
    相关资源
    最近更新 更多