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