開發人員常見的挑戰是管理用來保護服務間安全通訊的祕密、認證、憑證和金鑰。 手動處理秘密和憑證是安全性問題和中斷的已知來源。 受控識別會排除開發人員管理這些認證的需求。 應用程式可以使用受控識別來取得 Microsoft Entra 權杖,而不需要管理任何認證。
什麼是受控識別?
概括而言,有兩種類型的身分識別:人類和機器/非人類身分識別。 計算機/非人為身分識別是由裝置和工作負載身分識別所組成。 在 Microsoft Entra 中,工作負載身分識別是應用程式、服務主體和受控識別。 如需工作負載身分識別的詳細資訊,請參閱 工作負載身分識別。
受控識別是一種身分識別,可指派給 Azure 計算資源(虛擬機(VM)、虛擬機擴展集(VMSS)、Service Fabric 叢集、Azure Kubernetes 叢集或 Azure 所支援的任何應用程式裝載平臺。 在計算資源上指派受控識別之後,即可直接或間接獲得授權,以存取下游相依性資源,例如記憶體帳戶、SQL 資料庫、CosmosDB 等等。 受控識別會取代存取金鑰或密碼等秘密。 此外,受控識別可以取代服務對服務相依性的憑證或其他形式的驗證。
下列影片說明如何使用受控識別:
以下為使用受控識別的一些優點:
- 不需要管理認證。 你甚至無法存取任何權限。
- 您可以使用受控識別,驗證支援 Microsoft Entra 驗證的任何資源 (包括您自己的應用程式)。
- 不需任何額外成本,即可使用受控識別。
受控識別類型
管理式身分識別有兩種:
系統指派。 某些 Azure 資源 (例如虛擬機器) 可讓您直接在資源上啟用受控識別。 當您啟用系統指派的受控識別時:
- 在 Microsoft Entra ID 中建立了一個特殊類型服務主體,用於該身分識別。 服務主體會與該 Azure 資源的生命週期緊密連結。 刪除 Azure 資源時,Azure 會自動為您刪除服務主體。
- 根據設計,只有該 Azure 資源可以使用此身分識別,向 Microsoft Entra ID 請求權杖。
- 您可以授權受控識別存取一或多個服務。
- 系統指派的服務主體名稱一律與其建立的 Azure 資源名稱相同。 對於部署插槽,其系統指派的受控識別名稱為
<app-name>/slots/<slot-name>
。
使用者指派。 您也可以建立受控身分識別作為獨立 Azure 資源。 您可以建立使用者指派的受控識別,並將其指派給一或多個 Azure 資源。 啟用使用者指派的受控識別時:
- 在 Microsoft Entra ID 中建立了一個特殊類型服務主體,用於該身分識別。 服務主體帳戶與使用它的資源是分開管理的。
- 使用者指派的受控識別可供多個資源使用。
- 您可以授權受控識別存取一或多個服務。
使用者指派的受控識別是針對Microsoft服務的建議受控識別類型,可獨立於計算布建,而且可以指派給多個計算資源。
支援系統自動指派之受管理識別的資源可讓您:
- 在資源層級啟用或停用受控識別。
- 使用以角色為基礎的存取控制 (RBAC) 來授與權限。
- 在 Azure 活動記錄中,檢視建立、讀取、更新及刪除 (CRUD) 作業。
- 在 Microsoft Entra ID 登入記錄中檢視登入活動。
如果您改為選擇使用者指派的受控識別:
- 您可以建立、讀取、更新和刪除身分識別。
- 您可以使用 RBAC 角色指派來授與權限。
- 使用者指派的受控識別可用於多個資源。
- 您可以在 Azure 活動記錄中查看可供檢閱的 CRUD 作業。
- 在 Microsoft Entra ID 登入記錄中檢視登入活動。
您可以使用 Azure Resource Manager 範本、Azure 入口網站、Azure CLI、PowerShell 和 REST API 來執行對受控識別的作業。
系統指派和使用者指派的受控識別之間的差異
屬性 | 系統分配的受控身分識別 | 使用者指派的受管理身分識別 |
---|---|---|
創造 | 建立為 Azure 資源 (例如 Azure 虛擬機器或 Azure App Service) 的一部分。 | 這是作為獨立的 Azure 資源創建的。 |
生命週期 | 與用來建立受控識別的 Azure 資源共用生命週期。 當父資源刪除時,受管理的身分也會一併刪除。 |
獨立的生命週期。 必須明確刪除。 |
在 Azure 資源之間共用 | 無法共用。 它只能與單一 Azure 資源相關聯。 |
可以共用。 使用者指派的同一個受控識別可與多個 Azure 資源相關聯。 |
常見使用案例 | 包含在單一 Azure 資源內的工作負載。 需要獨立識別的工作負載。 例如,在單一虛擬機器上執行的應用程式。 |
在多個資源上執行且可以共用單一身份的工作負載。 需要預先授權給安全資源的工作負載,作為配置流程的一部分。 資源回收頻率高、但權限應保持一致的工作負載。 例如,有多個虛擬機器需要存取相同資源的工作負載。 |
我該如何使用 Azure 資源的受控識別?
您可以遵循下列步驟來使用受控識別:
- 在 Azure 中建立一個受控識別。 您可以選擇系統指派的受控識別或使用者指派的受控識別。
- 使用使用者指派的受控識別時,您要將該受控識別指派給「來源」Azure 資源 (例如虛擬機器、Azure 邏輯應用程式或 Azure Web 應用程式)。
- 授權受管理的身份可以存取「目標」服務。
- 使用該受控識別來存取資源。 在此步驟中,您可以使用 Azure SDK 搭配 Azure.Identity 程式庫。 某些「來源」資源會提供連接器,這些連接器知道如何使用受控識別來進行連線。 在這種情況下,您應使用該身分識別作為「來源」資源的一個特徵。
哪些 Azure 服務支援此功能?
適用於 Azure 資源的受控識別,可用來向支援 Microsoft Entra 驗證的服務進行驗證。 如需支援的 Azure 服務清單,請參閱支援 Azure 資源的受控識別的服務。
使用受控識別
受控身份可以直接使用或用作 Microsoft Entra ID 應用程式的聯邦身份認證。
使用受控識別所涉及的步驟如下:
- 在 Azure 中建立一個受控識別。 您可以選擇系統指派的受控識別或使用者指派的受控識別。 使用使用者指派的受控識別時,您會將受控識別指派給來源 Azure 資源,例如虛擬機、Azure 邏輯應用程式或 Azure Web 應用程式。
- 授權受控識別存取目標服務。
- 使用該受控識別來存取資源。 在此步驟中,您可以使用任何 用戶端連結庫。 某些來源資源提供已知如何使用受控身份進行連線的連接器。 在此情況下,您會使用身分識別做為該來源資源的一項功能。
直接使用受控識別
在 Azure 計算資源上執行的服務程式代碼會使用 Microsoft 驗證連結庫 (MSAL) 或 Azure.Identity SDK,從受控識別支援的 Entra ID 擷取受控識別令牌。 此令牌擷取不需要任何秘密,而且會根據程式代碼執行的環境自動進行驗證。 只要受控識別獲得授權,服務程序代碼就可以存取支援 Entra ID 驗證的下游相依性。
例如,您可以使用 Azure 虛擬機 (VM) 作為 Azure 計算。 然後,您可以建立使用者指派的受控識別,並將它指派給 VM。 在 VM 介面上執行的工作負載與 Azure.Identity (或 MSAL) 和 Azure 儲存體客戶端 SDK 互通,以存取儲存帳戶。 使用者指派的受控識別有權存取記憶體帳戶。
在 Entra ID 應用程式中使用受控識別作為同盟身分識別憑證 (FIC)
工作負載身分識別同盟可讓您在 Entra ID 應用程式上使用受控識別作為認證,就像憑證或密碼一樣。 每當需要 Entra ID 應用程式時,這是建議的免憑證方式。 在 Entra ID 應用程式上使用受控識別作為 FIC 時,限制為 20 個 FIC。
作為 Entra ID 應用程式的工作負載可以託管在任何具備受管理身分識別的 Azure 計算環境上。 工作負載會使用受控身分,透過工作負載身分識別聯邦取得可用於交換 Entra ID 應用程式令牌的令牌。 此功能也稱為受控識別為 FIC(同盟身分識別認證)。 如需詳細資訊,請參閱 設定應用程式以信任受控識別。
下一步
- 開發人員簡介和指導方針
- 使用虛擬機系統指派的受管識別來存取資源管理器
- 如何使用 App Service 和 Azure Functions 的受控身分識別
- 如何搭配 Azure 容器執行個體使用受控識別
- 實作 Microsoft Azure 資源的受控識別
- 使用工作負載識別聯盟以管理身分識別來存取受 Microsoft Entra 保護的資源,而不需要管理密鑰