如何使用Choerodon LDAP以及配置定時任務

Choerodon豬齒魚發表於2019-05-14

作者:李楷文

Choerodon作為多雲管理平臺,可以通過LDAP的方式對接企業已有的應用,通過同步使用者到Choerodon平臺,使企業使用者無需註冊就可使用LDAP的賬戶和密碼登入到Choerodon平臺,實現 DevOps 開發運維一體化和敏捷管理的等目標,極大地降低了企業使用者遷移負擔。

本文將從LDAP的概念,如何使用Choerodon LDAP以及配置定時任務三個方面進行介紹。

如何使用Choerodon LDAP以及配置定時任務

什麼是LDAP

LDAP是輕量級目錄訪問協議(Lightweight Directory Access Protocol)的縮寫,是一個開放的,中立的,工業標準的應用協議,用於與目錄服務進行互動。LDAP有許多種實現,比如Open LDAP和微軟的Active Directory等,類似於關係型資料庫的多種不同的實現,如oracle和mysql等。

LDAP基於TCP/IP協議,使用Client/Server架構,允許客戶端在目錄伺服器中執行各種操作,包括儲存和檢索資料,搜尋與給定標準集匹配的資料,對客戶端進行身份驗證等。LDAP的標準TCP埠對於未加密的通訊是389,對於通過TLS加密的通道的LDAP是636,這裡可以類比HTTP協議預設埠為80,HTTPS協議預設埠為443。

LDAP目錄使用有層次的、樹形結構儲存資料,具有優異的查詢,瀏覽和搜尋效能,但寫入效能差,沒有事務處理和回滾等功能,不適合頻繁修改資料。通常用於儲存公司員工資訊,使用者使用同一個賬戶和密碼就可以登入到多個不同的服務,也可以儲存公用證書和安全金鑰,公司物理裝置資訊等。

基本概念

Directory Servers

目錄伺服器是一種儲存樹形條目資訊的網路資料庫,與關係型資料庫儲存行和列的關係資訊不同,可以被認為一種NoSQL資料庫。

Entries

LDAP entry(LDAP條目)是有關實體的資訊集合,每個條目由下面三部分組成:DN,屬性集合(attributes)和物件類集合(object class)。

DNs and RDNs

DN是distinguished name的縮寫,是entry的唯一標識,同時記錄了entry所在的目錄樹層級位,類似於檔案系統的上下文路徑。

一個DN由零個或多個相對可分辨的名稱或者RDN組成。每個RDN由一個或者多個屬性-值組成(通常是一個)。例如uid=superlee,dc=choerodon,dc=io這個DN,由3個RDN組成,RDN的順序指定了DIT(directory information tree)中相關條目的位置,從左到右以降序表示層級結構,即父目錄在偏右側,上述DN的父目錄的DN為ou=choerodon,ou=io,uid是RDN的屬性,superlee是RDN的值。

Root DSE是一個長度為0的字串DN的特殊條目,每一個LDAP server 必須要有一個這樣公開的特殊條目。

Attributes

Attributes用於儲存條目的資料。一個條目可以有多個attribute,每一個attribute都有一個attribute type (屬性型別),零個或多個attribute options(屬性選項)以及一組包含實際資料的值。

屬性型別指定LDAP client和server應該如何處理該屬性,必須包含物件識別符號(OID)和零個或多個名稱。

屬性選項不常用,但是可以提供一些後設資料,如對該屬性的值進行多語言處理。

如圖所示,該entry包含了多個attribute。

如何使用Choerodon LDAP以及配置定時任務

Object Classes

物件類標記條目的型別,每個條目有一個結構物件類,指明條目所代表的物件型別(person/group/device等),還有零個或多個輔助物件類,提供其他特徵。

Object Identifiers (OIDs)

物件識別符號,用於唯一標識LDAP協議中的各種元素,OID由一系列由句點分隔的數字組成(例如,“1.2.840.113556.1.4.473”是表示伺服器端排序請求控制元件的OID)。

可以使用ldapsearch命令查詢LDAP server是否支援分頁查詢。

ldapsearch -H ldap://ldap.server.address:389 -x -D "uid=superlee,dc=choerodon,dc=io" -W -b "" -s base -a always "(objectClass=*)
複製程式碼

如果返回值裡包含1.2.840.113556.1.4.473,那麼伺服器就是支援分頁查詢的。

其他術語

  • base DN: 基準DN,通常指一個屬性結構的頂部,如下的樹形結構的base DN就是dc=gp,dc=gl,dc=google,dc=com

