確保 Microsoft Entra ID 中的服務主體
Microsoft Entra 服務主體是租用戶或目錄中應用程式物件的本機表示法。 其為應用程式執行個體的身分識別。 服務主體會定義應用程式存取權,以及應用程式存取的資源。 服務主體會在每個使用應用程式的租用戶中建立,並參考全域唯一的應用程式物件。 租用戶會保護服務主體登入和資源存取權。
深入了解:Microsoft Entra ID 中的應用程式和服務主體物件
租用戶和服務主體之間的關聯性
單一租用戶應用程式在其主租用戶中有一個服務主體。 若是多租用戶 Web 應用程式或 API,則每個租用戶中都必須有一個服務主體。 當來自該租用戶的使用者同意使用應用程式或 API 時,就會建立服務主體。 此同意會在多租用戶應用程式與其相關聯的服務主體之間,建立一對多關聯性。
多租用戶應用程式位於租用戶中,且在其他租用戶中有執行個體。 大部分的軟體即服務 (SaaS) 應用程式都可容納多租用戶。 在單一和多租用戶案例中,使用服務主體來確保應用程式及其使用者所需的安全性態勢。
ApplicationID 和 ObjectID
應用程式執行個體有兩個屬性:ApplicationID (或 ClientID) 和 ObjectID。
注意
在提到驗證工作中的應用程式時,我們會交替使用應用程式和服務主體。 不過,這兩個名詞在 Microsoft Entra ID 中是兩種應用程式的表示法。
ApplicationID 代表全域應用程式,且對於跨租用戶的應用程式執行個體來說都相同。 ObjectID 是應用程式物件的唯一值。 如同使用者、群組和其他資源,ObjectID 有助於識別 Microsoft Entra ID 中的應用程式執行個體。
若要深入了解,請參閱 Microsoft Entra ID 中的應用程式和服務主體關聯性
建立應用程式及其服務主體物件
您可以使用下列項目,在租用戶中建立應用程式及其服務主體物件 (ObjectID):
- Azure PowerShell
- Microsoft Graph/PowerShell
- Azure 命令列介面 (Azure CLI)
- Microsoft Graph API
- Azure 入口網站
- 其他工具
服務主體驗證
使用服務主體時,有兩種驗證機制:用戶端憑證和用戶端密碼。
因為憑證更安全,因此建議您盡可能使用憑證。 不同於用戶端密碼,用戶端憑證不會意外內嵌至程式碼。 可能的話,請使用 Azure Key Vault 進行憑證和祕密管理,以使用受硬體安全模組保護的金鑰來將資產加密:
- 驗證金鑰
- 儲存體帳戶金鑰
- 資料加密金鑰
- .pfx 檔案
- 密碼
如需 Azure Key Vault 的詳細資訊,以及如何將其用於憑證和祕密管理,請參閱:
挑戰與緩和措施
使用服務主體時,請使用下表來比對挑戰和風險降低措施。
挑戰 | 風險降低 |
---|---|
針對指派給特殊權限角色的服務主體,進行存取權檢閱 | 這項功能為預覽狀態 |
服務主體存取權檢閱 | 使用 Azure 入口網站手動檢查資源的存取控制清單 |
權限過高的服務主體 | 當您建立自動化服務帳戶或服務主體時,請授與適用於該工作的權限。 評估服務主體以降低權限。 |
識別對服務主體認證或驗證方法的修改 | - 請參閱敏感性 作業報告活 頁簿 - 請參閱技術社群部落格文章, Microsoft Entra 活頁簿,以協助您評估Solorigate風險 |
尋找使用服務主體的帳戶
若要尋找帳戶,請使用服務主體搭配 Azure CLI 或 PowerShell 來執行下列命令。
- Azure CLI -
az ad sp list
- PowerShell -
Get-MgServicePrincipal -All:$true
如需詳細資訊,請參閱 Get-MgServicePrincipal (英文)
評估服務主體安全性
若要評定安全性,請評估權限和認證儲存體。 使用下表來協助減輕挑戰:
挑戰 | 風險降低 |
---|---|
偵測已同意多租用戶應用程式的使用者,並偵測對多租用戶應用程式的非法同意授與 | - 執行下列 PowerShell 以尋找多租用戶應用程式Get-MgServicePrincipal -All:$true | ? {$_.Tags -eq "WindowsAzureActiveDirectoryIntegratedApp"} - 停用使用者同意 - 針對選取的權限允許來自已驗證發行者的使用者同意 (建議) - 在使用者內容中加以設定 - 使用其權杖來觸發服務主體 |
在使用服務主體的指令碼中,使用硬式編碼的共用祕密 | 使用憑證 |
追蹤使用憑證或祕密的人員 | 使用 Microsoft Entra 登入記錄來監視服務主體登入 |
無法使用條件式存取來管理服務主體登入 | 使用 Microsoft Entra 登入記錄來監視登入 |
參與者是預設的 Azure 角色型存取控制 (Azure RBAC) 角色 | 評估需求並盡可能套用最低權限 |
深入了解:什麼是條件式存取?(部分機器翻譯)
從使用者帳戶移至服務主體
如果您要將 Azure 使用者帳戶作為服務主體,請評估您是否可以移至受控識別或服務主體。 如果您無法使用受控識別,請授與服務主體足夠的權限和範圍以執行必要的工作。 您可以註冊應用程式,或使用 PowerShell 來建立服務主體。
使用 Microsoft Graph 時,請檢查 API 文件。 請確定支援應用程式的權限類型。
請參閱建立 servicePrincipal (英文)
深入了解:
- 如何使用 App Service 和 Azure Functions 的受控身分識別
- 建立可存取資源的 Microsoft Entra 應用程式和服務主體 (部分機器翻譯)
- 使用 Azure PowerShell 建立含有憑證的服務主體
下一步
深入了解服務主體:
保護服務帳戶:
- 保護雲端式服務帳戶
- 在 Microsoft Entra ID 中保護受控識別 (部分機器翻譯)
- 控管 Microsoft Entra 服務帳戶
- 保護內部部署服務帳戶 (部分機器翻譯)
條件式存取:
使用條件式存取來封鎖來自未受信任位置的服務主體。
請參閱建立位置型條件式存取原則 (部分機器翻譯)