搭配 Service Fabric 使用 Azure 的受控身分識別
建立雲端應用程式時,常見的挑戰是如何安全地管理程式碼中的認證,以驗證各種服務,而不需要將其本地儲存在開發人員工作站或原始檔控制中。 適用於 Azure 的受控識別可針對 Microsoft Entra ID 中的所有資源解決此問題,方法是在 Microsoft Entra ID 內為這些資源提供自動受控的身分識別。 您可以使用服務的身分識別來完成任何支援 Microsoft Entra 驗證的服務驗證 (包括 Key Vault),而不需要在您程式碼中儲存的任何認證。
Azure 訂用帳戶的 Microsoft Entra ID 可免費使用適用於 Azure 資源的受控識別。 沒有額外費用。
注意
先前稱為受控服務識別 (MSI) 的服務,其新名稱為「Azure 受控識別」。
概念
適用於 Azure 的受控識別會以數個重要概念為基礎:
用戶端識別碼 - Microsoft Entra ID 所產生的唯一識別碼,會在其初始佈建期間繫結至應用程式和服務主體 (也請參閱應用程式 (用戶端) 識別碼。)
主體識別碼 - 適用於您受控識別之服務主體物件的物件識別碼,可用來將角色型存取授與 Azure 資源。
服務主體 - Microsoft Entra 物件,代表給定租用戶中 Microsoft Entra 應用程式的投影 (也請參閱服務主體。)
受控身分識別有兩種:
- 系統指派的受控識別可直接在 Azure 服務執行個體上啟用。 系統指派的身分識別生命週期,對已啟用該身分識別的 Azure 服務執行個體來說是唯一的。
- 使用者指派的受控識別會以獨立 Azure 資源的形式建立。 身分識別可以指派給一或多個 Azure 服務執行個體,並與這些執行個體的生命週期分開管理。
若要進一步瞭解受控識別類型之間的差異,請參閱適用於 Azure 資源的受控識別如何運作?。
Service Fabric 應用程式的支援案例
只有 Azure 部署的 Service Fabric 叢集支援 Service Fabric 的受控識別,且僅適用於部署為 Azure 資源的應用程式。 未部署為 Azure 資源的應用程式無法指派身分識別。 在概念上,Azure Service Fabric 叢集中受控識別的支援是由兩個階段所組成:
將一或多個受控識別指派給應用程式資源;應用程式可能會分別指派給單一系統指派的身分識別,以及/或最多 32 個使用者指派的身分識別。
在應用程式的定義中,將指派給應用程式的其中一個身分識別對應至組成應用程式的任何個別服務。
應用程式的系統指派身分識別對該應用程式而言是唯一的;使用者指派的身分識別是可指派給多個應用程式的獨立資源。 在應用程式中,單一身分識別 (是否是系統指派或使用者指派) 指派給應用程式的多個服務,但只能為每個個別服務指派一個身分識別。 最後,必須明確地為服務指派身分識別,才能存取這項功能。 實際上,將應用程式的身分識別對應至其組成服務,可允許應用程式內隔離,而服務可能只會使用與其對應的身分識別。
這項功能支援下列情節:
使用一或多個服務和一或多個指派的身分識別來部署新的應用程式
將一或多個受控識別指派給現有 (Azure 部署的) 應用程式,以便存取 Azure 資源
不支援或不建議使用下列情節。 此動作可能不會遭到封鎖,但可能導致您的應用程式中斷:
移除或變更指派給應用程式的身分識別。 如果您必須進行變更,請提交個別的部署,以新增身分識別指派,然後再移除先前指派的身分識別。 從現有的應用程式移除身分識別可能會產生非預期的效果,包括讓您的應用程式處於無法升級的狀態。 如果需要移除身分識別,則可放心一併刪除應用程式。 刪除應用程式會刪除與應用程式相關聯且系統指派的任何身分識別,並移除與指派給應用程式任何使用者指派身分識別的所有關聯。
Service Fabric 在已取代的 AzureServiceTokenProvider 中不支援受控識別。 請改用 Azure 身分識別 SDK,在 Service Fabric 中來使用受控識別