日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker部署OpenLDAP

發布時間:2024/3/26 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker部署OpenLDAP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LDAP說明

什么是LDAP?

輕型目錄訪問協議(Lightweight Directory Access Protocol,LDAP):是一個開放的、中立的、業標準的應用協議,通過IP協議提供訪問控制和維護分布式信息的目錄信息,它是由目錄數據庫和一套訪問協議組成的系統,詳情請查看維基百科LDAP。

為什么用LDAP?

LDAP是開放的Internet標準,市場上或者開源社區的絕大多數軟件都支持LDAP協議。簡單來說,LDAP協議最大的好處就是能統一管理用戶密碼,新人報道創建一個用戶就能登錄公司的所有平臺(gitlab、jumpserver、監控等等),離職一鍵刪除即可。

LDAP相關概念

  • dn(Distinguished Name):區分名稱,LDAP中每個條目都有自己的dn,dn是該條目在整棵樹中的唯一標識,如同文件系統中,帶路徑的文件名就是DN。
  • rdn(Relative dn):相對區別名稱,好比linux中的相對路徑。
  • dc(Domain Component):域名組件。其格式是將完整的域名分成幾部分,如將example.com變成dc=example,dc=com。
  • uid(User ID):用戶ID,如merle.chang。
  • ou(Organization Unit):組織單元。
  • cn(Common Name):公共名稱。
  • sn(surname):姓氏。
  • c(Country):國家,如“CN”或者“US”。
  • o(Organization):組織名,如中華人民共和國公安局。

部署OpenLDAP

創建數據目錄

mkdir -pv /data/openldap/{data,conf} mkdir -pv /data/docker-compose/openldap

配置docker-compose文件

version: "3" services:openldap:container_name: openldapimage: osixia/openldap:1.5.0-amd64restart: alwaysports:- 389:389- 636:636volumes:- /etc/localtime:/etc/localtime- /etc/localtime:/etc/localtime- /data/openldap/data:/var/lib/ldap- /data/openldap/conf:/etc/ldap/slapd.denvironment:LDAP_TLS_VERIFY_CLIENT: neverLDAP_ORGANISATION: gitLDAP_DOMAIN: git.com.cnLDAP_ADMIN_PASSWORD: G1T@LdapLDAP_CONFIG_PASSWORD: G1T@Ldapnetworks:- openldapdeploy:resources:limits:memory: 4Greservations:memory: 1Gphpldapadmin:container_name: phpldapadminimage: osixia/phpldapadmin:0.9.0-amd64restart: alwayslinks:- openldapdepends_on:- openldapports:- 8099:80volumes:- /etc/localtime:/etc/localtimeenvironment:- PHPLDAPADMIN_LDAP_HOSTS=192.168.2.101- PHPLDAPADMIN_HTTPS=falsenetworks:- openldapdeploy:resources:limits:memory: 1Greservations:memory: 256Mnetworks:openldap:

LDAP_TLS_VERIFY_CLIENT: 客戶端認證,never代表不需要認證
LDAP_ORGANISATTON: 組織名稱
LDAP_DOMAIN: 域名
LDAP_APMIN_PASSWORD: 超級管理員密碼

-p 389:389 # LDAP端口
-p 636:636 # LDAP加密端口

PHPLDAPADMIN_HTTPS: 關閉https認證
PHPLDAPADMIN_LDAP_HOSTS: 需要連接的ldap服務器地址

啟動

docker-compose up -d

ldapadmin登錄

dn: cn=admin,dc=git,dc=com,dc=cn 口令: G1T@Ldap

常用操作命令

創建OU

創建頂級ou

cat > add_ou.ldif << EOF dn: ou=Group,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Groupdn: ou=People,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Peopledn: ou=cn,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: cn EOFldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" -f add_ou.ldif

創建自定義ou

