背景
隨着企業上雲的進一步深入,越來越多的業務逐步遷移至雲端,雲上資源的需求也隨着業務增加而越來越多,這種增長使得單賬號的資源、項目、人員、權限管理變得極其複雜,多賬號上雲模式逐漸成為多業務上雲的重要選擇,然而隨着雲賬號的增加,多賬號管理中的人員和權限問題也隨着浮現,給運維工作帶來了新的挑戰,基於這些挑戰,我們開始研究如何在多賬號環境下高效的管理人員與權限,如何在多賬號場景下實現統一認證。
痛點
單賬號場景下,阿里雲RAM子賬號基本滿足人員管理,權限管理的需求,但是在多賬號場景下,所有賬號都採用RAM賬號方式進行人員權限管理就顯得有些吃力,會面臨以下的一些問題
- 某些人員賬號會存在多個賬號內,管理不便。
- 多賬號的權限分配冗餘且每個賬號都要重複操作。
- 人員離職需要在每一個賬號內檢查並清理。
- 多賬號下每次切換賬號都需要重新輸入用户及密碼,效率較低。
解決方案
- RAM SSO :配置繁瑣,需配合企業 IdP 使用,權限層面管理需要在企業 IdP 和阿里雲上同時操作,只在用户管理層面會有點優勢,並不能解決目前面臨的所有問題。
- 阿里云云SSO :配置簡單,可以與企業 IdP 配合使用,也可以不接入企業 IdP 獨立使用,用户管理,權限管理集中在一處。
通過一些調研和對比,阿里云云SSO(下文簡稱雲SSO) 基本符合我們的需要。
阿里云云SSO
阿里云云SSO是基於阿里雲資源目錄(RD的統一身份與訪問控制產品,基於阿里云云SSO,我們可以統一企業在多賬號下的阿里雲用户,對用户在多賬號下的權限進行統一管理,實現多賬號下的單點登錄。
雲SSO架構
雲SSO配置解釋
- 企業 IdP :企業身份提供商(Identity Provider),如 AD 、 LDAP 、 Kerberos 等存儲和管理用户身份的服務。
- SP:服務提供商(Service Provider)。
- 雲SSO用户:雲SSO有自己的用户目錄,基於此實現用户統一管理,通過給雲SSO用户分配對應賬號的訪問配置來實現權限管理。
- 訪問配置:權限集合,每個訪問配置可以添加多個權限(與 RAM 權限類似,內置權限和自定義權限)。
- 資源目錄管理賬號/資源目錄成員:雲SSO是基於阿里雲資源目錄的多賬號統一身份管理與訪問控制,各個業務阿里雲賬號都會加入資源目錄管理賬號中,加入後,之前分散的賬號會成為資源目錄的的成員,資源目錄的管理賬號可以進行統一管控。
- RAM用户同步:雲SSO默認是通過角色方式去訪問子賬號(資源目錄成員)的,但是有些阿里雲產品可能對角色的支持並不是那麼完善,這個時候就可以用使用RAM用户同步來切換成RAM用户形式去訪問雲資源。
- RAM角色:體現為訪問控制(RAM)中的一個角色,雲SSO用户登錄時會扮演這個角色來訪問子賬號裏的雲資源。
- RAM用户:與傳統的RAM用户一致。
雲SSO功能列表:
- 統一阿里雲用户 雲SSO為您提供一個原生的身份目錄,可以將所有需要訪問阿里雲的用户在該目錄中維護。
- 統一的權限配置 藉助與RD的深度集成,在雲SSO中可以統一配置用户或用户組對整個RD內的任意成員賬號的訪問權限。雲SSO管理員可以根據RD的組織結構,選擇不同成員賬號為其分配可訪問的身份(用户或用户組)以及具體的訪問權限,且該權限可以隨時修改和刪除。
- 統一的用户門户 企業員工只需要登錄門户站點,即可在門户站點上看到所有有權限的賬號列表,可以在門户頁面在多賬號之間輕鬆切換。
- 企業身份集成,單點登錄 雲SSO也可以與企業身份系統進行集成實現單點登錄。
雲SSO用法
因雲SSO需要配合資源目錄使用,資源目錄賬號對目錄下的阿里雲賬號有管理權限,因此最好是一個獨立的阿里雲賬號,此阿里雲賬號不涉及到任何資源。
- 開通資源目錄(搜索資源目錄點擊開通即可)
- 在資源目錄邀請要納入管理的阿里雲賬號
- 登錄被邀請的阿里雲賬號的資源目錄中接受邀請
a. 登錄資源管理控制枱
b. 左側導航欄,選擇資源目錄 > 概覽
c. 查看邀請
d. 點擊處理邀請 → 接受邀請 - 開通雲SSO(登錄雲SSO控制枱開通即可)
- 在雲SSO人員管理中添加用户
- 添加訪問配置(權限配置)
- 在多賬號管理裏面選擇指定的賬號推送訪問配置(推送權限)推送時需要關聯指定的用户或用户組
- 通過SSO門户登錄地址登錄SSO門户(參考用户名密碼登錄流程)
用户名密碼登錄流程
- 獲取登錄地址
- 複製URL到瀏覽器,輸入用户名密碼
- 訪問RD賬號資源
- 選擇對應的權限登錄
到此,雲SSO訪問配置以及登錄配置基本結束,所有用户相關操作都集中在雲SSO控制枱上執行即可,不在需要在各個子賬號中去操作,實現了用户及權限的統一管理,登錄操作也只需要在SSO門户站點上登錄一次即可,登錄後可以很方便的在各個子賬號中進行切換,基本上解決了我們當初在面臨多賬號管理上的一些問題。
KeyCloak + 雲SSO
上文還提過,雲SSO是支持企業IdP的,接下來我們將介紹如何通過開源產品KeyCloak實現通過企業身份(活動目錄,Active Directory)登錄阿里雲。
此方案中,KeyCloak將作為IdP,阿里云云SSO作為SP,通過SAML協議進行身份認證。
KeyCloak介紹
KeyCloak是適用於 Web 應用和 RESTful Web 服務的單點登錄方案。KeyCloak 的目標是簡化安全性,以便應用程序開發人員可以輕鬆的保護他們在組織中部署的應用程序和服務。KeyCloak為開發人員提供開箱即用的安全功能,並且可以輕鬆根據組織的個性化需求進行定製。KeyCloak為登錄、註冊、賬號管理提供了可自定義的用户界面。還可以將KeyCloak作為集成平台,將其與現有的 LDAP 和 Active Directory 服務器連接起來。還可以將身份驗證委託給第三方身份供應商,如 Facebook 和 Google。
基於KeyCloak + AD + 雲SSO的登錄流程
配置流程
- 部署KeyCloak(部署過程較為繁瑣,可以參考官方文檔) KeyCloak 支持多種部署方式,Kubernetes、Docker、Podman、裸機部署等… 高可用架構
- 在KeyCloak管理後台中添加 AD 配置(添加 LDAP 供應商) 在後台添加用户聯合,協議選擇 LDAP
- 在雲SSO獲取SP元數據文檔
- 在KeyCloak中新建客户端,導入SP元數據文檔
導入後協議類型選擇 SAML 其他選項如圖
保存後即可
- KeyCloak開啓OTP驗證(如無需要也可以不開啓)
- 阿里雲啓用SSO登錄(啓用後將無法通過雲SSO用户管理裏面設置的用户名密碼登錄)
- 雲SSO登錄測試(登錄URL與用户密碼登錄流程中用到的URL一致) 開啓SSO登錄後將無法通過賬號密碼登錄
KeyCloak SSO登錄頁面
第一次登錄會提示讓綁定OTP(開啓OTP情況下,如果沒開啓認證成功後會直接跳轉至雲SSO門户)
整體配置基本完成,此方案使用KeyCloak實現了阿里雲與企業賬號的打通,因賬號安全策略控制在企業側,也能更好的保護用户密鑰安全,並且阿里雲SSO認證與KeyCloak Server之間不存在服務端層面的交互,因此KeyCloak完全可以部署在內網,可以更好的保護賬號安全,而且阿里雲賬號的生命週期也會跟企業賬號的生命週期保持一致,避免了一些因人員離職後的未知訪問。
注意事項
- 最好不要在KeyCloak上開啓註冊以及同步用户修改,添加用户身份供應商時(如 AD )讀寫默認配置為只讀。
- 為了賬號安全,最好在KeyCloak側開啓OTP驗證(上述有截圖)。
- KeyCloak只負責用户身份驗證,權限等操作還是需要在雲SSO控制枱進行統一管理。
- 沒有開啓雲SSO的 SCIM 用户同步時,如果需要給企業人員添加賬號,需要在雲SSO用户管理中添加對應用户(無需額外設置密碼)並配置權限,之後用户才可以通過KeyCloak用企業賬號登錄阿里雲,否則阿里雲側會提示無法找到用户。
KeyCloak SSO在無影電腦上的應用
通過雲SSO的實踐,我們通過KeyCloak實現了一套SSO認證的體系,KeyCloak除了SAML協議,還支持OpenID Connect協議,其他應用可以輕鬆使用標準協議接入SSO系統進行身份驗證。我們也將正在使用的無影雲電腦應用接入了KeyCloak進行登錄認證,提高了大家使用雲電腦的便捷性,並且因為是同一套SSO,也不用額外記錄一套用户密碼,OTP二次驗證等都可以複用。
配置簡介
- 在KeyCloak上獲取 IdP 元數據信息
- 添加企業身份源,上傳 IdP 元數據信息
- 點擊編輯 → 下載元數據信息
- 在KeyCloak導入客户端(參考上文)
- 在無影雲電腦通用配置中關閉便捷賬號登錄
- 雲電腦客户端登錄時會自動跳轉KeyCloak SSO認證(與雲SSO類似)
未來規劃
當前並沒有開啓SCIM用户同步,因此流程上還有些手動部分,未來可以考慮將手動部分通過程序或腳本自動化,接入OA之類的系統,聯動企業內部流程,提高運維效率。
作者簡介
Yulong,系統運維專家
招聘信息
拍碼場