2019年4月19日 星期五

SPN和Kerberos委派

在 Windows環境中設定受管理的服務帳戶(Managed Service Accounts, MSAs 或 Group MSAs)時, SPN(Service Principal Name)與 Kerberos委派(Kerberos Delegation)是兩個非常重要的概念, 尤其與 Kerberos驗證機制密切相關:

服務主體名稱(Service Principal Name, SPN):
SPN是一個唯一識別某個服務執行實體(例如執行 SQL Server的帳戶)的名稱, 供 Kerberos驗證時使用
。用途:
--Kerberos使用 SPN來識別網路上的服務
--當用戶端要透過 Kerberos驗證連線某服務時, 系統會使用 SPN查詢服務的 Kerberos票證(service ticket)w-studio.idv.tw
--若 SPN設定錯誤(重複、遺失), Kerberos驗證將失敗, 退回 NTLM
。與 MSA的關係:
--當建立或設定 MSA/gMSA 來執行服務(如 IIS、SQL Server), 你需要為它註冊正確的 SPN, 否則 Kerberos無法運作

Kerberos委派(Kerberos Delegation):
Kerberos委派允許一個服務(通常是前端應用程式)代表用戶呼叫另一個後端服務(例如資料庫)仍保持用戶的身分
。使用場景:
--用戶透過前端 Web應用程式登入(如 IIS應用程式), 此應用程式需要以使用者身分連到 SQL Server
--IIS使用 MSA/gMSA帳戶執行, 但要能代表用戶連接 SQL, 因此需啟用委派
。三種委派模式:
--Unconstrained Delegation: 可將用戶身份票證轉交給任何服務, 不安全, 除非強控環境
--Constrained Delegation: 僅允許指定服務接收使用者票證, 常用且建議使用
--Resource-based Constrained Delegation (RBCD): 設定在目標服務端, 允許指定來源代表用戶, 更彈性, 支援跨網域
。與 MSA的關係:
--若服務帳戶使用 gMSA並需實作委派功能(例如 IIS需代表使用者呼叫 SQL), 就需要設定委派
--可以透過 AD使用者和電腦, 帳戶內容中的「委派」設定, 或使用 PowerShell/ADSI

沒有留言:

張貼留言