分享方式:


Azure 容器應用程式中的受控身分識別

Microsoft Entra ID 的受控識別可讓您的容器應用程式輕鬆存取其他受 Microsoft Entra 保護的資源。 如需有關 Microsoft Entra ID 受控身分識別的詳細資訊,請參閱適用於 Azure 資源的受控識別 (部分機器翻譯)。

您的容器應用程式可以被授與兩種類型的識別:

  • 系統指派的身分識別會繫結至您的容器應用程式,如果您的應用程式已刪除,則將隨之刪除。 應用程式只能有一個系統指派的身分識別。
  • 使用者指派的身分識別是獨立的 Azure 資源,您可以指派給容器應用程式和其他資源。 容器應用程式可以具有多個使用者指派的識別。 使用者指派的身分識別存在,直到您刪除它們為止。

為什麼要使用受控識別?

您可以使用執行中容器應用程式中的受控身分識別,向任何支援 Microsoft Entra 驗證的服務進行驗證。

使用受控識別:

  • 您的應用程式會使用受控識別來連線到資源。 您不需要在您的容器應用程式中管理認證。
  • 您可以使用角色型存取控制,將特定的許可權授與給受控識別。
  • 系統指派的識別會自動建立和管理。 當您的容器應用程式被刪除時,它們也會被刪除。
  • 您可以新增和刪除使用者指派的識別,以及將其指派給多個資源。 它們與您容器應用程式的生命周期無關。
  • 您可以使用受控識別向 私人 Azure Container Registry 進行驗證,而不需要使用者名稱和密碼,即可提取容器應用程式的容器。
  • 您可以使用 受控識別,透過 Dapr 元件建立已啟用 Dapr 的應用程式連線

常見使用案例

系統指派的識別最適合下列類型的工作負載:

  • 包含在單一資源內
  • 需要獨立的識別

使用者指派的識別非常適合下列類型的工作負載:

  • 在多個資源上執行且可共用單一識別
  • 需要對安全資源進行預先授權

限制

  • 不支援調整規則中的受控識別。 您必須在調整規則的 中包含 secretRef 連接字串 或索引鍵。
  • Init 容器無法存取受控識別。

設定受控識別

您可以透過下列方式來設定您的受控識別:

  • Azure 入口網站
  • Azure CLI
  • Azure Resource Manager (ARM) 範本

在執行中的容器應用程式上新增、刪除或修改受控識別時,應用程式不會自動重新啟動,也不會建立新的修訂版本。

注意

當將受控身分識別新增至 2022 年 4 月 11 日之前部署的容器應用程式時,您必須建立新的修訂版本。

新增系統指派的身分識別

  1. 前往 Azure 入口網站的容器應用程式。

  2. 從 [ 設定] 群組中,選取 [ 身分識別]。

  3. 在 [系統指派] 索引標籤內,將 [狀態] 切換為 [開啟]

  4. 選取 [儲存]。

系統指派身分識別的螢幕快照。

新增使用者指派的身分識別

透過使用者指派的識別來設定容器應用程式時會要求您先建立識別,然後再將其資源識別碼新增至您的容器應用程式的組態。 您可透過 Azure 入口網站或 Azure CLI 來建立使用者指派的身分識別。 如需建立和管理使用者指派的身分識別相關資訊,請參閱管理使用者指派的受控身分識別

首先,您必須建立使用者指派的身分識別資源。

  1. 根據管理使用者指派的受控身分識別中找到的步驟,建立使用者指派的受控身分識別資源。

  2. 前往 Azure 入口網站的容器應用程式。

  3. 從 [ 設定] 群組中,選取 [ 身分識別]。

  4. 在 [使用者指派] 索引標籤內,選取 [新增]。

  5. 搜尋並選取您稍早建立的身分識別。

  6. 選取 [新增]。

使用者指派身分識別的螢幕快照。

設定目標資源

針對某些資源,您必須為應用程式的受控識別設定角色指派,以授與存取權。 否則,即使您針對該身分識別使用有效的令牌,仍會拒絕從您的應用程式呼叫服務,例如 Azure 金鑰保存庫 和 Azure SQL 資料庫。 若要深入了解 Azure 角色型存取控制 (Azure RBAC),請參閱什麼是 RBAC?。 若要深入瞭解哪些資源支援 Microsoft Entra 權杖,請參閱支援 Microsoft Entra 驗證的 Azure 服務

重要

受控身分識別的後端服務會將每個資源的 URI 快取保留大約 24 小時。 如果您更新特定目標資源的存取原則,並立即擷取該資源的權杖,則可以繼續取得具有過期權限的快取權杖,直到該權杖到期為止。 不支持強制令牌重新整理。

以應用程式程式碼連線至 Azure 服務

透過受控身分識別,應用程式可以取得權杖來存取使用 Microsoft Entra ID 的 Azure 資源,例如 Azure SQL Database、Azure Key Vault 和 Azure 儲存體。 這些權杖代表存取資源的應用程式,而不是任何特定的應用程式使用者。

容器應用程式提供可內部存取的 REST 端點來擷取權杖。 REST 端點可從具有標準 HTTP 要求的應用程式內取得,您可以使用慣用語言以一般 HTTP GET 用戶端傳送。 針對 .NET、JavaScript、JAVA 和 Python,Azure 身分識別用戶端程式庫會在此 REST 端點上提供抽象概念。 您可以將認證物件新增至服務特定的用戶端,以連線到其他 Azure 服務。

注意

使用 Azure 身分識別用戶端連結庫時,您必須明確指定使用者指派的受控識別用戶端識別碼。

注意

將 Azure SQL 資料來源與 Entity Framework Core 連線時,請考慮使用 Microsoft.Data.SqlClient,以提供受控身分識別連線的特殊連接字串。

針對 .NET 應用程式,使用受控身分識別的最簡單方式是透過適用於 .NET 的 Azure 身分識別用戶端程式庫。 請參閱下列資源以了解詳細資訊:

連結的範例會使用 DefaultAzureCredential。 此物件在大部分案例中都有效,因為相同模式適用於 Azure(使用受控識別)和本機電腦上(不含受控識別)。

檢視受控身分識別

您可以使用下列 Azure CLI 命令來顯示系統指派和使用者指派的受控身分識別。 輸出會針對指派給容器應用程式的所有受控識別,顯示受控識別的類型、租用戶識別碼和主體識別碼。

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

移除受控識別

當您移除系統指派的身分識別時,便會從 Microsoft Entra ID 中刪除。 刪除容器應用程式資源本身時,系統指派的身分識別也會從 Microsoft Entra ID 自動移除。 從容器應用程式移除使用者指派的受控識別並不會從 Microsoft Entra ID 中移除。

  1. 在應用程式頁面的左側瀏覽中,向下捲動至 [設定] 群組。

  2. 選取 [身分識別]。 接著依據身分識別類型,遵循步驟:

    • 系統指派的身分識別:在 [系統指派] 索引標籤內,將 [狀態] 切換為 [關閉]。 選取 [儲存]。
    • 使用者指派的身分識別:選取 [使用者指派] 索引標籤,選取身分識別的核取方塊,然後選取 [移除]。 選取以確認。

下一步