ldap 集成harbor

harbor: 1.6

默认配置文件在harbor.cfg,我们可以先不添加配置,直接在harbor web界面进行配置(harbor 1.6 如果db 启动失败提示postgresql 数据目录已存在,可在./common/config/db/env中

添加  PGDATA=/tmp )

首先需在harbor.cfg文件中更改认证模式为ldap

auth_mode = ldap_auth

配置完成,点击保存即可使用ldap 帐户登录harbor,但是项目权限无法通过ldap组去控制。

通过ldap组控制harbor权限,需满足一下条件:

a.支持导入ldap组(harbor版本需1.6及以上)

b.支持memberOf属性

 

#开启memberOf属性

创建memberof.ldif文件,导入该模块

dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
objectclass: top
olcModuleLoad: memberof.la
olcModulePath: /usr/lib64/openldap

dn: olcOverlay=memberof,olcDatabase={2}bdb,cn=config
objectclass: olcconfig
objectclass: olcMemberOf
objectclass: olcoverlayconfig
objectclass: top
olcoverlay: memberof

ldapadd -Y EXTERNAL -H ldapi:/// -f memberof.ldif #导入数据

创建用户和组进行测试

ou.ldif

dn: ou=Users,dc=ldap,dc=xxxxx,dc=net
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=ldap,dc=xxxxx,dc=net
objectClass: organizationalUnit
ou: Groups

ldapadd  -D "cn=Manager,dc=ldap,dc=xxxxx,dc=net"  -W -f ou.ldif  #导入用户和组的ou

user.ldif

dn: uid=test,ou=Users,dc=ldap,dc=xxxxx,dc=net
objectClass: account
uid: test

ldapadd -D "cn=Manager,dc=ldap,dc=xxxxx,dc=net" -W -f user.ldif #导入用户

group.ldif

dn: cn=testgroup,ou=Groups,dc=ldap,dc=xxxxx,dc=net
objectClass: groupOfNames
cn: testgroup
member: uid=test,ou=Users,dc=ldap,dc=xxxxx,dc=net

ldapadd -D "cn=Manager,dc=ldap,dc=xxxxx,dc=net" -W -f group.ldif  #导入组

测试memberOf属性:ldapsearch -LL -Y EXTERNAL -H ldapi:/// "(uid=test)" -b dc=ldap,dc=xxxxx,dc=net memberof

返回显示test属于testgroup,则说明memberof属性配置成功 。

 

#添加ldap组到harbor project

点击项目-->选择Members, 添加GROUP

点击保存,使用此ldap组下账户登录harbor,查看是否拥有此项目权限。

登录验证成功,配置完成。

参考链接:

https://github.com/goharbor/harbor/blob/master/docs/manage_role_by_ldap_group.md

http://blog.51cto.com/jerry12356/1861620

posted @ 2018-10-10 18:37  imcati  阅读(3341)  评论(0编辑  收藏  举报