关于ldap:freeipa-与jenkins的集成

背景:参照:Freeipa的简略搭建配置,实现一下与jenkins的简略集成,用户组与权限的简略配置! freeipa 与jenkins的集成先说一下实现目标与布局: jenkins 我的项目工作辨别以环境结尾qa-xxx是qa 服务器工作 develop-xxx为开发环境工作,当然了还能够有master-xxx master环境工作!这里次要是演示验证。仅演示develop qa两个实例工作! 对于用户 次要拿了三个测试 zhangpeng tanyuqiang huozhongaho(本人名字跟两个小伙伴的名字,常常拿来各种测试祸患了)。要实现A 用户zhangpeng 管理员 ,B用户tanyuqiang能够执行develop qa工作,C用户huozhonghao只能执行develop工作(工作的编辑增加新建先疏忽)对于受权必定还是jenkins Role-based Authorization Strategy插件,如果设置用户受权,每增加一个用户还要受权一次?freeipa尝试一下组的概念! freeipa创立用户~用户组freeipa创立用户组组的布局是筹备这样的:创立三个用户组jenkins jenkins-qa jenkins-develop:freeipa 控制台页面用户组增加:将jenkins-qa jenkins-develop组退出jenkins组,套娃一下: freeipa创立用户,并将用户退出用户组:创立zhangpeng tanyuqiang huozhonghao三个用户: jenkins用户组中 将zhangpeng用户设置为jenkins member managers:将tanyuqiang huozhonghao 退出jenkins-develop组:将tanyuqiang用户退出jenkins-qa组: jenkins集成freeipa装置启动jenkins对于jenkins的装置我是间接本地启动了一个容器: mkdir -p /data/jenkins/jenkins_homedocker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai'" --privileged=true --restart=always -v /data/devops5/jenkins_home:/var/jenkins_home jenkins/jenkins:2.387.1-lts-jdk11 docker logs -f jenkins chmod 777 -R /data/jenkins/jenkins_home/docker restart jenkinsdocker logs -f jenkinsweb登陆jenkins服务器输出日志中的bf4052ecfdae48edbff5xxx 或者在 /var/jenkins_home/secrets/initialAdminPassword中找到进入插件装置页面:为了节省时间只装置了Localization: Chinese (Simplified) Pipeline Role-based Authorization Strategy LDAP插件期待ing初始化了admin用户 保留实现:就绪,开始应用jenkins: ...

April 3, 2023 · 1 min · jiezi

关于ldap:Freeipa的简单搭建配置

背景:想把账户对立治理起来,jenkins,gitlab,jumpserver甚至kibana,kubernetes等等。原本搭建过openldap。昨天小伙伴强烈推荐我用一下freeipa......又进入了盲区,没有听过的货色都比拟好奇,浅浅的体验一下!freeipa服务就不想部署在kubernetes中了 也筹备docker形式启动部署。毕竟这样不便降级还原。kubernetes中部署了还要额定映射端口啥的麻烦......偷懒一下! Freeipa装置注: 操作系统rockylinux9.0,以docker-compose形式启动freeipa!。主机内网ip 10.0.4.52. 装置docker docker-composedocker装置增加docker-ce国内源,这里应用了阿里云的源,装置docker-ce: dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repodnf -y install docker-ce docker-ce-cli containerd.io 装置docker-compose拜访github仓库:https://github.com/docker/compose/releases/,抉择对应版本针对零碎的版本进行下载(会很慢,能够迷信上网,或者跟我一样,提前下载了放在对象存储下面!) curl "https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version 配置docker镜像减速,设置docker服务开机启动:能够跟据本人的阿里亚账户的容器镜像服务-镜像攻打-镜像加速器,配置镜像减速: sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://7zk8hbh7.mirror.aliyuncs.com"], "features": { "buildkit": true }, "experimental": true, "cgroup-parent": "docker.slice", "exec-opts": ["native.cgroupdriver=systemd"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker注:registry-mirrors上面的忘了那里复制来的了 就间接带着了! docker infodocker -v docker-compose 搭建freeipa服务:创立数据目录,编写docker-compose.yaml文件偷懒了docker-compose.yaml寄存在了/data/freeipa目录。freeipa数据目录/data/free-ipa/data /data/free-ipa/data/logs: mkdir -p /data/free-ipa/data mkdir -p /data/free-ipa/logsdocker-compose.yaml如下(小伙伴的文件间接拿来用的): version: "3.3"services: freeipa: image: freeipa/freeipa-server:almalinux-8-4.9.8 container_name: xxxx.xxxx.com domainname: xxxx.xxxx.com container_name: freeipa_idc ports: - "80:80/tcp" - "443:443/tcp" # DNS - "53:53/tcp" - "53:53/udp" # LDAP(S) - "389:389/tcp" - "636:636/tcp" # Kerberos - "88:88/tcp" - "88:88/udp" - "464:464/tcp" - "464:464/udp" # NTP - "123:123/udp" dns: - 127.0.0.1 - 183.60.82.98 - 183.60.83.19 - 114.114.114.114 tty: true stdin_open: true environment: IPA_SERVER_HOSTNAME: xxxx.xxxx.com IPA_SERVER_IP: 10.0.4.52 TZ: "Asia/Shanghai" command: - --domain=xxxx.com - --realm=xxx.com - --admin-password=xxxx #freeapi的admin管理员账号 - --http-pin=xxxx - --dirsrv-pin=xxxx - --ds-password=xxxx - --no-dnssec-validation - --no-host-dns - --setup-dns - --auto-forwarders - --allow-zone-overlap - --unattended # 主动无人工干预装置 cap_add: - SYS_TIME - NET_ADMIN restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro - /data/free-ipa/data:/data - /data/free-ipa/logs:/var/logs sysctls: - net.ipv6.conf.all.disable_ipv6=0 - net.ipv6.conf.lo.disable_ipv6=0 security_opt: - "seccomp:unconfined" labels: - idc-freeipa extra_hosts: - "xxxx.xxxx.com:10.0.4.52 "就默认批改了一下 域名 ip dns 明码 domain realm 等xxx局部! ...

