【问题标题】:RabbitMQ filter user access with ldap pluginRabbitMQ 使用 ldap 插件过滤用户访问
【发布时间】:2016-03-18 00:22:20
【问题描述】:

我目前有 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 路径一样。有任何想法吗?谢谢!

【问题讨论】:

    标签: rabbitmq ldap-query rabbitmq-exchange


    【解决方案1】:

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

    在嵌套组查询中

    {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 变量中搜索。如果两个查找基础变量都设置为无,则查询将始终返回 false。搜索范围可以设置为子树或单级。

    子树搜索包含在查找基础下的所有对象单级搜索直接包含在查找基础中的组范围的默认值是 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 目录中的组层次结构中的成员时,这将授予对虚拟主机的访问权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      相关资源
      最近更新 更多