Choerodon 豬齒魚是開源多云應用平臺挂捻,是基于 Kubernetes 的容器編排和管理能力碉纺,整合 DevOps 工具鏈、微服務和移動應用框架刻撒,來幫助企業(yè)實現(xiàn)敏捷化的應用交付和自動化的運營管理骨田,并提供 IoT、支付声怔、數(shù)據(jù)态贤、智能洞察、企業(yè)應用市場等業(yè)務組件醋火,來幫助企業(yè)聚焦于業(yè)務抵卫,加速數(shù)字化轉(zhuǎn)型。
Choerodon 可以通過配置LDAP的方式對接已有的用戶胎撇,使用LDAP的賬號和密碼即可登錄到Choerodon平臺。
什么是LDAP
LDAP是輕量級目錄訪問協(xié)議(Lightweight Directory Access Protocol)的縮寫殖氏,是一個開放的晚树,中立的,工業(yè)標準的應用協(xié)議雅采,用于與目錄服務進行交互爵憎。LDAP有許多種實現(xiàn),比如Open LDAP和微軟的Active Directory等婚瓜,類似于關(guān)系型數(shù)據(jù)庫的多種不同的實現(xiàn)宝鼓,如oracle和mysql等。
LDAP基于TCP/IP協(xié)議巴刻,使用Client/Server架構(gòu)愚铡,允許客戶端在目錄服務器中執(zhí)行各種操作,包括存儲和檢索數(shù)據(jù)胡陪,搜索與給定標準集匹配的數(shù)據(jù)沥寥,對客戶端進行身份驗證等。LDAP的標準TCP端口對于未加密的通信是389柠座,對于通過TLS加密的通道的LDAP是636邑雅,這里可以類比HTTP協(xié)議默認端口為80,HTTPS協(xié)議默認端口為443妈经。
LDAP目錄使用有層次的淮野、樹形結(jié)構(gòu)存儲數(shù)據(jù)捧书,具有優(yōu)異的查詢,瀏覽和搜索性能骤星,但寫入性能差经瓷,沒有事務處理和回滾等功能,不適合頻繁修改數(shù)據(jù)妈踊。通常用于存儲公司員工信息了嚎,用戶使用同一個賬戶和密碼就可以登錄到多個不同的服務,也可以存儲公用證書和安全密鑰廊营,公司物理設(shè)備信息等歪泳。
基本概念
Directory Servers
目錄服務器是一種存儲樹形條目信息的網(wǎng)絡(luò)數(shù)據(jù)庫,與關(guān)系型數(shù)據(jù)庫存儲行和列的關(guān)系信息不同露筒,可以被認為一種NoSQL數(shù)據(jù)庫呐伞。
Entries
LDAP entry(LDAP條目)是有關(guān)實體的信息集合,每個條目由下面三部分組成:DN慎式,屬性集合(attributes)和對象類集合(object class)伶氢。
DNs and RDNs
DN是distinguished name的縮寫,是entry的唯一標識瘪吏,同時記錄了entry所在的目錄樹層級位癣防,類似于文件系統(tǒng)的上下文路徑。
一個DN由零個或多個相對可分辨的名稱或者RDN組成掌眠。每個RDN由一個或者多個屬性-值組成(通常是一個)蕾盯。例如uid=superlee,dc=choerodon,dc=io
這個DN,由3個RDN組成蓝丙,RDN的順序指定了DIT(directory information tree)中相關(guān)條目的位置级遭,從左到右以降序表示層級結(jié)構(gòu),即父目錄在偏右側(cè)渺尘,上述DN的父目錄的DN為ou=choerodon,ou=io
挫鸽,uid是RDN的屬性,superlee是RDN的值鸥跟。
Root DSE是一個長度為0的字符串DN的特殊條目丢郊,每一個LDAP server 必須要有一個這樣公開的特殊條目。
Attributes
Attributes用于保存條目的數(shù)據(jù)锌雀。一個條目可以有多個attribute蚂夕,每一個attribute都有一個attribute type (屬性類型),零個或多個attribute options(屬性選項)以及一組包含實際數(shù)據(jù)的值腋逆。
屬性類型指定LDAP client和server應該如何處理該屬性婿牍,必須包含對象標識符(OID)和零個或多個名稱。
屬性選項不常用惩歉,但是可以提供一些元數(shù)據(jù)等脂,如對該屬性的值進行多語言處理俏蛮。
如圖所示,該entry包含了多個attribute
Object Classes
對象類標記條目的類型上遥,每個條目有一個結(jié)構(gòu)對象類搏屑,指明條目所代表的對象類型(person/group/device等),還有零個或多個輔助對象類粉楚,提供其他特征辣恋。
Object Identifiers (OIDs)
對象標識符,用于唯一標識LDAP協(xié)議中的各種元素模软,OID由一系列由句點分隔的數(shù)字組成(例如伟骨,“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
携狭,那么服務器就是支持分頁查詢的。
其他術(shù)語
-
base DN
: 基準DN回俐,通常指一個屬性結(jié)構(gòu)的頂部逛腿,如下的樹形結(jié)構(gòu)的base DN就是dc=gp,dc=gl,dc=google,dc=com
-
DIT
: directory information tree -
entryUUID
: 包含DIT條目的通用唯一ID(UUID)的屬性。 -
LDIF
: LDAP數(shù)據(jù)交換格式仅颇。IETF術(shù)語单默,用于加載(導入)和保存(導出)條目到LDAP啟用目錄的文本格式。用于數(shù)據(jù)的導入導出忘瓦,每行都是“屬性: 值”對雕凹,見openldap ldif格式示例 -
dc
: domain component冀宴,通常指域名的每個組件紊服,如www.baidu.com可以被寫成dc=www,dc=baidu,dc=com
-
cn
: commonName枕荞,被廣泛用作命名某些“東西”或真實世界實體的屬性。 -
ou
: organizational unit name明场,表明用戶所屬的組織單元,屬于多個組織使用逗號隔開李丰。 -
l
: locality name苦锨,局部名,地方名 -
st
: state or province name趴泌,州或者省份名稱 -
o
: organizational name -
c
: country name -
street
: street name -
uid
: user id
Choerodon LDAP使用
這里做一些補充說明舟舒。
Choerodon的LDAP在組織層級,即每個組織都有各自的LDAP配置嗜憔,配置好LDAP后即可同步到當前組織下秃励,用戶登錄的時候根據(jù)登錄名查詢對應的組織,然后找到對應的LDAP server去認證吉捶,認證通過則登錄成功夺鲜,否則則登錄失敗皆尔。
如果組織下的LDAP已經(jīng)被停用,則該組織下的所有LDAP用戶都不能登錄币励。
Choerodon只支持可以分頁查詢的LDAP server慷蠕。
2: 主機名,即ldap server的地址食呻,需要以ldap://或者ldaps://開頭流炕。
4: 這個值是每次分頁查詢用戶的數(shù)量以及發(fā)送saga事件的用戶數(shù)量。
5: 查詢和連接LDAP server的超時時間仅胞,單位為秒每辟。
注意:
管理員登錄賬戶和密碼,要有在base DN上的登錄權(quán)限饼问,否則測試連接會報登錄失敗影兽。
- 1: 用戶對象類,一般設(shè)置為person莱革,用于檢索符合這個類型的條目峻堰。支持輸入多個object class,使用逗號分隔盅视。
- 2: 讀取entry的該屬性設(shè)置到iam_user表的login_name字段捐名,作為登錄名。
- 6: uuid闹击,LDAP對象的唯一標識镶蹋,大多數(shù)是'entryUUID'屬性,Microsoft Active Directory可能是'objectGUID'屬性赏半,如果您的的ldap服務器確實不支持uuid贺归,使用能唯一標識對象的字段即可,比如'uid'或者'entryDN'断箫。記錄部分用戶同步失敗的uuid拂酣,方便到LDAP server查詢。
- 7: 額外的過濾條件用于同步用戶仲义,允許為空婶熬,表達式必須以'('開始,以')'結(jié)束埃撵,語法參考ldap search syntax赵颅。
注意:
測試連接里的屬性匹配,抓取了base DN下的100個滿足已經(jīng)設(shè)置的用戶對象類和自定義篩選條件的條目暂刘,然后去校驗設(shè)置好的loginName,email等
屬性是否存在饺谬,如果不存在該屬性名就返回不匹配。