
作者 | 李智源 阿裡雲開放平台進階技術專家,主要負責阿裡雲企業級身份管理,緻力于提供雲上集中式、易內建、安全、合規的企業級身份認證和管理服務。
1.場景是什麼
在雲平台上管理使用雲資源的時候,企業管理者對于賬号的管理有以下幾個場景和做法:
管理單一雲平台主賬号:管理一個獨立的開發者或工作室的賬号。主要業務可能是營運一個資訊類站點或開發一個APP。需要的雲資源較少,研發和運維可能就一個人或幾個人,大家共享賬号管控和使用雲資源。是以隻要管理好這一個賬号密碼就好。
管理單一雲平台主賬号,少量子賬号:管理一家中小型企業,資訊系統和業務系統的規模不大,企業有技術運維團隊來管理企業在雲上的資訊系統和業務系統。但管理要求不高,企業自己的員工身份系統建設并不十分完善。技術運維團隊獨立管理雲上賬号的使用,可能在雲上使用一個或多個雲賬号,按照使用場景配置設定RAM使用者,每個RAM使用者配置設定對應的權限,獨享或共用RAM使用者。是以使用者名、密碼、MFA密鑰共享,且和企業本地員工系統割裂。
管理多雲平台主賬号,多個子賬号:管理一家中大型或者超大型的跨國企業,資訊系統和業務系統龐大且本地、雲上均有資源。員工可能在全球各個地方使用各種裝置通路企業的資訊系統或管控雲資源。企業管理要求嚴格,強合規需求,強監管需求。且技術運維團隊分工細緻且有管控使用強隔離的場景。本地員工系統建設完善,期望能在一個地方集中管理者工的身份認證資訊,并且和單個雲或多個雲的控制台打通,這樣可以友善的對企業雲上資源的管理按照公司的組織架構進行隔離和審計。
2.痛點是什麼
對于一家中型、大型和跨國企業來說,雲上資源的管控需要多個崗位的員工共同參與協作,例如開發、運維、财務和審計等角色。同時企業有強合規,強監管的需求。
在雲上,為了解決管理隔離,資料洩漏,審計和合規的問題,企業的身份管理者為參與協作的每個員工建立一個RAM賬号,并授予相應的權限。員工使用獨立的使用者名、密碼和多因素認證通路雲服務的控制台。
看起來現狀已經很美好,但是随着員工的入職、離職,且相對應在雲上的的賬号需要随之調整。企業規模擴大,使用了多個雲平台的服務,需要完整的在多個雲平台上管理者工賬号,企業和員工的賬号管理成本也不斷的升高。
圖1 本地和多雲管理多套使用者身份
為了降低管理的成本,企業可能借助于雲平台提供的身份API,自行開發管理平台來管理本地員工和雲上賬号的關系,維護雲平台賬号的密碼。這樣需要額外的團隊來維護系統,且每當接入一個新平台,需要參考對應的API再做一次性開發,并不是一個标準的通用方案。當然也有CMP也為企業提供了解決此類問題的方案。
那麼,有沒有一個通用的協定或者标準能夠解決企業集中化身份控制的需求,且能友善的和雲平台賬号的登入打通?
當然有!繼續往下看。
3.SAML 協定
SAML is an XML-based markup language for security assertions (statements that service providers use to make access-control decisions).SAML is also:
A set of XML-based protocol messages;A set of protocol message bindings;A set of profiles (utilizing all of the above).
Security Assertion Markup Language - Wikipedia
SAML協定最重要的場景是用于SSO,目前常用的是SAML 2.0協定。SAML協定的内容不再贅述,如果想進一步了解可以參考具體協定内容。本文僅簡單介紹下SAML SSO的基本過程。
SAML SSO的過程重要的兩方參與者「IdP」和「SP」:
身份提供商(IdP)
一個提供身份管理服務的實體,例如:
企業本地IdP:Microsoft Active Directory Federation Service (AD FS)、Shibboleth等。
Cloud IdP:Azure AD、Google G Suite、Okta、OneLogin等。
服務提供商(SP)
利用IdP的身份管理功能,為使用者提供具體服務的應用,SP會使用IdP提供的使用者資訊。一些非SAML協定的身份系統(例如:OpenID Connect),也把服務提供商稱作IdP的信賴方。
IDP和SP需要先建立「信賴」,并通過傳輸的「SAML斷言」進行認證:
SAML斷言(SAML assertion)
SAML協定中用來描述認證請求和認證響應的核心元素,例如:使用者的具體屬性就包含在認證響應的斷言裡。
<saml2p:Response>
<saml2p:Status>...</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>IdP.entityId</saml2:Issuer>
<ds:Signature>...</ds:Signature>
<saml2:Subject>
<saml2:NameID>NameId</saml2:NameID>
<saml2:SubjectConfirmation>...</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>...</saml2:Conditions>
<saml2:AuthnStatement >...</saml2:AuthnStatement>
<saml2:AttributeStatement>....</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
信賴(Trust)
建立在SP和IdP之間的互信機制,通常由公鑰和私鑰來實作。SP通過可信的方式擷取IdP的SAML中繼資料,中繼資料中包含IdP簽發SAML斷言的簽名驗證公鑰,SP則使用公鑰來驗證斷言的完整性。
SAML SSO的基本流程如圖2所示:
圖2 SAML SSO 基本流程
- 使用者在SP側登入框輸入使用者名,從SP 側觸發SAML SSO;
- SP側通過适配使用者名對應的Trust配置,重定向用戶端到IdP側做認證,并向IdP側發起SAML Request;
- 使用者在IdP做認證完成後,IdP側根據Trust的配置和SAML Request的Context内容,重定向使用者到SP側,并發送SAML Response;
- 用戶端帶着SAML Response跳轉到SP側;
- SP側驗證Response中的SAML Assertion,識别其中的身份字段,找到對應的雲上的使用者,建立Session;
- SP側維護Session,重定向用戶端到SAML Response中指定的頁面。用戶端持有雲上的賬号的Session,通路控制台。
阿裡雲平台提供了兩種SAML SSO 方式:
- 基于RAM使用者的SSO
- 基于RAM角色的SSO
圖3 阿裡雲提供的SAML SSO的兩種方式
4.實戰
假設這樣一個場景。一家跨國企業CompanyA使用了GCP雲平台,并在其上建構了員工體系和資訊系統體系。現在業務擴充到中國想使用阿裡雲,但是其員工賬号想統一在GCP上管理認證,需要管理雲資源的時候免登到阿裡雲。公司的使用者管理者[email protected]想實作這個功能,需要如何操作呢?
這個場景裡,GCP作為IdP,阿裡雲作為SP。這裡我們知道GCP的租戶是CompanyA.com,假設阿裡雲的租戶是companyA.onaliyun.com。
4.1 阿裡雲側的配置
companyA.onaliyun.com租戶賬号或子使用者登入
RAM控制台。
選擇左側導航欄的SSO管理。在使用者SSO标簽下,可檢視目前租戶的SAML SSO 配置相關資訊,可用于在IdP側的配置。
圖4 阿裡雲使用者SAML SSO 配置控制台
SSO登入相關的設定,包括選擇SSO功能狀态、上傳中繼資料文檔和設定輔助域名。
1.SSO功能狀态:
-預設關閉,此時RAM使用者可以使用密碼登入,SSO配置不生效;
-選擇開啟,此時RAM使用者密碼登入方式将會被關閉,統一跳轉到企業IdP登入服務進行身份認證。
2.中繼資料文檔,單擊上傳檔案,上傳從IdP側擷取的的中繼資料文檔。見GCP側配置第3步;
3.輔助域名(可選):開啟輔助域名開關,可以設定一個輔助域名:
-如果設定了輔助域名,SAML斷言中的NameID元素将可以使用此輔助域名作為字尾;
-如果沒有設定輔助域名,SAML斷言中的NameID元素将隻能使用目前賬号的預設域名或域别名作為字尾。
4.2 GCP側的配置
- 賬号登入 Google Admin ;
- 點選應用 -> SAML 應用,選擇右下角的建立,并點選設定自己的自定義應用;
- 下載下傳IdP中繼資料,用來作為阿裡雲側的配置上傳中繼資料檔案;
- 填好自定義名稱後,填入阿裡雲側的ACS網址和EntityId。此資料可以通過阿裡雲側的使用者SSO中繼資料文檔中擷取。見阿裡雲側配置第二步。配置如圖5所示。
- 為使用者自定義字段,字段為阿裡雲RAM使用者的使用者名:[email protected]。作為SAML Assertion中的NameID字段。(如果在阿裡側配置了輔助域或域别名,此步驟可以忽略,直接選擇GCP的Email)
- 配置完成後,配置設定給[email protected]的使用者有使用權限。當發起sso的時候。可以選擇配置的SAML應用。點選右上角的啟動,即可發起免登到阿裡雲控制台。
圖5 GCP配置使用者SAML SSO到阿裡雲配置
配置完成後,使用者可以在阿裡雲側的登入框輸入使用者名發起SP側的SSO(SP initiated User SSO),這也是最通用的場景。也可以直接在IdP側直接啟動應用,發起免登到SP(IdP initiated User SSO)。
總結
企業管理者可以通過簡單的配置,就可以友善、快捷、安全、合規的打通企業和阿裡雲平台間的控制台登入。降低了企業人員的管理和研發成本的同時,也保持了安全和合規的特性。下一篇文章,将介紹企業身份管理SSO的另一種方式--基于RAM角色的SAML SSO,敬請期待。