cat > add_custom_ou.ldif << EOF dn: ou=Jenkins,ou=Group,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Jenkinsdn: ou=GitLab,ou=Group,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: GitLabdn: ou=Jira,ou=Group,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Jiradn: ou=Confluence,ou=Group,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Confluencedn: ou=Admin,ou=People,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Admindn: ou=Users,ou=People,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Users EOFldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" -f add_custom_ou.ldif

創建組

添加一個組, 在Jenkins的OU下

cat > group_jenkins.ldif << EOF dn: cn=users,ou=Jenkins,ou=Group,dc=git,dc=com,dc=cn objectClass: posixGroup objectClass: top cn: users gidNumber: 4002 EOFldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=example,dc=org" -w "G1T@Ldap" -f group_jenkins.ldif

注意dn的順序,否則報錯

創建賬戶

添加用戶小明, 位置在Users的OU下,并綁定到Jenkins的用戶組Users中

cat > xiaoming.ldif << EOF dn: cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cn objectClass: top objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: xiaoming sn: xiao uid: xiaoming userPassword: 123456 uidNumber: 44001 gidNumber: 4002 homeDirectory: /home/users/xiaoming mail: xiaoming@test.com.cn title: add user xiaoming EOFldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" -f xiaoming.ldif

為用戶設置密碼

ldappasswd -x -h 127.0.0.1 -p 389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" "cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cn"New password: .NrQ5pow

搜索

# 搜索全部 ldapsearch -x -H ldap://127.0.0.1:389 -b "dc=git,dc=com,dc=cn" -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" # 正則匹配 ldapsearch -x -H ldap://127.0.0.1:389 -b "dc=git,dc=com,dc=cn" -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" "cn=xiao*" ldapsearch -x -H ldap://127.0.0.1:389 -b "dc=git,dc=com,dc=cn" -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" "ou=*"

刪除

刪除用戶小明

ldapdelete -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" "cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cn"

刪除Jenkins的users組

ldapdelete -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" "cn=users,ou=Jenkins,ou=Group,dc=git,dc=com,dc=cn"

modify

添加用戶小紅

cat > xiaohong.ldif << EOF dn: cn=xiaohong,ou=Users,ou=People,dc=git,dc=com,dc=cn changetype: add objectClass: top objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: xiaohong sn: xiao uid: xiaohong userPassword: 123456 uidNumber: 44002 gidNumber: 4002 homeDirectory: /home/users/xiaohong mail: xiaohong@test.com.cn title: add user xiaohong EOFldapmodify -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" -f xiaohong.ldif

dn要寫在changetype上面

常用方法

  • 添加ou
dn: ou=Jira,ou=Group,dc=git,dc=com,dc=cnchangetype: addobjectClass: organizationalUnitobjectClass: topou: Jira
  • 添加組
dn: cn=jira-administrators,ou=Jira,ou=Groups,dc=git,dc=com,dc=cnchangetype: addobjectClass: groupOfUniqueNamesobjectClass: topcn: jira-administratorsuniqueMember: cn=admin,ou=Users,ou=People,dc=git,dc=com,dc=cn
  • 修改屬性
dn: cn=xiaoming,ou=Users,dc=git,dc=com,dc=cnchangetype: modifyreplace: titletitle: this is a new title
  • 添加屬性
dn: cn=jira-software-users,ou=Jira,ou=Group,dc=git,dc=com,dc=cnchangetype: addadd: descriptiondescription: this is a add description
  • 添加用戶到組
dn: cn=jira-software-users,ou=Jira,ou=Group,dc=git,dc=com,dc=cnchangetype: modifyadd: uniqueMemberuniqueMember: cn=xiaohong,ou=Users,dc=example,dc=org
  • modrdn
cat > modrdn.ldif << EOFdn: cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cnchangetype: modrdnnewrdn: cn=xiaoming2deleteoldrdn: 0newsuperior: ou=Users,ou=People,dc=git,dc=com,dc=cnEOFldapmodify -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w "G1T@Ldap" -f modrdn.ldif
  • 修改密碼
