Kubernetes实录-第一篇-集群部署配置(3) 配置企业级镜像仓库Harbor集成openLDAP

    技术2022-07-11  111

    Kubernetes实录系列记录文档完整目录参考: Kubernetes实录-目录

    相关记录链接地址 :

    集群部署配置(1) CentOS7配置docker环境 集群部署配置(2) 配置企业级镜像仓库Harbor集群部署配置(3) 配置企业级镜像仓库Harbor集成openLDAP

    Harbor支持的认证后端有4种类型,分别是database,LDAP/AD,UAA,OIDC,其中UAA目前来说还是不建议使用的状态。默认采用的是数据库(database)作为认证,这里测试使用LDAP作为认证后端。 备注: 默认使用数据库作为认证后端,并且已经创建了用户就不能修改认证方式了,所以要在配置初始就决策好用哪种认证后端。

    主机名称ip地址操作系统角色软件版本备注opsharbor-shqs-110.99.73.38CentOS 7.6docker hubdocker-ce 19.03.11docker-compose 1.26.0harbor 1.10.3测试域名:registry.ejuops.comsysldap-shylf-110.116.72.11CentOS 7.6openLDAPopenldap-2.4.44测试域名:直接IP地址

    一、准备工作

    harbor环境的配置参考上一篇文档: 配置企业级镜像仓库Harborhttps://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

    Processed: 0.014, SQL: 9