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