April 3, 2023 · 3 min · jiezi

关于ldap:gitlab与ldap集成

背景:紧跟gitlab 15.8 on rocky 8,筹备将gitlab与ldap买通,后续jenkins也是。不便用户的对立治理,当初的用户治理都是独自的,用户的到职和治理很是麻烦,正好借这次条例流程尝试全副买通,对立治理一下!对于ldap的搭建能够参考:Kuberneters 搭建openLDAP gitlab ldap集成gitlab开启并配置ldap编辑gitlab.rb配置文件关上编辑gitlab.rb配置文件: vi /etc/gitlab/gitlab.rb 按住ctrl+v进入VISUAL BLOCK模式 选中要正文的行的# ,按d键删除正文符(secondaryx相干的其实不须要去掉......具体参照上面代码块配置!)gitlab_rails['ldap_enabled'] = true 开启ldap gitlab_rails['ldap_enabled'] = true# gitlab_rails['prevent_ldap_sign_in'] = falsegitlab_rails['ldap_servers'] = YAML.load <<-'EOS'EOS 为ldap相干配置,请参照集体ldap服务器进行相干配置。具体参数能够参照官网文档https://docs.gitlab.com/ee/administration/auth/ldap/ 注:图只截取了一部分,具体的去看文档! ###! **remember to close this block with 'EOS' below** gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' ###能够自定义gitlab登陆况显示的名词 host: '10.0.4.25' ###ldap服务器地址 port: xxxx ###ldap端口(我是k8s中搭建的故不是默认的389) uid: 'cn' ###ldap登陆的用户名 bind_dn: 'cn=admin,dc=xxxx,dc=com' #绑定的用户的残缺 DN password: 'xxxxxxxx' ##绑定用户的明码 encryption: 'plain' # "start_tls" or "simple_tls" or "plain" verify_certificates: false smartcard_auth: false active_directory: flase allow_username_or_email_login: false ###邮箱用户是否能够登陆 lowercase_usernames: false block_auto_created_users: false ####不容许用户注册 base: 'ou=devops,dc=xxxx,dc=com' ###用户的搜寻域 user_filter: '' ## EE only# group_base: ''# admin_group: ''# sync_ssh_keys: false## secondary: # 'secondary' is the GitLab 'provider ID' of second LDAP server# label: 'LDAP'# host: '_your_ldap_server'# port: 389# uid: 'sAMAccountName'# bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'# password: '_the_password_of_the_bind_user'# encryption: 'plain' # "start_tls" or "simple_tls" or "plain"# verify_certificates: true# smartcard_auth: false# active_directory: true# allow_username_or_email_login: false# lowercase_usernames: false# block_auto_created_users: false# base: ''# user_filter: ''# ## EE only# group_base: ''# admin_group: ''# sync_ssh_keys: falseEOS特别强调EOF要去掉正文 ...

