分享方式:


確保 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 (英文)

深入了解:

下一步

深入了解服務主體:

保護服務帳戶:

條件式存取:

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

請參閱建立位置型條件式存取原則 (部分機器翻譯)