云原生AI套件通過對接外部LDAP(Lightweight Directory Access Protocol),借助企業內部賬號體系登錄云原生AI運維控制臺,無需通過RAM賬號密碼登錄。本文介紹如何通過對接外部LDAP登錄云原生AI控制臺。
前提條件
安裝云原生AI套件。具體操作,請參見安裝云原生AI套件。
擁有LDAP。具體操作,請參見ACK對接外部LDAP驗證源的步驟一。
部署Keycloak。具體操作,請參見部署KeyCloak應用。
基礎概念
LDAP(Lightweight Directory Access Protocol):賬號管理及訪問協議,有以下兩種主流的實現方式:
AD(Active Directory):Microsoft出品,支持LDAP 2.0和3.0。
Open LDAP:Open source LDAP,支持LDAP 2.0和LDAP 3.0。
更多信息,請參見LDAP。
IDaaS(Alibaba Cloud Identity as a Service):應用身份服務IDaaS是阿里云為企業用戶提供的一套集中式身份、權限、應用管理服務,幫助您整合部署在本地或云端的內部辦公系統、業務系統及第三方SaaS系統的所有身份,實現一個賬號打通所有應用服務。提供接入第三方認證源(IdP)以及數據的交換同步。
RAM(Resource Access Management):阿里云資源訪問控制,提供用戶、角色、權限管理以及SSO能力。
SSO(Single-Sign On):單點登錄,也稱為身份聯合登錄。在多個應用系統中,您只需要登錄一次,就可以訪問所有相互信任的應用系統。
OAuth2.0(Authorization Protocol):授權訪問用戶資源的協議。更多信息,請參見OAuth2.0。
OIDC(OpenID Connect):基于OAuth的ID交換協議。
SAML(Security Assertion Markup Language):實現企業級用戶身份認證的標準協議,它是SP和IdP之間實現溝通技術的一種方式。SAML 2.0已經成為目前實現企業級SSO的一種事實標準。
SP(Service Provider): 即業務提供方,SP會使用IdP提供的用戶信息。一些非SAML協議的身份系統(例如:OpenID Connect),也把服務提供商稱作IdP的信賴方。
IdP(Identity Provider):登錄時的身份提供方,認證源。
SAML同時支持由IdP發起和SP發起的登錄, 即在登錄IdP后,可以跳轉到任意一個應用。也可以從一個應用發起登錄,跳轉到IdP,登錄認證后,再跳轉回這個應用,繼續SSO。
SCIM(System for Cross-domain Identity Management):主要用于多用戶的云應用身份管理。阿里云通過SCIM標準協議,結合OAuth應用的安全授權,可以將企業內部系統中的賬號數據同步到阿里云訪問控制(RAM)中。更多信息,請參見SCIM。
實現原理
云原生AI運維控制臺對接的是阿里云訪問控制(RAM)的用戶單點登錄(SSO),非角色SSO。而用戶SSO需要同步LDAP用戶信息(不包含密碼)到RAM作為RAM子賬號(RAM用戶),同步之后配置RAM第三方SSO認證源,即可在登錄RAM時,跳轉至第三方IdP做登錄認證。
共涉及三種角色:
云原生AI套件安裝者:擁有集群操作權限,安裝者默認是第一個管理員且不可刪除。
云原生AI套件管理員(Admin):擁有AI運維控制臺登錄、操作權限。
云原生AI套件研發人員(Researcher):擁有AI開發控制臺登錄、操作權限。
實現原理的整體流程如下:
云原生AI安裝者同步LDAP用戶信息到RAM,具體操作,請參見步驟一: 同步LDAP賬號到RAM。
安裝云原生AI套件。具體操作,請參見安裝云原生AI套件。
云原生AI管理員創建管理員或者研發人員,具體操作,請參見步驟二:在AI運維控制臺新建管理員。
管理員登錄AI運維控制臺,具體操作,請參見步驟三:LDAP用戶登錄AI運維控制臺。
說明研發人員登錄AI開發控制臺與管理員登錄AI運維控制臺流程相同。
下圖為實現管理員登錄云原生AI運維控制臺的具體交互流程:
步驟一: 同步LDAP賬號到RAM
同步LDAP賬號到RAM的方法有手動同步和自動同步兩種,您可以根據實際情況選擇相應的同步方式:
如果企業賬號較少,您可以通過手動同步,為每個用戶創建RAM子賬號。
如果企業賬號較多,您可以借助IDaaS自動全量或增量同步。
方法一:手動同步LDAP賬號到RAM
登錄 RAM 控制臺。
在RAM控制臺左側導航欄中,選擇 。
在用戶頁面,單擊創建用戶。
在創建用戶頁面,輸入登錄名稱和顯示名稱,單擊確定。
說明登錄名稱與LDAP中的用戶名需保持一致。
方法二:通過IDaaS同步LDAP賬號到RAM
創建具有AliyunRAMFullAccess權限的RAM賬號(即RAM用戶)。具體操作,請參見RAM賬號準備。
說明如果您已經擁有AliyunRAMFullAccess權限的RAM賬號,該步驟可跳過。
將生成的AccessKey ID和AccessKey Secret安全保存到本地。
IDaaS添加阿里云控制臺。具體操作, 請參見IDaaS添加阿里云控制臺。
上圖紅框中的參數配置需要用到步驟一中的AccessKey ID和AccessKey Secret。
如果在配置完成后,您需要修改阿里云控制臺應用的信息,在應用列表頁面,關閉應用狀態開關,然后單擊修改應用即可。
同步LDAP賬號到IDaaS。
新建LDAP對接配置。
登錄應用身份管理控制臺,單擊免費創建實例。
在創建實例面板中,輸入實例描述,并勾選相應協議,然后單擊創建。
在實例列表中,選擇已創建的目標實例進入云身份服務快速入門頁面,然后單擊綁定 OpenLDAP。
在綁定 OpenLDAP的連接 LDAP頁面,設置LDAP的配置信息,然后單擊下一步。
關于綁定OpenLDAP的更多信息,請參見綁定OpenLDAP。
從AD導入賬戶及組織機構。具體操作,請參見從AD導入賬戶及組織機構。
結果驗證
在賬戶與組織頁面,可以在右側查看詳情區域的賬戶頁簽,查看到從LDAP同步到IDaaS的賬號。
說明從LDAP同步用戶到IDaaS時,如果有用戶已同步,您可以一鍵移除處理。
從IDaaS同步賬號到RAM。
說明通過上述3個操作步驟,LDAP中的用戶信息已經同步到IDaaS的阿里云RAM-用戶SSO應用中,您還需要通過SCIM協議把IDaaS應用中的用戶,同步到RAM即可。
配置SCIM同步。具體操作,請參見配置SCIM同步。
相關參數配置獲取方法:
SCIM同步地址=IDaaS實例域名+用戶獲取API。例如,IDaaS實例域名為
pvfjoa****.login.aliyunidaas.com
,用戶獲取API為/api/application/plugin_aliyun/scim/account/fdeba622128415bb6da37e0915341d46AEklnKK****
,則SCIM同步地址為pvfjoa****.login.aliyunidaas.com/api/application/plugin_aliyun/scim/account/fdeba622128415bb6da37e0915341d46AEklnKK****。登錄云盾IDaaS管理平臺,獲取當前IDaaS實例域名。
用戶獲取API的方法如下:
在IDaaS實例詳情的左側導航中,選擇
。單擊應用名稱為阿里云RAM-用戶SSO右側操作列下的詳情。
在應用信息區域,單擊查看詳情。在應用詳情(阿里云RAM-用戶SSO)面板中,賬戶同步地址即為用戶獲取API。
用戶賬戶同步接口認證的client_id和client_secret。
在API區域,打開API開關,分別單擊API Key和API Secret,將API Key和API Secret安全保存到本地。
對新應用授權。
在IDaaS實例詳情的左側導航欄中,選擇
。在應用授權頁面,單擊組織機構頁簽,選中目標應用和目標組織機構,單擊保存。
在系統提示對話框功能,單擊確定。
同步IDaaS用戶信息到RAM。
在IDaaS實例詳情的左側導航中,選擇
。在機構及組頁面,單擊dev,您可以在右側查看詳情區域的賬戶頁簽。
單擊步驟3中從LDAP同步到IDaaS的用戶右側操作列下的賬戶同步。
在賬戶同步面板,單擊同步。
說明您也可以配置自動同步,這樣每次從LDAP導入用戶到IDaaS時,IDaaS會自動同步用戶到RAM。具體操作請參見自動同步賬戶配置。
結果驗證
登錄 RAM 控制臺。
在RAM控制臺左側導航欄中,選擇
。在用戶頁面,如果能查看到步驟3中從LDAP同步到IDaaS的用戶信息,則說明您已成功從IDaaS同步用戶信息到RAM。反之,則說明同步失敗。
步驟二:在AI運維控制臺新建管理員
同步LDAP用戶信息到RAM后,您可以在AI運維控制臺看到對應的用戶信息。
步驟三:LDAP用戶登錄AI運維控制臺
同步LDAP用戶信息到RAM,并在AI運維控制臺創建完用戶后,您只需要通過配置RAM的用戶SSO認證源,就能達到通過LDAP登錄到AI運維控制臺的目的:
通過IDaaS接入第三方LDAP認證源。
通過RAM對接支持SAML協議的IdP登錄。
通過RAM對接OpenLDAP登錄。
方法一:LDAP用戶通過IDaaS接入第三方LDAP認證源登錄AI運維控制臺
用IDaaS SSO接管RAM SSO。具體操作,請參見阿里云控制臺中配置SSO單點登錄和從IDaaS單點登錄到阿里云控制臺的步驟1~4。
說明SAML元數據配置metadata.xml文件需從應用詳情(阿里云RAM-用戶SSO)面板中的IDaaS IdentityId參數位置下載。
通過IDaaS接入第三方LDAP認證源具體操作,請參見LDAP認證登錄的步驟1~3。
重要在認證源頁面,請確保LDAP的狀態是打開。
認證源詳情(LDAP)面板中的相關參數說明如下:
LDAP URL:需要用到LDAP配置面板中的服務器地址和端口號,具體格式為:
ldap://<服務器地址>:<端口號>/
。LDAP Base:即為LDAP配置面板中的Base DN參數值。
LDAP賬戶:即為LDAP配置面板中的管理員DN參數值。
過濾條件:
cn=$username$
。LDAP加密方式:MD5。
顯示:選中。
方法二:LDAP用戶通過RAM對接支持SAML協議的IdP登錄AI運維控制臺
阿里云與企業進行用戶SSO時,阿里云是服務提供商(SP),而企業自有的身份管理系統則是身份提供商(IdP)。通過用戶SSO,企業員工在登錄后,將以RAM用戶身份訪問阿里云。
當管理員在完成用戶SSO的相關配置后,企業員工Alice可以通過如下圖所示的方法登錄到阿里云。更多信息,請參見基本流程。
通過配置相應元數據來建立阿里云對企業IdP的信任,實現企業IdP通過用戶SSO登錄阿里云。具體操作,請參見進行用戶SSO時阿里云SP的SAML配置。
在企業身份提供商中配置阿里云為可信SAML服務提供商。具體操作,請參見進行用戶SSO時企業IdP的SAML配置。
如果您的IdP是AD FS,則關于如何使用AD FS進行用戶SSO的示例,請參見使用AD FS進行用戶SSO的示例。
如果您的IdP是Okta,則關于如何使用Okta進行用戶SSO的示例,請參見使用Okta進行用戶SSO的示例。
如果您的IdP是Azure AD,則關于如何使用Azure AD進行用戶SSO的示例,請參見使用Azure AD進行用戶SSO的示例。
方法三:LDAP用戶通過RAM對接OpenLDAP登錄AI運維控制臺
OpenLDAP自身不支持SAML協議,不能作為獨立IdP對外提供認證服務,所以需要借助Keycloak等封裝。本文以OpenLDAP和Keycloak的組合,介紹LDAP用戶如何通過RAM對接OpenLDAP登錄AI運維控制臺。
可選:部署OpenLDAP環境,具體操作,請參見ACK對接外部LDAP驗證源的步驟一。
可選:搭建Keycloak。具體操作,請參見部署KeyCloak應用。
配置Keycloak對接OpenLDAP,并同步用戶信息至Keycloak。具體操作,請參見配置Keycloak應用。
在KeyCloak中添加阿里云為SAML服務提供商。具體操作,請參見添加阿里云為SAML服務提供商。
重要Name ID Format為
email
。配置RAM用戶SSO,用Keycloak接管RAM登錄認證。具體操作,請參見阿里云控制臺中配置SSO單點登錄。
SAML元數據配置Metadata.xml文件需從Keycloak下載,且必須是
xml
格式。需開啟輔助域名,輔助域名設置為本方法操作步驟3中(添加
test.com
域)的名稱的值。
常見問題
問題現象
當配置Keycloak對接OpenLDAP,并同步用戶至Keycloak時,出現以下報錯:
keycloak sync faild Failed during import user from LDAP: org.keycloak.models.ModelException: User returned from LDAP has null username! Check configuration of your LDAP mappings.
解決方法
檢查Keycloak的報錯日志,且排查Users DN字段是否缺失或有空格。
問題現象
當認證完成后,不能正常跳轉,出現以下報錯:
unknown sp_code
解決方法
重新登錄AI運維控制臺。
問題現象
當LDAP用戶通過RAM對接OpenLDAP登錄AI運維控制臺時,出現以下報錯:
該用戶不存在 {"UserPrincipalName":"newldapuser@198370611786****.onaliyun.com"}
解決方法
確認以下幾點:
用戶是否在RAM中存在。
Keycloak中Name ID Format是否為
email
。SSO登錄設置需要開啟輔助域名,且輔助域名與Keycloak中需保持一致。