cat > changepwd.ldif << EOF dn: cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cn changetype: modify replace: userPassword userPassword: xiaomingpwd EOF ldapmodify -x -H ldap://127.0.0.1:389 -D "cn=xiaoming,ou=Users,ou=People,dc=git,dc=com,dc=cn" -w .NrQ5pow -f changepwd.ldif

LDAP用戶權限配置

創建管理ou

創建頂級manager,在manager下創建admins(管理),readonly(只讀),password_manager(密碼管理)等ou

cat > add_manager_ou.ldif << EOF dn: ou=Manager,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: Managerdn: ou=admins,ou=Manager,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: adminsdn: ou=readonly,ou=Manager,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: readonlydn: ou=password_manager,ou=Manager,dc=git,dc=com,dc=cn objectClass: organizationalUnit objectClass: top ou: password_manager EOFldapadd -x -D cn=admin,dc=git,dc=com,dc=cn -w 'G1T@Ldap' -f add_manager_ou.ldif

配置權限

  • 通過查看/etc/ldap/slapd.d/cn=config來確定olcDatabase配置文件, 比如我的是olcDatabase={1}mdb.ldif, 根據olcDatabase={1}mdb.ldif配置文件來確定dn位置, 我的是olcDatabase={1}mdb
  • 根據olcDatabase={1}mdb.ldif配置文件, 重新編寫訪問控制
  • cat > new-acl.ldif << EOF dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcAccess - add: olcAccess olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break olcAccess: {1}to attrs=userPassword,shadowLastChangeby self writeby dn="cn=admin,dc=git,dc=com,dc=cn" writeby dn.children="ou=admins,ou=Manager,dc=git,dc=com,dc=cn" read by dn.children="ou=password_manager,ou=Manager,dc=git,dc=com,dc=cn" writeby anonymous authby * none olcAccess: {2}to *by self readby dn="cn=admin,dc=git,dc=com,dc=cn" writeby dn.children="ou=admins,ou=Manager,dc=git,dc=com,dc=cn" writeby dn.children="ou=password_manager,ou=Manager,dc=git,dc=com,dc=cn" readby dn.children="ou=readonly,ou=Manager,dc=git,dc=com,dc=cn" readby * none EOFldapmodify -Y EXTERNAL -H ldapi:/// -f new-acl.ldif // 對密碼屬性訪問控制 olcAccess: {1}to attrs=userPassword,shadowLastChange // 對全局屬性訪問控制(密碼除外) olcAccess: {2}to *

    驗證

    分別在幾個管理ou下創建對應賬戶,然后訪問ldap,驗證權限,ldif配置文件示例

    cat > add_readOnly.ldif << EOF dn: cn=readuser,ou=readonly,ou=Manager,dc=git,dc=com,dc=cn objectClass: simpleSecurityObject objectClass: organizationalRole description: LDAP read only user cn: readuser userPassword: readuser123456 EOFldapadd -x -D cn=admin,dc=git,dc=com,dc=cn -w 'G1T@Ldap' -f add_readOnly.ldif

    Jira集成OpenLDAP

    OpenLDAP配置

    在Users的ou下創建用戶

    cat > jira-users.ldif << EOF dn: cn=admin,ou=Users,dc=git,dc=com,dc=cn changetype: add objectClass: posixAccount objectClass: top objectClass: inetOrgPerson objectClass: shadowAccount cn: admin sn: ADMIN uid: admin userPassword: 123456 uidNumber: 44000 gidNumber: 0 homeDirectory: /home/users/admin mail: admin@test.com.cn title: add user xiaohongdn: cn=xiaoming,ou=Users,dc=git,dc=com,dc=cn changetype: add objectClass: posixAccount objectClass: top objectClass: inetOrgPerson objectClass: shadowAccount cn: xiaoming sn: 小明 uid: xiaoming userPassword: 123456 uidNumber: 44001 gidNumber: 0 homeDirectory: /home/users/xiaoming mail: xiaoming@test.com.cn title: add user xiaomingdn: cn=xiaohong,ou=Users,dc=git,dc=com,dc=cn changetype: add objectClass: posixAccount objectClass: top objectClass: inetOrgPerson objectClass: shadowAccount cn: xiaohong sn: 小紅 uid: xiaohong userPassword: 123456 uidNumber: 44002 gidNumber: 0 homeDirectory: /home/users/xiaohong mail: xiaohong@test.com.cn title: add user xiaohong EOF ldapmodify -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w G1T@Ldap -f jira-users.ldif

    在Groups下創建Jira的ou, 在Jira的ou下創建分組

    cat > jira-groups.ldif << EOF ## 在Group下創建Jira的ou dn: ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: add objectClass: organizationalUnit objectClass: top ou: Jira## 創建Jira的用戶組并添加用戶到組中 dn: cn=jira-administrators,ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: add objectClass: groupOfUniqueNames objectClass: top cn: jira-administrators uniqueMember: cn=admin,ou=Users,dc=git,dc=com,dc=cndn: cn=jira-software-users,ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: add objectClass: groupOfUniqueNames objectClass: top cn: jira-software-users uniqueMember: cn=xiaoming,ou=Users,dc=git,dc=com,dc=cndn: cn=jira-software-users,ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: modify add: uniqueMember uniqueMember: cn=xiaohong,ou=Users,dc=git,dc=com,dc=cndn: cn=deployment,ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: add objectClass: groupOfUniqueNames objectClass: top cn: deployment uniqueMember: cn=xiaoming,ou=Users,dc=git,dc=com,dc=cndn: cn=deployment,ou=Jira,ou=Groups,dc=git,dc=com,dc=cn changetype: modify add: uniqueMember uniqueMember: cn=xiaohong,ou=Users,dc=git,dc=com,dc=cn EOF ldapmodify -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=git,dc=com,dc=cn" -w G1T@Ldap -f jira-groups.ldif

    Jira用戶目錄配置

    服務器設置 名稱: LDAP服務器 目錄類型: OpenLDAP 主機名: 192.168.2.101 端口: 389 用戶名: cn=admin,dc=git,dc=com,dc=cn 密碼: 123456LDAP設置 基本DN: dc=git,dc=com,dc=cn 附加用戶DN: ou=Users 附加組dn: ou=Jira,ou=GroupsLDAP權限: 勾選只讀用戶模式設置: 幾乎不用設置,核對屬性值是否與OpenLDAP中用戶屬性值是否一致即可組模式設置 注意組類型,Jira需要在OpenLDAP中創建unique name類型的組組成員模式: 默認

    GitLab集成OpenLDAP

    gitlab配置文件gitlab.rb示例

    gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in'] = false gitlab_rails['ldap_group_sync_worker_cron'] = "0 */2 * * * *" gitlab_rails['ldap_servers'] = { 'main' => {'label' => 'LDAP','host' => '3.1.101.38','port' => 389,'uid' => 'uid','encryption' => 'plain','verify_certificates' => false,'bind_dn' => 'cn=admin,dc=git,dc=com,dc=cn','password' => 'G1T@Ldap','timeout' => 30,'active_directory' => false,'allow_username_or_email_login' => false,'block_auto_created_users' => false,'base' => 'ou=People,dc=git,dc=com,dc=cn','user_filter' => 'memberOf=cn=credit-rebuild,ou=GitLab,ou=Group,dc=git,dc=com,dc=cn','attributes' => {'username' => ['cn'],'email' => ['mail',],'name' => 'sn','first_name' => 'givenName','last_name' => 'sn'},'lowercase_usernames' => false,# EE Only'group_base' => '','admin_group' => ','sync_ssh_keys' => false} } gitlab-ctl check-config gitlab-ctl reconfigure

    總結

    以上是生活随笔為你收集整理的Docker部署OpenLDAP的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。