時至今日,企業必須使用雲端服務,或將應用程式部署到雲端供人員在外使用的情境日益普遍。服務存取需被控管,必然有帳號密碼及權限管理需求,整合企業既有 AD 帳號群組會比另建一套帳號系統省事有效率,但 AD 屬資安攻防的一級戰區,不宜貿然開發對外,設計應用時必須格外謹慎。

要讓 AD 同時支援企業內部及雲端應用,微軟建議做法是採用 Azure AD 混和式身分識別(Hybrid Identity),指企業在雲端建構 Azure AD (註:Azure AD 已更名為 Microsoft Entra ID,登楞! 聽起來一整個怪,本文會繼續叫它 Azure AD 或 AAD)

將地端 AD (On-Premises AD) 資料同步到 Azure AD 有兩種做法:Azure AD Connect Cloud Sync 與 Azure AD Connect Sync,後者又分 V1 跟 V2,V1 已於 2022/8/31 退役,需改用 V2。是不是快被這堆名稱搞瘋?這裡整理一下:

Azure AD Connect 是歷史悠久的傳統 AAD 同步工具,需在地端安裝服務將 AD 資料同步到 AAD,其功能較完整(例如:Password Passthrough AUthentication、LDAP Attribute 客製處理... 等等),能符合大型組織的複雜需求。

Azure AD Connect Cloud Sync 則是新推出的工具,不需地端安裝獨立服務,靠在 DC 安裝輕量級 Cloud Provision Agent (需開防火牆 80/443/8080 以便將資料上傳到 AAD),相對簡單輕巧易用,但功能較少及 AD 物件數量上限較低,適合較單純的應用情境。二者功能詳細比較可參考這裡


表格來源

Cloud Sync 預估會是未來的主流,但基於我已經裝好 AD FS,這篇會實測 Azure AD Connect 搭 AD FS 把實驗做完。

若決定使用 Azure AD Connect 整合地端 AD,要先決定 AAD 登入時的密碼驗證方式,共有四種選擇

  1. Password Hash Synchronization
    使用者密碼會以密碼雜湊的形式同步處理至 Azure AD,驗證在雲端進行
  2. Pass-Through Authentiation
    使用者密碼會傳遞至地端 AD DC 進行驗證
  3. 與 AD FS 同盟
    同前一篇 ASP.NET Core 整合 AD FS 的展示,在登入過程導向 AD FS 登入畫面
  4. 與 PinFederate 同盟
    使用者會重新導向至其內部部署 PingFederate 執行個體以進行登入

第一種做法會將 Password Hash 上傳到公司外部,第二種做法對開放外部直接接觸 DC,這部分風險端看企業是否可接受。而第三種做法一般會再架設 WAP (Web Application Proxy 放在 DMZ 當中介,將 AD FS 保護在內網提高安全性。AD FS 跟 DC 一樣屬於企業存取模型中 Tier 0 等級軍事重地,需比照 DC 採高規格防護。參考:保護 Active Directory 同盟服務的最佳做法

Azure AD Connect 有分快速安裝(Express)及自訂安裝(Customize),如果是單一 Forest 並採用密碼雜湊同步,用快速安裝即可。我計劃測試 AD FS 同盟模式,故要選自訂安裝。參考安裝說明,若一切順利,安裝設定後應可看到地端 AD 帳號被同步到 Azure AD:

AD 帳號同步到 AAD 後,照例寫個 ASP.NET Core 網頁整合 Azure AD 結束這回合。

跟隨主流相對輕鬆,有現成的 ASP.NET Core 透過 Azure AD 登入公司 AD 帳號範例程式,照著說明文件設定,修改 appSettings.json 的 Domain、TenantId、ClientId,實驗就做完了!

操作展示
註:密碼驗證方式我選擇 AD FS 同盟,過程會導向 AD FS 登入畫面驗完密碼再回到 AAD 的登入流程。

Notes about using Azure AD Connect to sync premises AD users to Azure AD and signing in ASP.NET Core with Azure AD.


Comments

# by Alex

Microsoft Entra ID https://learn.microsoft.com/zh-tw/azure/active-directory/hybrid/connect/how-to-connect-install-prerequisites 如果只一台 看來是要先建 後拆 ~~ 原機升級 ~~ 服務中斷的影響 ~~

Post a comment


27 - 20 =