加载中...

LDAP--Jenkins详解笔记

一、Ldap的结构

1.组织角色

所有用户都可以登录,但是只有创建时的admin组角色有增删改的权限,相当于是根目录,千万不能删,删了就全没了

注意,admin用户是首个超级登录用户(相当于根),需要用配置文件生成,详见:https://www.cnblogs.com/wangyuanguang/p/18189832

##注意修改wyg部分为自己自定义的账户
~]# vim /etc/openldap/base.ldif
dn: dc=wyg,dc=com
objectClass: dcObject
objectClass: organization
o: wyg.com
dc: wyg
~]#  ldapadd -x -W -D "cn=admin,dc=wyg,dc=com" -f /etc/openldap/base.ldif
Enter LDAP Password:
adding new entry "dc=wyg,dc=com"

2.组

做到用户的组隔离(个人认为没有特殊要求的话,一个组也就够用了,不需要jenkins、harbor、h5ai等接入时单独建设一个组,这样维护起来要维护好几套),当然在做特殊的权限颗粒时可以新增组。
可以通过配置文件生成,也可以直接创建生成
2.1 配置文件创建

~]# vim /etc/openldap/groups.ldif
dn: ou=groups,dc=wyg,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

dn: ou=jenkins,dc=wyg,dc=com
objectClass: organizationalUnit
objectClass: top
ou: jenkins

dn: ou=test,dc=wyg,dc=com
objectClass: organizationalUnit
objectClass: top
ou: test

~]#  ldapadd -x -W -D "cn=admin,dc=wyg,dc=com" -f /etc/openldap/groups.ldif
Enter LDAP Password:
adding new entry "ou=jenkins,dc=wyg,dc=com"
adding new entry "ou=groups,dc=wyg,dc=com"
adding new entry "ou=test,dc=wyg,dc=com"

2.2 也可以直接在GUI上创建


跳过部分的意思是不添加这些属性,像这种都是灰色无法选取的说明都是必要的属性,不能跳过
提交之后会生成test1的组,和另外新增的几个组(例如jenkins)的属性一样,测试完我就直接删除了

3.用户

用户就是LDAP对外平台主要提供的数据(也可以登录ldap本身)
可以通过配置文件生成、GUI页面新建、GUI页面复制
3.1 配置文件生成
创建用uid登录的用户(除了必要的属性外,其他的属性都可以根据需求增加或者删除)

~]# vim /etc/openldap/users.ldif
dn: uid=user1,ou=jenkins,dc=wyg,dc=com
ou: jenkins
uid: user1
sn: user1
cn: user1
givenName: user1
mail: readafa@esgyn.local
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: MTIzNDU2
displayName:: 5rGq5YWD5YWJ

~]#  ldapadd -x -W -D "cn=admin,dc=wyg,dc=com" -f /etc/openldap/users.ldif
Enter LDAP Password:
adding new entry "ou=jenkins,dc=wyg,dc=com"

3.2 GUI页面新建
找到对应的组,创建新的条目

创建cn登录的用户

Ldap属性配置

1.关于objectClass
LDAP中,一个条目必须包含一个objectClass属性,且需要赋予至少一个值,新建组或者用户时可以根据需求添加或减少可选的属性,已经创建好的可选属性清空后update就会删除,也可以增加可选属性。每一个值将用作一条LDAP条目进行数据存储的模板;模板中包含了一个条目必须被赋值的属性和可选的属性。
objectClass有着严格的等级之分,最顶层是top和alias。例如,organizationalPerson这个objectClass就隶属于person,而person又隶属于top;
objectClass可分为以下3类:
结构型(Structural):如person和organizationUnit;
辅助型(Auxiliary):如extensibeObject;
抽象型(Abstract):如top,抽象型的objectClass不能直接使用。
在OpenLDAP的schema中定义了很多objectClass,下面列出部分常用的objectClass的名称。

account
alias
dcobject
domain
ipHost
organization
organizationalRole
organizationalUnit
person
organizationalPerson
inetOrgPerson
residentialPerson
posixAccount
posixGroup

三、属性中对应jenkins的选项

在jenkins中可以选择用cn名还是User Name,如下jenkins配置中uid={0}表示是使用User Name(使用cn={0}表示用的是cn名登录)

对应的是ldap中User Name属性值

在jenkins的配置文件中也可以修改

查看ldap的cn-user用户讲解

[root@node1 jenkins]# ldapsearch -x -D "uid=user1,ou=jenkins,dc=wyg,dc=com" -w 123456
##找到cn-user,'displayName:: 546L5bCP5LqM'表示中文:王小二
# cn-user, jenkins, wyg.com
dn: cn=cn-user,ou=jenkins,dc=wyg,dc=com
sn: test1
userPassword:: MTIzNDU2
uidNumber: 1001
gidNumber: 500
homeDirectory: /home/users/test1
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: cn-user
uid: dl-user
ou: jenkins
displayName:: 546L5bCP5LqM
givenName: given-user

说明:
a:可以用这个登录ldap dn: cn=cn-user,ou=jenkins,dc=wyg,dc=com

b:ldap上显示的用户名 cn: cn-user

C:可选的,在jenkins上显示出来的,sn: test1;displayName:: 546L5bCP5LqM;givenName: given-user

可以在jenkins的配置文件修改(需要重启jenkins),这里用的是displayName,当然可以改成sn或者是givenName,那么ldap的用户里面也要有对应的属性,而且腰设置成“唯一”

[root@node1 jenkins]# cat config.xml|grep displayNameAttributeName
        <displayNameAttributeName>displayName</displayNameAttributeName>

也可以在jenkins的ldap配置中设置



d:登录jenkins的用户名 uid: dl-user

posted @ 2024-11-05 18:36  沾沾自喜的混子  阅读(5)  评论(0编辑  收藏  举报