March 3, 2023 · 2 min · jiezi

关于ldap:关于openLADP的进一步了解Id与DnAttribute

前言:本周次要对gitlabWebhook转github的我的项目扫了开头,并没有遇到什么问题,所以就上周LDAP中的疑难进行了进一步的理解。承接上文中的问题:@Id和@DnAttributeID之间是什么关系。为什么在ldapAdmin中没有找到@ID对应的字段。 @Data@Entry(base = "", objectClasses="inetOrgPerson")public class Person { /** * 此字段不能少 */ @Id private Name id; @DnAttribute(value = "uid", index = 3) private String uid; @DnAttribute(value = "title", index = 4) private String title; @Attribute(name = "cn") private String commonName; @Attribute(name = "sn") private String myUerName; private String userPassword;}就拿下面这个实体来说,咱们能够用如下办法查问它外部的属性: List<Person> list = ldapTemplate.search("", filter, new AttributesMapper() { @SneakyThrows @Override public Object mapFromAttributes(Attributes attributes) throws NamingException { NamingEnumeration<? extends Attribute> att = attributes.getAll(); while (att.hasMore()) { Attribute a = att.next(); System.out.println(a.getID() + "=" + a.get()); }}然而构造中并没有打印出id这一项,然而如果没有这一项在发明实体时会报如下谬误。报的很间接,就是短少ID,那么咱们就要去ldapTemplate.creat函数外面去打点,看看报错是怎么来的。测试后发现报错呈现在这里:那么咱们再把ID属性增加完再来看这里。因为咱们生成ID时没有给ID赋值,他会主动生成ID,而他主动生成的ID就是由咱们在试题中申明的 @DnAttribute 注解来的,依据所给的优先级进行排序生成。 ...

January 18, 2023 · 1 min · jiezi

关于ldap:利用Docker部署管理LDAP及其初次使用

一、什么是LDAPLDAP是轻量级目录拜访协定的简称。目录是一个为查问、浏览和搜寻而优化的数据库,它成树状构造组织数据,相似文件目录一样。 二、为什么要用LDAP咱们利用LDAP要达到的最终目标就是实现对立登录,比方咱们有多个零碎,每个零碎都是独立运行,然而咱们想要为了方便管理想要把这些用户全存在一起并且这些零碎登录时对立向这个库进行查问。这时候咱们就用到了LDAP,那么 三、用docker部署LDAP和LDAP可视化界面1、装置openldap docker run \ -d \ -p 389:389 \ -p 636:636 \ -v /usr/local/ldap:/usr/local/ldap \ -v /data/openldap/ldap:/var/lib/ldap \ -v /data/openldap/slapd.d:/etc/ldap/slapd.d \ --env LDAP_ORGANISATION="imysh" \ --env LDAP_DOMAIN="imysh.com" \ --env LDAP_ADMIN_PASSWORD="123456" \ --name openldap \ --hostname openldap-host\ --network bridge \ osixia/openldap其中 -p 389:389 \ TCP/IP拜访端口-p 636:636 \ SSL连贯端口。–network bridge 连贯默认的bridge网络(docker0)–hostname openldap-host 设置容器主机名称为 openldap-host–env LDAP_ORGANISATION=“imysh” 配置LDAP组织名称–env LDAP_DOMAIN=“imysh.com” 配置LDAP域名–env LDAP_ADMIN_PASSWORD=“123456” 配置LDAP明码默认登录用户名:admin 2、装置可视化界面phpidapadmin docker run \ -p 8081:80 \ --privileged \ --name phpldapadmin \ --env PHPLDAPADMIN_HTTPS=false \ --env PHPLDAPADMIN_LDAP_HOSTS=192.168.x.xxx \ --detach osixia/phpldapadmin其中 PHPLDAPADMIN_LDAP_HOSTS 为配置openLDAP的IP或域名,咱们是在本地起的,所以填写咱们本机IP即可。查问本机IP:ifconfig | grep "inet" ...

January 10, 2023 · 2 min · jiezi

关于ldap:centos7-安装ldap

[root@logstash-1 tmp]# yum install -y openldap openldap-* [root@logstash-1 tmp]# rpm -qa | grep ldapopenldap-2.4.44-25.el7_9.x86_64openldap-servers-sql-2.4.44-25.el7_9.x86_64openldap-devel-2.4.44-25.el7_9.x86_64openldap-clients-2.4.44-25.el7_9.x86_64openldap-servers-2.4.44-25.el7_9.x86_64[root@logstash-1 tmp]# systemctl start slapd[root@logstash-1 tmp]# systemctl status slapd● slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled) Active: active (running) since 三 2022-03-23 12:10:13 CST; 16s ago Docs: man:slapd man:slapd-config man:slapd-hdb man:slapd-mdb file:///usr/share/doc/openldap-servers/guide.html Process: 32127 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) Process: 32112 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS) Main PID: 32149 (slapd) Tasks: 2 Memory: 10.6M CGroup: /system.slice/slapd.service └─32149 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///3月 23 12:10:12 logstash-1 systemd[1]: Starting OpenLDAP Server Daemon...3月 23 12:10:12 logstash-1 runuser[32115]: pam_unix(runuser:session): session opened for user ldap by (uid=0)3月 23 12:10:12 logstash-1 runuser[32115]: pam_unix(runuser:session): session closed for user ldap3月 23 12:10:12 logstash-1 slapd[32127]: @(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $ mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd3月 23 12:10:13 logstash-1 slapd[32127]: tlsmc_get_pin: INFO: Please note the extracted key file will not be protected with a PIN any more, however it will be still p...ermissions.3月 23 12:10:13 logstash-1 slapd[32149]: hdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2). Expect poor performance for suffix "dc=my-domain,dc=com".3月 23 12:10:13 logstash-1 slapd[32149]: slapd starting3月 23 12:10:13 logstash-1 systemd[1]: Started OpenLDAP Server Daemon.Hint: Some lines were ellipsized, use -l to show in full.[root@logstash-1 tmp]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/alock __db.001 __db.002 __db.003 dn2id.bdb id2entry.bdb log.0000000001 [root@logstash-1 tmp]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/alock __db.001 __db.002 __db.003 dn2id.bdb id2entry.bdb log.0000000001 [root@logstash-1 tmp]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG[root@logstash-1 tmp]# chown ldap:ldap /var/lib/ldap/DB_CONFIG[root@logstash-1 tmp]# systemctl restart slapd[root@logstash-1 tmp]# slappasswdNew password: Re-enter new password: {SSHA}xxJiWxxxxxxx[root@logstash-1 ~]# vim rootpwd.ldif[root@logstash-1 ~]# cat rootpwd.ldifdn: olcDatabase={0}config,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}xxJiWxxxxxxxxxx[root@logstash-1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={0}config,cn=config"[root@logstash-1 ~]# echo $?0[root@logstash-1 ~]# ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; doneSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=collective,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=corba,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=core,cn=schema,cn=config"ldap_add: Other (e.g., implementation specific) error (80) additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.2"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=cosine,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=duaconf,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=dyngroup,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=inetorgperson,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=java,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=misc,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=nis,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=openldap,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=pmi,cn=schema,cn=config"SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=ppolicy,cn=schema,cn=config"[root@logstash-1 ~]# slappasswdNew password: Re-enter new password: {SSHA}t/1pi/xNTx4Yh8Gxxxxxxx[root@logstash-1 ~]# vi domain.ldif[root@logstash-1 ~]# cat domain.ldifdn: olcDatabase={0}config,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}xxJiWLtr00An3af5iOE9xKgTjdB0TGb7[root@logstash-1 ~]# cat domain.ldifdn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=test,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffixolcSuffix: dc=test,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDNolcRootDN: cn=Manager,dc=test,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}t/1pi/xNTx4Yh8GOM7kJR9K4buSF4jOgdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcAccessolcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=test,dc=com" write by anonymous auth by self write by * noneolcAccess: {1}to dn.base="" by * readolcAccess: {2}to * by dn="cn=Manager,dc=test,dc=com" write by * read[root@logstash-1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={1}monitor,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"[root@logstash-1 ~]# vim basedomain.ldif[root@logstash-1 ~]# ldapadd -x -D cn=Manager,dc=test,dc=com -W -f basedomain.ldifEnter LDAP Password: adding new entry "dc=test,dc=com"adding new entry "cn=Manager,dc=test,dc=com"adding new entry "ou=People,dc=test,dc=com"adding new entry "ou=Group,dc=test,dc=com"[root@logstash-1 ~]# ldapsearch -LLL -W -x -D "cn=Manager,dc=test,dc=com" -H ldap://localhost -b "dc=test,dc=com"Enter LDAP Password: dn: dc=test,dc=comobjectClass: topobjectClass: dcObjectobjectClass: organizationo: test comdc: testdn: cn=Manager,dc=test,dc=comobjectClass: organizationalRolecn: Managerdescription: Directory Managerdn: ou=People,dc=test,dc=comobjectClass: organizationalUnitou: Peopledn: ou=Group,dc=test,dc=comobjectClass: organizationalUnitou: Group[root@logstash-1 ~]# ...

March 23, 2022 · 3 min · jiezi

关于ldap:LDAP-介绍

LDAP 是轻量目录拜访协定,英文全称是LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL,个别都简称为 LDAP。 读写效率十分高对读操作进行优化的一种数据库,在读写比例大于7比1的状况下,LDAP会体现出极高的性能。这个个性正适宜了身份认证的须要。 凋谢的标准协议不同于SQL数据库,LDAP的客户端是跨平台的,并且对简直所有的程序语言都有规范的API接口。 即便是扭转了LDAP数据库产品的提供厂商,开发人员也不必放心须要批改程序能力适应新的数据库产品。这个劣势是应用SQL语言进行查问的关系型数据库难以达到的。 强认证形式能够达到很高的安全级别。 在国际化方面,LDAP应用了UTF-8编码来存储各种语言的字符。 OpenLDAP开源实现OpenLDAP还蕴含了很多有创造性的新性能,能满足大多数使用者的要求。 OpenLDAP是其中最轻便且耗费系统资源起码的一个。 OpenLDAP是开源软件,近年国内很多公司开发的LDAP产品都是基于OpenLDAP开发的。 灵便增加数据类型LDAP是依据schema的内容定义各种属性之间的从属关系及匹配模式的。 例如在关系型数据库中如果要为用户减少一个属性,就要在用户表中减少一个字段,在领有宏大数量用户的状况下是十分困难的,须要扭转表构造。 但LDAP只须要在schema中退出新的属性,不会因为用户的属性增多而影响查问性能。 数据存储是树结构整棵树的任何一个分支都能够独自放在一个服务器中进行分布式治理,不仅有利于做服务器的负载平衡,还不便了跨地区的服务器部署。 这个劣势在查问负载大或企业在不同地区都设有分公司的时候体现尤为显著。 LDAP 的特点LDAP 是一种网络协议而不是数据库,而且LDAP的目录不是关系型的,没有RDBMS那么简单,LDAP不反对数据库的Transaction机制,纯正的无状态、申请-响应的工作模式。LDAP不能存储BLOB,LDAP的读写操作是非对称的,读十分不便,写比拟麻烦,LDAP反对简单的查问过滤器(filter),能够实现很多相似数据库的查问性能。LDAP应用树状构造,靠近于公司组织构造、文件目录构造、域名构造等咱们耳熟能详的货色。 LDAP应用简略、接口标准,并反对SSL拜访。LDAP与NIS相比1.LDAP是规范的、跨平台的,在Windows下也能反对。2.LDAP反对非匿名的拜访,而且有比较复杂的访问控制机制(如ACL),安全性仿佛更好一些。3.LDAP反对很多简单的查问形式。4.LDAP的用处较NIS更为宽泛,各种服务都能够和LDAP挂钩。 LDAP 的次要利用场景.网络服务:DNS服务2.对立认证服务:3.Linux PAM (ssh, login, cvs. . . )4.Apache访问控制5.各种服务登录(ftpd, php based, perl based, python based. . . )6.个人信息类,如地址簿7.服务器信息,如帐号治理、邮件服务等 作为个别的公司来说,LDAP 很多时候被用来权限认证,软件和外部零碎的用户治理和认证。 构想下,你有一个软件公司,公司外面有超过上千的员工,你们公司可能会用到各种软件,比如说 JIRA,Wiki,代码库,考勤零碎等等。 LDAP 就充当了受权的这个角色,你可用在 LDAP 中对用户进行受权,分组,这样你的用户就会具备不通过软件平台的拜访权限了。 当初公司的流动性也十分强,每天都会有入职的也会有到职的,对每一个人都要进行受权,撤销权限,跨域治理等等与用户无关的操作,在大一点的公司这个几乎就是劫难。 LDAP 可能很好的解决这个问题。 Spring Data 提供了基于 LDAP 协定拜访的 API,须要留神的是,在开发的时候须要将 LDAP 认为是一个数据库,只是与一般数据库不同的是,LDAP 应用的是 LDAP 的协定。 否则,在用户分组查问,等基于 Spring Data LDAP 的编程过程中,你可能会感到十分困惑。 ...

September 29, 2020 · 1 min · jiezi

为OKDOpenshift集群配置OpenLDAP认证

前言如同Linux操作系统安装完成后,管理员需为应用创建不同的用户,那么,K8S/OKD/Openshift集群同样也需如此,而在OKD/Openshift集群里,我们可集成OpenLDAP目录系统,方法如下所示。 OpenLDAP安装本文使用helm安装openldap,首先将chars下载下来以方便查看: git clone https://github.com/helm/charts可选。镜像可先推送到私有仓库(PS:测试发现latest镜像有问题): docker pull osixia/openldap:1.2.1docker tag docker.io/osixia/openldap:1.2.1 okd-lr.zyl.io:5001/osixia/openldap:1.2.1docker push okd-lr.zyl.io:5001/osixia/openldap:1.2.1镜像以root用户运行(gosudo切换),赋权: oc new-project auth-openshiftoc adm policy add-scc-to-user anyuid -z default对openldap char参数做定制: cd charts/stable/openldapcp values.yaml values_cs.yamlvi values_cs.yaml...env: # LDAP将创建dc=zyl,dc=io域,组织名称为Zyl Inc. LDAP_ORGANISATION: "Zyl Inc." LDAP_DOMAIN: "zyl.io"...# Ldap域管理员(cn=admin,dc=zyl,dc=io)及config管理员(cn=admin,cn=config)密码adminPassword: adminconfigPassword: config# 持久化存储,本例使用已创建好的glusterfs存储系统,其支持动态提供。persistence: enabled: true storageClass: "glusterfs-app" accessMode: ReadWriteOnce size: 8Gi执行helm命令安装: helm install --name openldap -f values_cs.yaml .Ldap启动后,创建了域dc=zyl,dc=io及hdb管理员账户cn=admin,dc=zyl,dc=io。如下所示,在此域下创建用户与组信息: % oc rsh deploy/openldap% cat > users.ldif <<EOFdn: ou=People,dc=zyl,dc=ioou: PeopleobjectClass: topobjectClass: organizationalUnitdn: ou=Group,dc=zyl,dc=ioou: GroupobjectClass: topobjectClass: organizationalUnitdn: uid=zyl,ou=People,dc=zyl,dc=iouid: zylcn: zylobjectClass: accountobjectClass: posixAccountobjectClass: topobjectClass: shadowAccountuserPassword: changemeloginShell: /bin/bashuidNumber: 5000gidNumber: 5000homeDirectory: /home/zyldn: uid=admin,ou=People,dc=zyl,dc=iouid: admincn: adminobjectClass: accountobjectClass: posixAccountobjectClass: topobjectClass: shadowAccountuserPassword: changemeloginShell: /bin/bashuidNumber: 5001gidNumber: 5001homeDirectory: /home/admindn: cn=zyl,ou=Group,dc=zyl,dc=iocn: zylobjectClass: topobjectClass: posixGroupgidNumber: 5000memberUid: zyldn: cn=admin,ou=Group,dc=zyl,dc=iocn: adminobjectClass: topobjectClass: posixGroupgidNumber: 5001memberUid: admindn: cn=openshift_user,ou=Group,dc=zyl,dc=iocn: openshift_userobjectClass: topobjectClass: posixGroupgidNumber: 6000memberUid: zyldn: cn=openshift_admin,ou=Group,dc=zyl,dc=iocn: openshift_adminobjectClass: topobjectClass: posixGroupgidNumber: 6001memberUid: adminEOF% ldapadd -x -w $LDAP_ADMIN_PASSWORD -D "cn=admin,dc=zyl,dc=io" -H ldapi:/// -f users.ldif% ldapsearch -x -D "cn=admin,dc=zyl,dc=io" -w $LDAP_ADMIN_PASSWORD \ -b dc=zyl,dc=io# 可使用config管理员检查ldap config配置% ldapsearch -x -D "cn=admin,cn=config" -w $LDAP_CONFIG_PASSWORD \ -b cn=config "olcDatabase=config"配置Master使用Ldap认证OKD初始安装时若未配置openshift_master_identity_providers,则OKD默认使用如下认证,此认证方式允许任何用户登录集群。 ...

June 28, 2019 · 2 min · jiezi