本文介紹OpenLDAP的配置和常見用法。
OpenLDAP基礎介紹
簡介
OpenLDAP是LDAP(輕型目錄訪問協議)的開源實現,常用于管理企業內的用戶、計算機、網絡等資源。由于被廣泛使用,OpenLDAP也常被簡稱為LDAP。
基于網絡端點能力,您無需開放公網端口即可實現LDAP的數據同步和委托認證。
綁定OpenLDAP
在身份提供方中,單擊綁定OpenLDAP,即可開始綁定OpenLDAP流程。
第一步:連接OpenLDAP
在第一步中,您需要在IDaaS中填寫以下信息:
顯示名稱:用戶在登錄、使用IDaaS時可能看到。
網絡端點:如果您希望只有IDaaS可以請求該LDAP,請在服務器中配置IP白名單。共享端點使用共享的、固定的公網出口IP,專屬端點使用專屬的、自定義的私網出口IP和公網出口IP。通過專屬端點,IDaaS可以通過私網訪問您的阿里云VPC,從而免開公網端口訪問您的LDAP,詳見:網絡端點。
服務器地址:LDAP所在的服務器地址,LDAP默認使用389端口,如127.0.0.1:389。開啟ldaps或StartTLS時一般使用636端口。
ldaps/StartTLS:開啟后可以大幅提高連接的安全性,推薦開啟。請在LDAP安全性配置中了解如何開啟。
管理員賬戶:IDaaS使用該LDAP管理員賬戶讀取LDAP信息來完成數據同步或委托認證,該賬戶需要至少擁有讀取權限,需使用DN格式(cn=admin,ou=技術部,dc=example,dc=com)。
管理員密碼:該賬戶的登錄密碼。
第二步:選擇場景
在第二步中,選擇希望和LDAP實現的場景能力。
能力說明
同步方向:同步來源所選的LDAP的用戶/組織數據將會導入到IDaaS的這個節點之下。來源節點需要填寫LDAP節點的DN,LDAP根節點的DN 一般為dc=example,dc=com(即您的域)。
目前僅支持入方向LDAP的同步,暫不支持出方向。
定時校驗:由于LDAP不支持查詢增量數據,IDaaS將于每日凌晨自動全量同步LDAP來源節點下的全量數據。
您可以在字段映射中設置映射標識,使用IDaaS賬戶的某個字段(如手機號)與LDAP用戶的某個字段(如手機號)進行匹配,如果匹配成功,將綁定并覆蓋更新;否則將創建IDaaS賬戶。
如果需要及時同步數據,請手動觸發全量同步。
IDaaS內置了同步保護能力, 當30個以上的賬戶或10個以上的組織需要被刪除時,自動取消同步任務,以防止數據被誤刪除。建議根據企業規模調整同步保護設置。
如果單條賬戶數據無法導入,不影響其他數據導入。
失敗信息可在同步日志中查看。
委托認證:用戶可以使用LDAP用戶/密碼登錄到IDaaS,
自動更新密碼:用戶通過LDAP委托認證到IDaaS時,如果IDaaS賬戶的密碼為空,則更新為LDAP賬戶的密碼。LDAP密碼需滿足IDaaS密碼策略的要求,否則將無法自動更新。
高級配置
用戶/組織
ObjectClass
:通過ObjectClass
可以定義哪種類型的對象是用戶/組織,例如將查詢結果中ObjectClass=user
的對象視作用戶。
LDAP有靈活的自定義能力,如果您自定義了用戶/組織的ObjectClass
,請確保ObjectClass
的一致,以免同步到IDaaS
的數據不符合您的預期。
用戶登錄標識:用戶在使用LDAP委托認證登錄IDaaS時,IDaaS將根據這些屬性去LDAP中查詢用戶并匹配密碼,密碼正確則允許用戶登錄IDaaS。可以使用半角逗號對多個屬性進行分割,此時為或關系,即可以使用任一屬性登錄。請確保多個屬性對應同一個LDAP用戶,否則將無法登錄。
用戶
filter
過濾:如果您需要篩選分散在不同組織中的部分用戶同步到IDaaS,您可以自定義filter
語句,只有滿足條件的用戶才可同步到IDaaS。filter
語句默認包含且關系的ObjectClass
條件,您可以單擊查看詳情查看完整的語句。更多注意事項和常見用法請查看filter過濾。
第三步:字段映射
如果您在IDaaS中已存在存量數據,需要LDAP用戶/組織和IDaaS賬戶/組織綁定,或者希望使用LDAP中用戶的某些字段數據作為IDaaS賬戶的數據,例如將LDAP用戶的手機號作為IDaaS賬戶的賬戶名,則需要在第三步配置字段映射。如需使用映射標識能力,需手動單擊啟用,如下圖的手機字段。
更多字段映射的說明請查看文檔字段映射。
LDAP安全性配置
默認情況下,LDAP在傳輸數據時不加密且不受保護,存在明文數據被竊取的風險。使用ldaps或StartTLS可以有效提高數據傳輸的安全性。在LDAP中配置證書后,即可在IDaaS中使用ldaps或StartTLS,強烈建議您開啟。
在配置完證書后,您可以在IDaaS中一鍵獲取證書指紋,建立IDaaS對LDAP證書的信任關系,降低偽造證書的風險。
LDAP個性化配置
ObjectClass
LDAP中的ObjectClass
是attribute的集合,每個對象都必須擁有ObjectClass
。可以通過ObjectClass
定義一個對象是用戶、組織或計算機等,例如針對下圖的對象,在IDaaS中設置用戶ObjectClass
為“inetOrgPerson,posixAccount,top”時,IDaaS即會將對象視作為用戶。在LDAP中編輯對象時即可看到ObjectClass
。
LDAP有靈活的自定義能力,如果您自定義了用戶/組織的ObjectClass
,請確保ObjectClass
的一致,以免同步到IDaaS的數據不符合您的預期。
登錄標識
用戶在使用LDAP委托認證登錄IDaaS時,IDaaS將根據這些屬性去LDAP中查詢用戶并匹配密碼,密碼正確則允許用戶登錄IDaaS。
一般可以使用uid
、手機號、郵箱、工號等屬性用于登錄,如有需要可在創建時或委托認證中定義。如果使用多個屬性,請確保屬性的唯一并對應同一個LDAP用戶,否則用戶將無法使用委托認證。
Filter過濾
修改ObjectClass
和filter
將影響LDAP的過濾條件,在執行全量同步時將刪除不符合過濾條件的IDaaS賬戶和組織。建議在修改前調整同步保護限額,并充分測試過濾結果是否符合預期(例如使用另一個 IDaaS實例進行測試)。
基礎介紹
如果您需要篩選分散在不同組織中的部分用戶同步到IDaaS,您可以自定義filter
語句,只有滿足條件的用戶才可同步到IDaaS。filter
語句默認包含且關系的ObjectClass
條件,您可以單擊查看詳情查看完整的語句。
您可在LDAP Admin工具中輸入filter
語句,檢查過濾后的結果。
以下是LDAP Filter常用的語法和語句。
常用語法
運算符 | 含義 | 示例 |
= | 相等 | (cn=Alice) |
>= | 大于等于 | (pwdLastSet>=1319563845000000000) |
<= | 小于等于 | (employeeNumber<=1000) |
& | 且關系,必須滿足全部條件 | (&(cn=CN*)(title=RD)) |
| | 或關系,必須滿足任一條件 | (|(cn=Test*)(cn=Admin*)) |
! | 非關系,必須不滿足全部條件 | (!(cn=Test*)(cn=Admin*)) |
常用語句
場景 | 示例 |
用戶名以“CN”開頭 | (cn=CN*) |
指定郵箱的用戶 | (mail=alice@example.com) |
LDAP同步配置
獲取Base DN
Base DN是LDAP中某個節點的路徑標識,IDaaS只會在該節點下執行查詢和數據同步等操作。您可以在同步方向中設置來源節點的Base DN。
DN的格式為:ou=某組織,dc=example,dc=com,根節點的DN一般為dc=example,dc=com(即您的域)。您也可以在LDAP中直接查看節點的DN,如下圖所示:
另外,當節點的路徑有變化時,節點的Base DN也會有變化,為避免節點路徑調整導致LDAP數據同步出錯,您在IDaaS中配置同步來源節點的Base DN時,IDaaS也會將該節點的ObjectGuid
作為節點指紋,當節點的Base DN有變動導致和節點指紋不匹配時,將阻斷數據同步行為。重新配置來源節點后即可正常同步。
定時校驗
由于LDAP不支持查詢增量數據,IDaaS將于每日凌晨自動全量同步LDAP來源節點下的全量數據。如果需要及時同步數據,請手動觸發全量同步。
IDaaS內置了同步保護能力, 當30個以上的賬戶或10個以上的組織需要被刪除時,自動取消同步任務,以防止數據被誤刪除。建議根據企業規模調整同步保護設置。