Kubernetes实录系列记录文档完整目录参考: Kubernetes实录-目录
相关记录链接地址 :
Harbor支持的认证后端有4种类型,分别是database
,LDAP/AD
,UAA
,OIDC
,其中UAA目前来说还是不建议使用的状态。默认采用的是数据库(database)
作为认证,这里测试使用LDAP作为认证后端。
备注: 默认使用数据库作为认证后端,并且已经创建了用户就不能修改认证方式了,所以要在配置初始就决策好用哪种认证后端。
主机名称 | ip地址 | 操作系统 | 角色 | 软件版本 | 备注 |
---|---|---|---|---|---|
opsharbor-shqs-1 | 10.99.73.38 | CentOS 7.6 | docker hub | docker-ce 19.03.11 docker-compose 1.26.0 harbor 1.10.3 | 测试域名: registry.ejuops.com |
sysldap-shylf-1 | 10.116.72.11 | CentOS 7.6 | openLDAP | openldap-2.4.44 | 测试域名: 直接IP地址 |
一、准备工作
- harbor环境的配置参考上一篇文档: 配置企业级镜像仓库Harbor
https://registry.ejuops.com/
- openLDAP的安装参考文档:配置OpenLDAP服务单节点模式,如果配置其他模式(主从或者多主)在该文档里面也有相关配置的链接
ldapURL:ldap://10.116.72.11 LDAP搜索DN:cn=Manager,dc=example,dc=com #咨询ldap管理员,如果ldap支持匿名搜索这个不用配置 LDAP搜索密码:xxxxxx #咨询ldap管理员,如果ldap支持匿名搜索这个不用配置 LDAP基础DN:ou=People,dc=example,dc=com LDAP过滤器:objectclass=posixAccount #如果开启了memberof属性参考下面的组管理 LDAP用户UID: uid #根据实际情况配置,咨询ldap管理员,可能是cn,uid或者其他 LDAP搜索范围:子树 # 如果配置了memberof属性可以设置组相关配置,上面的LDAP过滤器可以修改为:(&(objectclass=posixAccount)(memberof=cn=harbor,ou=Group,dc=example,dc=com)) LDAP组基础DN:ou=Group,dc=example,dc=com LDAP组过滤器:objectclass=groupOfUniqueNames LDAP组ID属性:cn LDAP组管理员DN: cn=harbor,ou=Group,dc=example,dc=com # 这个可以不用配置,这里说明改组内的成员都是管理员 LDAP 组成员: memberof LDAP搜索范围:子树
- harbor处于启动状态
二、Harbor集成openLDAP(不进行组管理)
openLDAP没有启用memberof属性,无法进行组管理。只有ldap中满足LDAP过滤器
条件 objectclass=posixAccount
都可以登录,登录后是普通用户权限,然后在harbor用户管理页面进行权限授权.
配置完成后,点击【测试LDAP服务器】成功后直接保存即可,退出登录。然后重启harbor服务
docker-compose down
docker-compose start
可以使用ldap的用户进行登录了,因为我们的过滤器简单,所有满足条件的用户都可以登录进来,并且是普通权限。
如下是ldap里面的一个用800001的登录过程。
三、Harbor集成openLDAP,启用memberof属性,进行组管理
-
上面的配置以及使用的过滤器导致所有的ldap用户都可以登录harbor,这个不满足我们的需求。实际使用中经常是ldap配置一个组,将需要登录ldap的用户添加到该组,只有该组内的成员方可以登录harbor。
-
还可能配置另一个组,将需要管理员权限的用户添加到这个组里面,登录后直接具有管理员权限。需要过滤器配合。我们将配置一个组 harbor 该组内的用户
组:cn=harbor,ou=Group,dc=example,dc=com 组成员:800001,800002,非组成员:800003
将LDAP过滤器配置为
(&(objectclass=posixAccount)(memberof=cn=harbor,ou=Group,dc=example,dc=com))
如此,只能组内用户可以登录了。
-
配置组管理
可以退出登录,重新使用ldap账户登录验证了。
OK,到这里完成harbor与openldap的集成。
参考文档:
官方:https://goharbor.io/docs/1.10/administration/configure-authentication/ldap-auth/
博文:https://www.58jb.com/html/harbor-auth-with-ldap.html