Условие поиска группы мандатов в Dex LDAP Coonector - PullRequest
1 голос
/ 07 октября 2019

Я использую Dex в качестве нашего провайдера идентификации и подключаю его к LDAP. Ниже мой конфиг ldap в Dex:

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:

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, который использует вышеуказанную конфигурацию, дажехотя мой идентификатор пользователя не входит в используемую группу, т.е. в Prometheus, я все еще могу войти в систему.

Логи Dex показывают, что нет никаких групп, связанных с моим идентификатором.

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=[]"

Но почему он все еще позволяет мне войти? Есть ли способ, которым я могу назначить этот параметр, если группа serach возвращает пустое имя, и вход в систему должен быть неудачным?

1 Ответ

0 голосов
/ 13 октября 2019

Я до сих пор не уверен, что это правильный ответ. Но, насколько я мог понять, поиск по группе Декса - это просто поиск по ldap. Возвращает группы, в которые входит пользователь. Как только вы вернете группы, вы можете поместить политики RBAC в эту группу, чтобы контролировать, какой тип доступа вы хотите предоставить пользователю.

Однако для инструментов, которые не имеют собственных методов аутентификации (например, Прометей), я все еще не уверен, как реализовать аутентификацию группы ldap!

...