1

我目前有 ldap 插件在 Rabbit 中工作,它将登录我域中的任何用户。这是问题所在,它为每个用户都这样做。

我希望能够将 rabbitmq 管理门户访问限制为 AD 中的 1 或 2 个特定组。更进一步,我只希望这两个组在 Rabbit Portal 内拥有完全控制权(创建交换/虚拟主机/队列/其他)。下面我只是尝试用 1 个组来执行此操作。我怎样才能做到这一点与 2 组?我{resource_access_query,}要为第二个添加另一个块吗?

这是我当前的配置:

    [
     {rabbit, [{auth_backends, [rabbit_auth_backend_ldap]}]},
     {rabbitmq_auth_backend_ldap,
      [ {servers,               ["dc.domain.com"]},
         {dn_lookup_attribute,   "sAMAccountName"},
         {dn_lookup_base,        "CN=Prod_Group,OU=ProductGroups,OU=Security Groups,OU=Production,OU=domain,DC=hq,DC=domain,DC=com"},
         {user_dn_pattern,       "${username}@domain.com"},
         {use_ssl,               false},
         {port,                  389},
         {log,                   true},
         {resource_access_query,
          {for, [{permission, configure, {in_group, "CN=Prod_Group,OU=ProductGroups,OU=Security Groups,OU=Production,OU=domain,DC=hq,DC=domain,DC=com"}},
                 {permission, write,
                  {for, [{resource, queue,    {in_group, "CN=Prod_Group,OU=ProductGroups,OU=Security Groups,OU=Production,OU=domain,DC=hq,DC=domain,DC=com"}},
                         {resource, exchange, {constant, true}}]}},
                 {permission, read,
                  {for, [{resource, exchange, {in_group, "CN=Prod_Group,OU=ProductGroups,OU=Security Groups,OU=Production,OU=domain,DC=hq,DC=domain,DC=com"}},
                         {resource, queue,    {constant, true}}]}}
       ]
          }},
         {tag_queries,           [{administrator, {constant, true}},
                                  {management,    {constant, true}}]}

       ]
      }
    ].

即使这样,它仍然会在DC=hq,DC=domain,DC=com...的基本 dn 上登录任何人,就好像它没有看到我提供的 DN 路径。有任何想法吗?谢谢!

4

1 回答 1

0

据我所知,您需要使用嵌套组才能看到您的 ou

在嵌套组查询中

{in_group_nested, Pattern}{in_group_nested, Pattern, AttributeName}{in_group_nested, Pattern, AttributeName, Scope}

类似于 in_group 查询,但也遍历组层次结构,例如,如果登录用户是该组的成员,而该组的成员又是另一个组的成员。根据成员属性或任何命名属性检查成员资格。在 group_lookup_base 配置键定义的 DN 中搜索组,如果前者为 none,则在 dn_lookup_base 变量中搜索。如果两个查找基本变量都设置为 none,则查询将始终返回 false。搜索范围可以设置为 subtree 或 single_level。

subtree 搜索包含在查找 basesingle_level 下的所有对象 搜索直接包含在查找 base 中的组范围的默认值是 subrtee 该查询使用从用户到目标组的深入搜索。搜索过程将检测并跳过循环路径。如果用户是许多组的成员,而这些组也是许多组的成员,则此查询可能会耗费时间和内存。当对成员资格层次结构进行分组时,请使用此查询。仍然建议尽可能使用普通的 {in_group, ...} 查询:嵌套组可能难以推理。

例子:

[ {group_lookup_base, "ou=groups,dc=example,dc=com"}, {vhost_access_query, {in_group_nested, "cn=${vhost}-groups,ou=groups,dc=example,dc=com"}, "member", single_level}]

当用户是由 memberattribute 值定义并位于 theou=groups,dc=example,dc=com 目录中的组层次结构中的成员时,这将授予对虚拟主机的访问权限。

于 2016-09-29T22:59:20.410 回答