如何使用Choerodon LDAP以及配置定時任務

  • DIT: directory information tree
  • entryUUID: 包含DIT條目的通用唯一ID(UUID)的屬性。
  • LDIF: LDAP資料交換格式。IETF術語,用於載入(匯入)和儲存(匯出)條目到LDAP啟用目錄的文字格式。用於資料的匯入匯出,每行都是“屬性: 值”對,見openldap ldif格式示例(uee.me/aVvkE)
  • dc: domain component,通常指域名的每個元件,如www.baidu.com可以被寫成dc=www,dc=baidu,dc=com
  • cn: common name,被廣泛用作命名某些“東西”或真實世界實體的屬性。
  • ou: organizational unit name,表明使用者所屬的組織單元,屬於多個組織使用逗號隔開。
  • l: locality name,區域性名,地方名
  • st: state or province name,州或者省份名稱
  • o: organizational name,組織名
  • c: country name,國家名
  • street: street name,街道名
  • uid: user id,使用者id

Choerodon LDAP使用

詳情可閱讀《Choerodon LDAP文件》

這裡做一些補充說明。

Choerodon的LDAP在組織層級,即每個組織都有各自的LDAP配置,配置好LDAP後即可同步到當前組織下,使用者登入的時候根據登入名查詢對應的組織,然後找到對應的LDAP server去認證,認證通過則登入成功,否則則登入失敗。

如果組織下的LDAP已經被停用,則該組織下的所有LDAP使用者都不能登入。

Choerodon只支援可以分頁查詢的LDAP server。

如何使用Choerodon LDAP以及配置定時任務

  • 2: 主機名,即ldap server的地址,必須以ldap://或者ldaps://開頭。
  • 4: 這個值是每次分頁查詢使用者的數量以及傳送saga事件的使用者數量。
  • 5: 查詢和連線LDAP server的超時時間,單位為秒。

注意: 管理員登入賬戶和密碼,要有在base DN上的登入許可權,否則測試連線會報登入失敗。

如何使用Choerodon LDAP以及配置定時任務

  • 1: 使用者物件類,一般設定為person,用於檢索符合這個型別的條目。支援輸入多個object class,使用逗號分隔。
  • 2: 讀取entry的該屬性設定到iam_user表的login_name欄位,作為登入名。
  • 6: uuid,LDAP物件的唯一標識,大多數是entryUUID屬性,Microsoft Active Directory可能是objectGUID屬性,如果您的的ldap伺服器確實不支援uuid,使用能唯一標識物件的欄位即可,比如uid或者entryDN。記錄部分使用者同步失敗的uuid,方便到LDAP server查詢。
  • 7: 額外的過濾條件用於同步使用者,允許為空,表示式必須以“(”開始,以“)”結束,語法參考ldap search syntax(uee.me/aVvmj)。

注意: 測試連線裡的屬性匹配,抓取了base DN下的100個滿足已經設定的使用者物件類和自定義篩選條件的條目,然後去校驗設定好的loginName,email等 屬性是否存在,如果不存在該屬性名就返回不匹配。

如何使用Choerodon LDAP以及配置定時任務

Choerodon LDAP定時任務配置

Choerodon 支援配置LDAP同步使用者和禁用使用者定時任務,定時任務配置文件。

組織層設定同步定時任務

首先進入組織層的任務明細介面

如何使用Choerodon LDAP以及配置定時任務

然後在當前介面點選建立任務按鈕

如何使用Choerodon LDAP以及配置定時任務

任務支援簡單任務和cron表示式任務,這裡以簡單任務作例項,每天同步一次,執行30次。

超時策略:

  • 阻塞: 下次觸發時間若上次觸發任務未完成,則暫停定時任務,任務不再被執行。
  • 序列: 下次觸發時間若上次觸發任務未完成,兩次任務可按照觸發時間依次被執行。
  • 並行: 下次觸發時間若上次觸發任務未完成,兩次任務可以同時被執行。

點選下一步選擇iam-service,Choerodon有兩個內建的定時任務,同步定時任務和禁用使用者定時任務。禁用使用者定時需要設定filterStr,用來篩選需要禁用的使用者。這個篩選表示式必須以'('開始,以')'結束,語法參考ldap search syntax。

點選下一步選擇通知物件,之後點下一步確認資訊後建立即可。

全域性層設定同步定時任務

首先使用具有site層許可權的賬戶登入,然後按如下順序點選選單,進入任務明細介面。

如何使用Choerodon LDAP以及配置定時任務

然後在當前介面點選建立任務按鈕,這裡和組織層的操作一致。

如何使用Choerodon LDAP以及配置定時任務

在配置執行程式時,Choerodon內建了兩個預設的LDAP相關的全域性層任務。其中同步使用者需要設定組織code引數,表明同步該組織下的使用者,過濾停用使用者需要設定組織code和篩選停用使用者的條件。之後選擇下一步和需要通知的物件確認即可。

關於Choerodon豬齒魚

Choerodon豬齒魚開源多雲技術平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的整合,實現企業多雲/混合雲應用環境的一致性。平臺通過提供精益敏捷、持續交付、容器環境、微服務、DevOps等能力來幫助組織團隊來完成軟體的生命週期管理,從而更快、更頻繁地交付更穩定的軟體。

大家也可以通過以下社群途徑瞭解豬齒魚的最新動態、產品特性,以及參與社群貢獻:

相關文章