保護 Microsoft Entra 識別碼中的服務主體

Microsoft Entra 服務主體是租使用者或目錄中應用程式物件的本機標記法。 這是應用程式實例的身分識別。 服務主體會定義應用程式存取權,以及應用程式存取的資源。 服務主體會在每個使用應用程式的租用戶中建立,並參考全域唯一的應用程式物件。 租使用者會保護服務主體登入和資源的存取權。

深入瞭解: Microsoft Entra ID 中的應用程式和服務主體物件

租使用者服務主體關聯性

單一租使用者應用程式在其主租使用者中有一個服務主體。 多租使用者 Web 應用程式或 API 需要每個租使用者中的服務主體。 當來自該租使用者的使用者同意使用應用程式或 API 時,就會建立服務主體。 此同意會在多租使用者應用程式與其相關聯的服務主體之間建立一對多關聯性。

多租使用者應用程式位於租使用者中,且在其他租使用者中有實例。 大部分的軟體即服務 (SaaS) 應用程式都可容納多租使用者。 在單一和多租使用者案例中,使用服務主體來確保應用程式及其使用者所需的安全性狀態。

ApplicationID 和 ObjectID

應用程式實例有兩個屬性:ApplicationID (或 ClientID) 和 ObjectID。

注意

當在驗證工作中參考應用程式時,會交換使用應用程式和 服務主體 的詞彙 。 不過,它們是 Microsoft Entra ID 中應用程式的兩種標記法。

ApplicationID 代表全域應用程式,而且跨租使用者的應用程式實例相同。 ObjectID 是應用程式物件的唯一值。 如同使用者、群組和其他資源,ObjectID 有助於識別 Microsoft Entra 識別碼中的應用程式實例。

若要深入瞭解,請參閱 Microsoft Entra ID 中的應用程式和服務主體關聯性

建立應用程式及其服務主體物件

您可以使用下列專案,在租使用者中建立應用程式及其服務主體物件 (ObjectID) :

  • Azure PowerShell
  • Microsoft Graph PowerShell
  • Azure 命令列介面 (Azure CLI)
  • Microsoft Graph API
  • Azure 入口網站
  • 其他工具

Screenshot of Application or Client ID and Object ID on the New App page.

服務主體驗證

使用服務主體時,有兩種驗證機制:用戶端憑證和用戶端密碼。

Screenshot of Certificates and Client secrets under New App, Certificates and secrets.

因為憑證更安全,因此建議您盡可能使用這些憑證。 不同于用戶端密碼,不小心無法將用戶端憑證內嵌在程式碼中。 可能的話,請使用 Azure 金鑰保存庫進行憑證和秘密管理,以使用受硬體安全性模組保護的金鑰來加密資產:

  • 驗證金鑰
  • 儲存體帳戶金鑰
  • 資料加密金鑰
  • .pfx 檔案
  • 密碼

如需 Azure 金鑰保存庫以及如何將其用於憑證和秘密管理的詳細資訊,請參閱:

挑戰和緩和措施

使用服務主體時,請使用下表來比對挑戰和風險降低。

挑戰 風險降低
指派給特殊許可權角色之服務主體的存取權檢閱 這項功能處於預覽狀態
服務主體存取權檢閱 使用 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

深入了解:

下一步

深入瞭解服務主體:

保護服務帳戶:

條件式存取:

使用條件式存取來封鎖來自不受信任位置的服務主體。

請參閱建立 以位置為基礎的條件式存取原則