首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dex LDAP Coonector中的任务组搜索条件

Dex LDAP Coonector中的任务组搜索条件
EN

Stack Overflow用户
提问于 2019-10-08 03:44:35
回答 2查看 561关注 0票数 1

我使用Dex作为我们的身份提供者,并将其连接到LDAP。以下是我在Dex中的ldap配置:

代码语言:javascript
复制
connectors:
- type: ldap
 id: ldap
 name: LDAP
 config:
   host: myhost.staging.com:636
   insecureNoSSL: false
   insecureSkipVerify: false
   bindDN: cn=prometheus-proxy,ou=serviceaccounts,dc=staging,dc=comp,dc=com
   bindPW: 'prometheus'
   rootCA: /etc/dex/ldap/ca-bundle.pem
   userSearch:
     baseDN: ou=people,dc=staging,dc=comp,dc=com
     filter: "(objectClass=person)"
     username: uid
     idAttr: uid
     emailAttr: mail
     nameAttr: uid
   groupSearch:
     baseDN: ou=appgroups,dc=staging,dc=comp,dc=com
     filter: "(objectClass=groupOfMembers)"
     userAttr: DN
     groupAttr: member
     nameAttr: cn

下面是一个示例userSearch & groupSearch结果:

代码语言:javascript
复制
dn: uid=swedas01,ou=people,dc=staging,dc=comp,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
cn: Sweta Das
gecos: Sweta Das
gidNumber: 50000
givenName: Sweta
mail: Sweta.Das@comp.com
sn: Das
uid: swedas01
memberOf: cn=jenkins,ou=appgroups,dc=staging,dc=comp,dc=com
homeDirectory: /home/swedas01

dn: cn=prometheus,ou=appgroups,dc=staging,dc=comp,dc=com
objectClass: top
objectClass: groupOfMembers
cn: prometheus
member: uid=testl01,ou=people,dc=staging,dc=comp,dc=com

当我登录到使用上述配置的Prometheus实例时,即使我的userID不属于正在使用的组(即Prometheus ),我仍然能够登录。

索引日志显示没有与我的id相关联的组。

代码语言:javascript
复制
time="2019-10-07T19:05:48Z" level=info msg="performing ldap search ou=people,dc=staging,dc=comp,dc=com sub (&(objectClass=person)(uid=swedas01))"
time="2019-10-07T19:05:48Z" level=info msg="username \"swedas01\" mapped to entry uid=swedas01,ou=people,dc=staging,dc=comp,dc=com"
time="2019-10-07T19:05:48Z" level=info msg="performing ldap search cn=prometheus,ou=appgroups,dc=staging,dc=comp,dc=com sub (&(objectClass=groupOfMembers)(member=uid=swedas01,ou=people,dc=staging,dc=comp,dc=com))"
time="2019-10-07T19:05:48Z" level=error msg="ldap: groups search with filter \"(&(objectClass=groupOfMembers)(member=uid=swedas01,ou=people,dc=staging,dc=comp,dc=com))\" returned no groups"
time="2019-10-07T19:05:48Z" level=info msg="login successful: connector \"ldap\", username=\"swedas01\", email=\"Sweta.Das@comp.com\", groups=[]"

但是为什么它仍然允许我登录呢?如果group serach返回空,登录失败,我有什么方法可以强制执行此设置吗?

EN

回答 2

Stack Overflow用户

发布于 2020-12-19 19:15:05

由于您的目录支持memberOf属性,因此可以尝试在userSearch筛选器中添加成员条件。

现在看一下:

代码语言:javascript
复制
username: uid
filter: "(objectClass=person)"

生成以下ldap筛选器:

代码语言:javascript
复制
"(&(objectClass=person)(uid=<uid>))"

因此,可以在过滤器设置中添加不带运算符的成员条件,因为dex实际上是在添加运算符本身(由@MohammadYusefpur测试和确认)。

像这样:

代码语言:javascript
复制
filter: "(objectClass=person)(memberOf=cn=prometheus,ou=appgroups,dc=staging,dc=comp,dc=com)"

因此,实际的ldap筛选器会导致

代码语言:javascript
复制
(&(objectClass=person)(memberOf=cn=prometheus,ou=appgroups,dc=staging,dc=comp,dc=com)(uid=<uid>))
票数 2
EN

Stack Overflow用户

发布于 2019-10-14 04:02:14

我仍然不确定这是不是正确的答案。但据我所知,Dex的组搜索只是用于ldap搜索。它返回用户所属的组。一旦取回了组,您就可以将RBAC策略放在这些组上,以控制您想要授予用户的访问类型。

但是,对于没有自己的认证方法的工具(例如Prometheus),我仍然不确定如何实现ldap组认证!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58276195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档