在 Azure Logic Apps 中使用受控識別來驗證對 Azure 資源的存取和連線

適用於:Azure Logic Apps (使用量 + 標準)

如果您想要避免提供、儲存和管理認證、秘密或 Microsoft Entra 令牌,您可以使用受控識別來驗證邏輯應用程式工作流程對 Microsoft Entra 受保護資源的存取或連線。 在 Azure Logic Apps 中,當您必須驗證受 Microsoft Entra ID 保護的資源存取權時,某些連接器作業支援使用受控識別。 Azure 會管理此身分識別,並協助保護驗證資訊的安全,因此您不需要管理此敏感性資訊。 如需詳細資訊,請參閱什麼是 Azure 資源受控識別?

Azure Logic Apps 支援下列受控識別類型:

下列清單描述這些受控身分識別類型之間的一些差異:

  • 邏輯應用程式資源只能啟用並使用一個唯一的系統指派身分識別。

  • 邏輯應用程式資源可以在一組其他邏輯應用程式資源中共用相同的使用者指派身分識別。

本指南說明如何完成下列工作:

  • 為您的邏輯應用程式資源啟用和設定系統指派的身分識別。 本指南提供的範例示範如何使用身分識別進行驗證。

  • 建立和設定使用者指派的身分識別。 本指南說明如何使用 Azure 入口網站 或 Azure Resource Manager 範本 (ARM 範本) 建立此身分識別,以及如何使用身分識別進行驗證。 若為 Azure PowerShell、Azure CLI 和 Azure REST API,請參閱下列文件:

工具 文件
Azure PowerShell Create user-assigned identity
Azure CLI Create user-assigned identity
Azure REST API Create user-assigned identity

必要條件

  • Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶。 受控識別與您需要指派存取權的目標 Azure 資源必須使用相同的 Azure 訂用帳戶。

  • 您想要存取的目標 Azure 資源。 在此資源上,您必須新增受控識別的必要角色,才能代表邏輯應用程式或聯機存取該資源。 若要將角色新增至受控識別,您需要 Microsoft Entra 系統管理員許可權 ,才能將角色指派給對應 Microsoft Entra 租使用者中的身分識別。

  • 您想要使用支援受控身分識別之觸發程序或動作的邏輯應用程式資源和工作流程。

取用與標準邏輯應用程式之間的受控識別差異

根據您的邏輯應用程式資源類型,您可以啟用系統指派的身分識別、使用者指派的身分識別,或同時啟用兩者:

邏輯應用程式 Environment 受控識別支援
耗用 - 多租用戶 Azure Logic Apps

- 整合服務環境 (ISE)
- 您可以在邏輯應用程式上啟用系統指派的身分識別或使用者指派的身分識別,但不能同時啟用這兩者。

- 您可以在邏輯應用程式資源層級和連線層級使用受控識別。

- 如果您建立並啟用使用者指派的身分識別,邏輯應用程式一次只能有 一個 使用者指派的身分識別。
Standard - 單一租用戶 Azure Logic Apps

- App Service 環境 v3 (ASEv3)

- 已啟用 Azure Arc 的 Logic Apps
- 您可以同時啟用系統指派的身分識別 (預設予以啟用) 和使用者指派的身分識別。 您也可以將多個使用者指派的身分識別新增至邏輯應用程式。 不過,邏輯應用程式一次只能使用一個受控識別。

- 您可以在邏輯應用程式資源層級和連線層級使用受控識別。

如需 Azure Logic Apps 中受控身分識別限制的詳細資訊,請參閱邏輯應用程式的受控身分識別限制。 如需使用量和標準邏輯應用程式資源類型和環境的詳細資訊,請參閱下列文件:

您可以使用受控識別的位置

在 Azure Logic Apps 中,只有支援 OAuth 搭配 Microsoft Entra ID 的特定內建和受控連接器作業,才能使用受控識別進行驗證。 下表僅提供範例選取項目。 如需更完整的清單,請參閱下列檔:

針對取用邏輯應用程式工作流程,下表列出支援受控識別驗證的範例連接器:

連接器類型 支援的連接器
內建 - Azure API 管理
- Azure App Service
- Azure Functions
- HTTP
- HTTP + Webhook

注意:HTTP 作業可以使用系統指派的身分識別來驗證 Azure 防火牆後方的 Azure 儲存體帳戶連線。 不過,HTTP 作業不支援使用者指派的身分識別來驗證相同的連線。
受控 - Azure App Service
- Azure 自動化
- Azure Blob 儲存體
- Azure 容器執行個體
- Azure Cosmos DB
- Azure 資料總管
- Azure Data Factory
- Azure Data Lake
- Azure Digital Twins
- Azure 事件方格
- Azure 事件中樞
- Azure IoT Central V2
- Azure Key Vault
-Azure 監視器記錄
- Azure 佇列
- Azure Resource Manager
- Azure 服務匯流排
- Azure Sentinel
- Azure 表格儲存體
- Azure VM
- SQL Server

在 Azure 入口網站中啟用系統指派的身分識別

在取用邏輯應用程式資源上,您必須手動啟用系統指派的身分識別。

  1. Azure 入口網站中,開啟您的使用量邏輯應用程式資源。

  2. 在邏輯應用程式功能表的 [設定] 下,選取 [身分識別]

  3. 在 [身分識別] 頁面上的 [系統指派] 底下,選取 [開啟]> [儲存]。 Azure 提示您確認時,請選取 [是]

    此螢幕快照顯示 Azure 入口網站、取用邏輯應用程式、身分識別頁面和 [系統指派] 索引標籤,其中包含選取的選項 [開啟] 和 [儲存]。

    注意

    如果您收到錯誤,表示您只能有一個受控識別,則您的邏輯應用程式資源已與使用者指派的身分識別建立關聯。 在您可以新增系統指派的身分識別之前,您必須先從邏輯應用程式資源移除使用者指派的身分識別。

    您的邏輯應用程式資源現在可以使用系統指派的身分識別。 此身分識別會使用 Microsoft Entra ID 註冊,並以物件識別碼表示。

    此螢幕快照顯示系統指派身分識別的取用邏輯應用程式、身分識別頁面和對象識別碼。

    屬性 數值 Description
    物件 (主體) 識別碼 <identity-resource-ID> 代表 Microsoft Entra 租用戶中邏輯應用程式的系統指派身分識別的全域唯一識別碼 (GUID)。
  4. 現在請 遵循本指南稍後提供系統指派身分識別存取權 的步驟。

在 ARM 範本中啟用系統指派的身分識別

若要自動建立和部署邏輯應用程式資源,您可以使用 ARM 範本。 若要在範本中為邏輯應用程式資源啟用系統指派的身分識別,請將識別物件和類型子屬性新增至範本中的邏輯應用程式資源定義,例如:

{
   "apiVersion": "2016-06-01",
   "type": "Microsoft.logic/workflows",
   "name": "[variables('logicappName')]",
   "location": "[resourceGroup().location]",
   "identity": {
      "type": "SystemAssigned"
   },
   "properties": {},
   <...>
}

當 Azure 建立邏輯應用程式資源定義時, 識別 物件會取得下列其他屬性:

"identity": {
   "type": "SystemAssigned",
   "principalId": "<principal-ID>",
   "tenantId": "<Entra-tenant-ID>"
}
Property (JSON) Description
principalId <principal-ID> 受控識別服務主體物件的全域唯一識別碼 (GUID),代表 Microsoft Entra 租用戶中的邏輯應用程式。 此 GUID 有時會顯示為「物件標識碼」或 objectID
tenantId <Microsoft-Entra-ID-tenant-ID> 代表邏輯應用程式現在已是其成員的 Microsoft Entra 租用戶的全域唯一識別碼 (GUID)。 在 Microsoft Entra 租用戶中,服務主體會有與邏輯應用程式執行個體相同的名稱。

在 Azure 入口網站中建立使用者指派的識別

您必須先將該身分識別建立為個別的 Azure 資源,才能在取用邏輯應用程式資源或標準邏輯應用程式資源上啟用使用者指派的身分識別。

  1. [Azure 入口網站 搜尋方塊中,輸入受控識別。 從結果清單中,選取 [ 受控識別]。

    顯示 Azure 入口網站 的螢幕快照,其中包含名為受控識別的選取選項。

  2. 在 [ 受控識別 ] 頁面工具列上,選取 [ 建立]。

  3. 提供受控識別的相關資訊,並選取 [檢閱 + 建立],例如:

    顯示名為 [建立使用者指派受控識別] 頁面的螢幕快照,其中包含受控識別詳細數據。

    屬性 必填 Description
    訂用帳戶 Yes <Azure-訂閱-名稱> Azure 訂用帳戶名稱
    資源群組 Yes <Azure-資源-群組-名稱> Azure 資源群組名稱。 建立新的群組,或選取現有的群組。 此範例會建立名為 fabrikam-managed-identities-RG 的新群組。
    區域 Yes <Azure-region> 用來存放資源相關資訊的 Azure 區域。 此範例會使用「美國西部」
    名稱 Yes <user-assigned-identity-name> 要提供給使用者指派身分識別的名稱。 此範例會使用 Fabrikam-user-assigned-identity

    在 Azure 驗證資訊之後,Azure 會建立受控識別。 現在您可以將使用者指派的身分識別新增至邏輯應用程式資源。

將使用者指派的身分識別新增至 Azure 入口網站中的邏輯應用程式

  1. 在 Azure 入口網站中,開啟您的使用量邏輯應用程式資源。

  2. 在邏輯應用程式功能表的 [設定] 下,選取 [身分識別]

  3. 在 [ 身分 識別] 頁面上,選取 [ 使用者指派],然後選取 [ 新增]。

    顯示 [取用邏輯應用程式和身分識別] 頁面的螢幕快照,其中包含 [新增] 的選取選項。

  4. 在 [新增使用者指派的受控識別] 窗格上,遵循下列步驟:

    1. 從 [ 選取訂用帳戶 ] 列表中,選取您的 Azure 訂用帳戶。

    2. 從具有該訂用帳戶中全部受控識別的清單中,選取您想要的使用者指派身分識別。 若要篩選清單,請在 [使用者指派的受控識別] 搜尋方塊中,輸入身分識別或資源群組的名稱。

      此螢幕快照顯示取用邏輯應用程式和選取的使用者指派身分識別。

    3. 完成後,選取 [新增]

      注意

      如果您收到錯誤,表示您只能有一個受控識別,則您的邏輯應用程式已與系統指派的身分識別建立關聯。 在您新增使用者指派的身分識別之前,必須先停用系統指派的身分識別。

    邏輯應用程式現在與使用者指派的身分識別相關聯。

    此螢幕快照顯示具有相關聯使用者指派身分識別的取用邏輯應用程式。

  5. 現在遵循本指南後面的將資源的存取權給予身分識別的步驟

在 ARM 範本中建立使用者指派的身分識別

若要自動建立和部署邏輯應用程式資源,您可以使用 ARM 範本。 這些範本支援使用者指派的身分識別來進行驗證

在範本的資源區段中,邏輯應用程式的資源定義需要下列專案:

  • 將 type 屬性設定為 UserAssigned 的識別物件

  • 指定使用者指派資源與名稱的子 userAssignedIdentities 物件

此範例示範 HTTP PUT 要求具有非參數化 識別 物件的取用邏輯應用程式資源和工作流程定義。 對 PUT 要求和後續 GET 作業的回應也包含此 身分 識別物件:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {<template-parameters>},
   "resources": [
      {
         "apiVersion": "2016-06-01",
         "type": "Microsoft.logic/workflows",
         "name": "[variables('logicappName')]",
         "location": "[resourceGroup().location]",
         "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
               "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>": {}
            }
         },
         "properties": {
            "definition": {<logic-app-workflow-definition>}
         },
         "parameters": {},
         "dependsOn": []
      },
   ],
   "outputs": {}
}

如果您的範本也包含受控識別的資源定義,您可以將身分識別物件參數化。 下列範例示範子 userAssignedIdentities 物件如何參考您在範本的 variables 區段中定義的 userAssignedIdentityName 變數。 此變數會參考使用者指派的身分識別所用的資源識別碼。

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "Template_LogicAppName": {
         "type": "string"
      },
      "Template_UserAssignedIdentityName": {
         "type": "securestring"
      }
   },
   "variables": {
      "logicAppName": "[parameters(`Template_LogicAppName')]",
      "userAssignedIdentityName": "[parameters('Template_UserAssignedIdentityName')]"
   },
   "resources": [
      {
         "apiVersion": "2016-06-01",
         "type": "Microsoft.logic/workflows",
         "name": "[variables('logicAppName')]",
         "location": "[resourceGroup().location]",
         "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
               "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', variables('userAssignedIdentityName'))]": {}
            }
         },
         "properties": {
            "definition": {<logic-app-workflow-definition>}
         },
         "parameters": {},
         "dependsOn": [
            "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', variables('userAssignedIdentityName'))]"
         ]
      },
      {
         "apiVersion": "2018-11-30",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
         "name": "[parameters('Template_UserAssignedIdentityName')]",
         "location": "[resourceGroup().location]",
         "properties": {}
      }
  ]
}

授與資源的身分識別存取權

您必須先在想要使用身分識別的目標 Azure 資源上設定身分識別的存取權,才能使用邏輯應用程式的受控識別進行驗證。 您設定存取的方式會根據目標資源而有所不同。

注意

當受控識別可存取相同訂用帳戶中的 Azure 資源時,該身分識別只能存取該資源。 不過,在某些支援受控識別的觸發程序和動作中,您必須先選取包含目標資源的 Azure 資源群組。 如果身分識別在資源群組層級沒有存取權,則儘管有目標資源的存取權,仍不會列出該群組中的任何資源。

若要處理此行為,您也必須將資源群組 (而不只是資源) 的存取權給予身分識別。 同樣地,如果您必須先選取訂用帳戶,才能選取目標資源,則必須將訂用帳戶的存取權給予身分識別。

在某些情況下,您可能需要身分識別才能存取相關聯的資源。 例如,假設您有邏輯應用程式的受控識別,其需要存取權才能從工作流程更新該相同邏輯應用程式的應用程式設定。 您必須為該身分識別授與相關聯邏輯應用程式的存取權。

例如,若要使用受控識別存取 Azure Blob 儲存體帳戶,您必須使用 Azure 角色型存取控制 (Azure RBAC) 設定存取權,並將該身分識別的適當角色指派給儲存體帳戶。 本節中的步驟說明如何使用 Azure 入口網站Azure Resource Manager 範本 (ARM 範本) 來完成這項工作。 若為 Azure PowerShell、Azure CLI 和 Azure REST API,請參閱下列文件:

工具 文件
Azure PowerShell 新增角色指派
Azure CLI 新增角色指派
Azure REST API 新增角色指派

不過,若要使用受控識別來存取 Azure 金鑰保存庫,您必須為該身分識別建立您金鑰保存庫的存取原則,並為該金鑰保存庫上的該身分識別指派適當的權限。 本節稍後的步驟說明如何使用 Azure 入口網站來完成這項工作。 如需 Resource Manager 範本、PowerShell 和 Azure CLI,請參閱下列文件:

工具 文件
Azure Resource Manager 範本 (ARM 範本) 金鑰保存庫存取原則資源定義
Azure PowerShell 指派 Key Vault 存取原則
Azure CLI 指派 Key Vault 存取原則

使用 Azure 入口網站 指派角色型存取權給受控識別

若要使用受控識別進行驗證,有些 Azure 資源 (例如 Azure 儲存體帳戶) 要求您將該身分識別指派給具有目標資源適當權限的角色。 其他 Azure 資源 (例如 Azure 金鑰保存庫) 要求您建立存取原則,讓該身分識別具有目標資源的適當權限

  1. Azure 入口網站中,開啟您要在其中使用身分識別的資源。

  2. 在資源功能表上,選取 [存取控制 (IAM)]> [新增]> [新增角色指派]

    注意

    如果 [新增角色指派] 選項已停用,您就沒有指派角色的權限。 如需詳細資訊,請參閱 Microsoft Entra 內建角色

  3. 將必要的角色指派給受控識別。 在 [角色] 索引標籤上,指派角色,為您的身分識別提供目前資源的必要存取權。

    在此範例中,請指派名為儲存體 Blob 資料參與者的角色,其中包含 Azure 儲存體容器中 Blob 的寫入權限。 如需特定儲存體容器角色的詳細資訊,請參閱可存取 Azure 儲存體容器中 Blob 的角色

  4. 接下來,選擇您要指派角色的受控識別。 在 [指派存取權給] 之下,選取 [受控識別]>[新增成員]

  5. 根據您的受控識別類型,選取或提供下列值:

    類型 Azure 服務執行個體 訂用帳戶 member
    系統指派 邏輯應用程式 <Azure-訂閱-名稱> <your-logic-app-name>
    使用者指派 不適用 <Azure-訂閱-名稱> <your-user-assigned-identity-name>

    如需角色指派的詳細資訊,請參閱使用 Azure 入口網站指派角色

完成之後,您可以使用身分識別來 驗證支援受控識別的觸發程式和動作的存取權。

如需此工作的一般資訊,請參閱使用 Azure RBAC 將受控識別存取權指派給另一個資源

使用 Azure 入口網站 建立存取原則

若要使用受控識別進行驗證,有些 Azure 資源 (例如 Azure 金鑰保存庫) 要求您建立存取原則,讓該身分識別具有目標資源的適當權限。 其他 Azure 資源 (例如 Azure 儲存體帳戶) 要求您將該身分識別指派給具有目標資源適當權限的角色

  1. Azure 入口網站中,開啟您要在其中使用身分識別的目標資源。 此範例使用 Azure 金鑰保存庫作為目標資源。

  2. 在資源功能表上,選取 [ 存取原則>建立],這會開啟 [ 建立存取原則 ] 窗格。

    注意

    如果資源沒有 [存取原則] 選項,請嘗試改為指派角色指派

    顯示 Azure 入口網站 和金鑰保存庫範例的螢幕快照,其中包含名為 Access 原則的開啟窗格。

  3. 在 [權限] 索引標籤上,選取身分識別存取目標資源所需的必要權限。

    例如,若要將身分識別與 Azure 金鑰保存庫 受控連接器的清單秘密作業搭配使用,身分識別需要清單許可權。 因此,在 [秘密權限] 資料行中,選取 [列出]

    顯示 [許可權] 索引標籤的螢幕快照,其中包含選取的 [列表許可權]。

  4. 在您準備就緒後,選取 [下一步]。 在 [主體] 索引標籤上,尋找並選取受控識別,這是此範例中使用者指派的身分識別。

  5. 略過選擇性 [應用程式] 步驟,選取 [下一步],然後完成建立存取原則。

下一節說明如何使用受控識別搭配觸發程式或動作來驗證存取權。 此範例會繼續進行前一節中的步驟,其中您使用 RBAC 設定受控識別的存取權,且不會使用 Azure Key Vault 作為範例。 不過,使用受控識別進行驗證的一般步驟相同。

使用受控識別驗證存取權

啟用 邏輯應用程式資源的 受控識別,併為 該身分識別提供 Azure 目標資源或服務的存取權之後,您可以在支援受控識別的觸發程式和動作中使用 該身分識別。

重要

如果您有想要使用系統指派身分識別的Azure 函式,請先啟用 Azure Functions 的驗證功能

下列步驟示範如何使用受控識別搭配觸發程式或使用 Azure 入口網站 動作。 若要在觸發或動作的基礎 JSON 定義中指定受控識別,請參閱受控識別驗證

  1. Azure 入口網站中,開啟您的使用量邏輯應用程式資源。

  2. 如果您尚未這麼做,請新增支援受控識別的觸發或動作

    注意

    並非所有的連接器作業都支援讓您新增驗證類型。 如需詳細資訊,請參閱支援驗證的觸發程序和動作驗證類型

  3. 在您新增的觸發程序或動作上,遵循下列步驟:

    • 支援受控識別驗證的內建連接器作業

      這些步驟會繼續使用 HTTP 動作作為範例。

      1. 從 [ 進階參數 ] 列表中,如果屬性尚未出現,請新增 Authentication 屬性。

        顯示 [取用工作流程] 的螢幕快照,其中包含內建動作,並開啟名為 [進階參數] 的清單,並已選取 [驗證] 選項。

        現在, [驗證 ] 屬性和 [ 驗證類型 ] 列表都會出現在動作上。

        顯示 [進階參數] 區段的螢幕快照,其中包含已新增的 [驗證屬性] 和 [驗證類型] 清單。

      2. 從 [ 驗證類型] 清單中,選取 [ 受控識別]。

        顯示 [取用工作流程] 的螢幕快照,其中包含內建動作、開啟的 [驗證類型] 清單,以及受控識別的已選取選項。

        [驗證]段現在會顯示下列選項:

        • 您可以從中選取特定受控識別的受控識別清單

        • Audience 屬性會出現在特定觸發程式和動作上,以便您可以設定 Azure 目標資源或服務的資源識別碼。 否則,根據預設,[物件] 屬性會使用 https://management.azure.com/ 資源識別碼,也就是 Azure Resource Manager 的資源識別碼。

      3. 從 [ 受控識別 ] 清單中,選取您想要使用的身分識別,例如:

        顯示 [驗證類型] 清單和 [物件] 屬性之 [驗證] 區段的螢幕快照。

        注意

        默認選取的選項是 系統指派的受控識別,即使您未啟用任何受控識別也一樣。

        若要成功使用受控識別,您必須先在邏輯應用程式上啟用該身分識別。 在取用邏輯應用程式上,您可以擁有系統指派或使用者指派的受控識別,但不能同時擁有兩者。

      如需詳細資訊,請參閱範例:使用受控識別來驗證內建觸發程序或動作

    • 支援受控識別驗證的受控連接器作業

      1. 在 [建立 連線 ion] 窗格的 [驗證] 列表中,選取 [受控識別],例如:

        此螢幕快照顯示 Azure Resource Manager 動作的取用工作流程,以及受控識別的選取選項。

      2. 在下一個窗格的 [連線 ion Name] 中,提供用於連線的名稱。

      3. 針對驗證類型,根據您的受控連接器選擇下列其中一個選項:

        • 單一驗證:這些連接器僅支援一種驗證類型,在此案例中為受控識別。

          1. 從 [ 受控識別 ] 清單中,選取目前啟用的受控識別。

          2. 當您準備好時,請選取 [ 新建]。

        • 多重驗證:這些連接器支援多個驗證類型,但一次只能選取和使用一種類型。

          這些步驟會繼續使用 Azure Blob 儲存體 動作作為範例。

          1. 從 [ 驗證類型 ] 列表中,選取 [ Logic Apps 受控識別]。

            此螢幕快照顯示 Logic Apps 受控識別的取用工作流程、連線建立方塊和選取的選項。

          2. 當您準備好時,請選取 [ 新建]。

        如需詳細資訊,請參閱範例:使用受控識別來驗證受控連接器觸發程序或動作

範例:使用受控識別來驗證內建觸發程序或動作

內建 HTTP 觸發程序或動作可以使用您為邏輯應用程式資源啟用的系統指派身分識別。 一般來說,HTTP 觸發程序或動作會使用下列屬性來指定您想要存取的資源或實體:

屬性 必要 描述
方法 Yes 您想要執行之作業所使用的 HTTP 方法
URI Yes 用於存取目標 Azure 資源或實體的端點 URL。 URI 語法通常包含目標 Azure 資源或服務的資源識別碼。
標題 No 您需要包含在連出要求中的任何標題值,例如內容類型
查詢 No 您需要或想要包含在要求中的任何查詢參數。 例如,特定作業的查詢參數,或您想要執行之作業的 API 版本。
驗證 Yes 用來驗證 Azure 目標資源或服務存取權的驗證類型

在特定的範例中,假設您想要在先前設定身分識別存取權的 Azure 儲存體帳戶中,於 Blob 上執行快照集 Blob 作業。 不過,Azure Blob 儲存體連接器目前不提供這種操作。 相反地,您可以使用 HTTP 動作或其他 Blob 服務 REST API 作業來執行這項作業。

重要

若要使用 Azure Blob 儲存體 連接器和受控識別來存取防火牆後方的 Azure 記憶體帳戶,請確定您也已設定記憶體帳戶,但例外狀況是允許受信任 Microsoft 服務 存取。

若要執行 快照集 Blob 作業,HTTP 動作會指定下列屬性:

屬性 必要 範例值 描述
URI Yes https://<storage-account-name>/<folder-name>/{name} Azure 全域 (公用) 環境中 Azure Blob 儲存體檔案的資源識別碼會使用此語法
方法 Yes PUT 快照集 Blob 操作所使用的HTTP 方法
標題 適用於 Azure 儲存體 x-ms-blob-type = BlockBlob

x-ms-version = 2024-05-05

x-ms-date = formatDateTime(utcNow(),'r')
Azure 儲存體作業所需的 x-ms-blob-typex-ms-versionx-ms-date 標題值。

重要事項:在 Azure 儲存體的傳出 HTTP 觸發和動作要求中,標題需要您要執行的作業所用的 x-ms-version 屬性和 API 版本。 x-ms-date 必須是目前的日期。 否則,您的工作流程會失敗並出現 403 FORBIDDEN 錯誤。 若要取得所需格式的目前日期,您可以在範例值中使用運算式。

如需詳細資訊,請參閱下列文件:

- 要求標題 - 快照集 Blob
- Azure 儲存體服務的版本設定
查詢 僅適用於快照集 Blob 作業 comp = snapshot 此作業的查詢參數名稱和值。
  1. 在工作流程設計工具上,新增您想要的任何觸發程式,然後新增 HTTP 動作。

    下列範例顯示範例 HTTP 動作,包含用於快照集 Blob 作業的所有先前描述屬性值:

    此螢幕快照顯示已設定 Azure 入口網站、取用工作流程和 HTTP 動作,以存取資源。

  2. 在 HTTP 動作中,新增 Authentication 屬性。 從 [ 進階參數 ] 列表中,選取 [ 驗證]。

    此螢幕快照顯示 [使用 HTTP 動作的取用工作流程],並開啟 [進階參數] 清單,並已選取名為 Authentication 的屬性。

    [驗證]段現在會出現在您的 HTTP 動作中。

    注意

    並非所有的觸發和動作都支援讓您新增驗證類型。 如需詳細資訊,請參閱支援驗證的觸發程序和動作驗證類型

  3. 從 [ 驗證類型] 清單中,選取 [ 受控識別]。

    顯示 [取用工作流程]、[HTTP 動作] 和 [驗證類型] 屬性的螢幕快照,其中包含受控識別的選取選項。

  4. 從 [ 受控識別 ] 清單中,根據您的案例,從可用的選項中選取。

    • 如果您設定系統指派的身分識別,請選取 [系統指派的受控識別]。

      顯示 [取用工作流程]、[HTTP 動作] 和 [受控識別] 屬性的螢幕快照,其中包含系統指派受控識別的選取選項。

    • 如果您設定使用者指派的身分識別,請選取該身分識別。

      顯示已選取使用者指派身分識別的取用工作流程、HTTP 動作和受控識別屬性的螢幕快照。

    此範例會繼續使用系統指派的受控識別

  5. 在某些觸發程式和動作上 ,會出現 Audience 屬性,以便您可以設定目標 Azure 資源或服務的資源識別碼。

    例如,若要驗證全域 Azure 雲端中 金鑰保存庫 資源的存取權,您必須將 Audience 屬性設定為下列資源識別碼:https://vault.azure.net

    如果您未設定 Audience 屬性,則根據預設,Audience 屬性會使用https://management.azure.com/資源識別碼,這是 Azure Resource Manager 的資源識別符。

    重要

    請確定目標資源標識碼 完全符合 Microsoft Entra ID 預期的值。 否則,您可能會收到 400 Bad Request 錯誤或 401 Unauthorized 錯誤。 因此,如果資源標識碼包含任何尾端斜線,請務必包含它們。 否則,請勿包含它們。

    例如,所有 Azure Blob 儲存體帳戶的資源識別碼都需要後置斜線。 不過,特定儲存體帳戶的資源識別碼不需要尾端斜線。 勾選 [支援 Microsoft Entra ID 的 Azure 服務的資源識別碼]

    這個範例會將 [物件] 屬性設定為 https://storage.azure.com/,讓用於驗證的存取權杖對所有儲存體帳戶都有效。 不過,您也可以指定特定儲存體帳戶的根服務 URL https://<your-storage-account>.blob.core.windows.net

    此螢幕快照顯示 [取用工作流程] 和 [HTTP] 動作,並將 Audience 屬性設定為目標資源標識符。

    如需透過 Microsoft Entra ID 授權 Azure 儲存體存取的詳細資訊,請參閱下列文件:

  6. 繼續按照您想要的方式建置工作流程。

範例:使用受控識別來驗證受控連接器觸發程序或動作

Azure Resource Manager 受控連接器具有名為讀取資源的動作,其可以使用您在邏輯應用程式資源上啟用的受控識別。 此範例示範如何搭配受控連接器使用系統指派的受控識別。

  1. 在工作流程設計工具上,新增名為 讀取資源的 Azure Resource Manager 動作。

  2. 在 [建立 連線 ion] 窗格的 [驗證] 列表中,選取 [受控識別],然後選取 [登入]。

    注意

    在其他連接器中,[ 驗證類型 ] 列表會改為顯示 Logic Apps 受控識別 ,因此請選取此選項。

    此螢幕快照顯示 [取用工作流程]、[Azure Resource Manager] 動作、開啟的 [驗證] 清單,以及受控識別的已選取選項。

  3. 提供連線的名稱,然後選取您想要使用的受控識別。

    如果您已啟用系統指派的身分識別, 受控識別 清單會自動選取 系統指派的受控識別。 如果您改為啟用使用者指派的身分識別,清單會自動選取使用者指派的身分識別。

    在此範例中,系統指派的受控識別是唯一可用的選項。

    顯示 [取用工作流程] 和 [Azure Resource Manager] 動作的螢幕快照,其中包含系統指派受控識別的已輸入和選取聯機名稱的選項。

    注意

    如果您嘗試建立或變更連線時未啟用受控識別,或在已啟用受控識別的連線仍然存在時移除受控識別,您會收到錯誤,指出您必須啟用身分識別,並授與目標資源的存取權。

  4. 當您準備好時,請選取 [ 新建]。

  5. 設計工具成功建立連線之後,設計工具可以使用受控識別驗證來擷取任何動態值、內容或結構描述。

  6. 繼續按照您想要的方式建置工作流程。

使用受控識別的邏輯應用程式資源定義和連線

啟用和使用受控識別的連線是僅適用於受控識別的特殊連線類型。 在執行階段,連線會使用邏輯應用程式資源上啟用的受控識別。 Azure Logic Apps 會檢查工作流程中的任何受控連接器作業是否已設定為使用受控識別,而且所有必要許可權都存在,以使用受控識別來存取連接器作業所指定的目標資源。 如果這項檢查成功,Azure Logic Apps 會擷取與受控識別相關聯的 Microsoft Entra 令牌、使用該身分識別來驗證目標 Azure 資源的存取權,並在工作流程中執行設定的作業。

在取用邏輯應用程式資源中,聯機組態會儲存在資源定義的 parameters 物件中,其中包含 $connections 包含連線資源標識符指標以及啟用使用者指派身分識別時受控識別的資源標識符的物件。

這個範例顯示 parameters 邏輯應用程式啟用 系統指派身 分識別時的物件組態:

"parameters": {
   "$connections": {
      "value": {
         "<action-name>": {
            "connectionId": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>",
            "connectionName": "<connector-name>",
            "connectionProperties": {
               "authentication": {
                  "type": "ManagedServiceIdentity"
               }
            },
            "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/<managed-connector-type>"
         }
      }
   }
}

當邏輯應用程式啟用使用者指派的受控識別時,parameters此範例會顯示物件組態:

"parameters": {
   "$connections": {
      "value": {
         "<action-name>": {
            "connectionId": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>",
            "connectionName": "<connector-name>",
            "connectionProperties": {
               "authentication": {
                  "type": "ManagedServiceIdentity",
                  "identity": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/microsoft.managedidentity/userassignedidentities/<managed-identity-name>"
               }
            },
            "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/<managed-connector-type>"
         }
      }
   }
}

適用於 API 連線和受控識別的 ARM 範本

如果您使用 ARM 範本來自動化部署,而您的工作流程包含由使用受控識別的受控連接器建立的 API 連線,您需採取額外的步驟。

在 ARM 範本中,基礎連接器資源定義會根據您是否有取用或標準邏輯應用程式資源,以及連接器是否 顯示單一驗證或多重驗證選項而有所不同。

下列範例適用於取用邏輯應用程式資源,並示範單一驗證連接器與多重驗證連接器之間的基礎連接器資源定義有何差異。

單一驗證

這個範例顯示連接器動作的基礎連線資源定義,該動作僅支援一個驗證類型,並在定義包含下列屬性的取用邏輯應用程式工作流程中使用受控識別:

  • kind 屬性已針對取用邏輯應用程式設定為 V1

  • parameterValueType 屬性會設定為 Alternative

{
    "type": "Microsoft.Web/connections",
    "apiVersion": "[providers('Microsoft.Web','connections').apiVersions[0]]",
    "name": "[variables('connections_<connector-name>_name')]",
    "location": "[parameters('location')]",
    "kind": "V1",
    "properties": {
        "alternativeParameterValues": {},
        "api": {
            "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureautomation')]"
        },
        "authenticatedUser": {},
        "connectionState": "Enabled",
        "customParameterValues": {},
        "displayName": "[variables('connections_<connector-name>_name')]",
        "parameterValueSet": {},
        "parameterValueType": "Alternative"
    }
},

多重驗證

這個範例顯示連接器動作的基礎連線資源定義,該動作支援多個驗證類型,並在定義包含下列屬性的取用邏輯應用程式工作流程中使用受控識別:

  • kind 屬性已針對取用邏輯應用程式設定為 V1

  • parameterValueSet 物件包含設定為 managedIdentityAuthname 屬性,以及設定為空白物件的 values 屬性。

{
    "type": "Microsoft.Web/connections",
    "apiVersion": "[providers('Microsoft.Web','connections').apiVersions[0]]",
    "name": "[variables('connections_<connector-name>_name')]",
    "location": "[parameters('location')]",
    "kind": "V1",
    "properties": {
        "alternativeParameterValues":{},
        "api": {
            "id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'azureblob')]"
        },
        "authenticatedUser": {},
        "connectionState": "Enabled",
        "customParameterValues": {},
        "displayName": "[variables('connections_<connector-name>_name')]",
        "parameterValueSet":{
            "name": "managedIdentityAuth",
            "values": {}
        },
        "parameterValueType": "Alternative"
    }
}

設定 API 連線驗證的進階控制

當您的標準邏輯應用程式工作流程使用由受控連接器建立的 API 連線時,Azure Logic Apps 會使用兩個連線來與目標資源通訊,例如您的電子郵件帳戶、密鑰保存庫等:

概念圖顯示邏輯應用程式和令牌存放區之間的第一個驗證連線,以及令牌存放區和目標資源之間的第二個連線。

  • 連線 #1 是使用內部權杖存放區的驗證來設定。

  • 連線 #2 是使用目標資源的驗證來設定。

不過,當取用邏輯應用程式工作流程使用 API 連線時,連線 #1 會從您抽象化,而不需要任何組態選項。 使用標準邏輯應用程式資源,您可以更充分掌控邏輯應用程式和工作流程。 根據預設,連線 #1 會自動設定為使用系統指派的身分識別。

如果您的案例需要更精細地控制驗證 API 連線,您可以選擇性地將連線的驗證 #1 從預設系統指派的身分識別變更為您新增至邏輯應用程式的任何使用者指派身分識別。 此驗證適用於每個 API 連線,因此您可將系統指派和使用者指派的身分識別混用於相同目標資源的不同連線。

在標準邏輯應用程式的 connections.json 檔案中,其中儲存每個 API 連線的相關信息,每個連線定義都有兩authentication個區段,例如:

"keyvault": {
   "api": {
      "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
   },
   "authentication": {
      "type": "ManagedServiceIdentity",
   },
   "connection": {
      "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
   },
   "connectionProperties": {
      "authentication": {
         "audience": "https://vault.azure.net",
         "type": "ManagedServiceIdentity"
      }
   },
   "connectionRuntimeUrl": "<connection-runtime-URL>"
}
  • 第一個 authentication 區段對應至連線 #1。

    本節描述用來與內部權杖存放區通訊的驗證。 在過去,此區段一律會針對部署至 Azure 且沒有可設定選項的應用程式設為 ManagedServiceIdentity

  • 第二個 authentication 區段對應至連線 #2。

    本節描述用來與目標資源通訊的驗證可能會根據您為該連線選取的驗證類型而有所不同。

為何變更權杖存放區的驗證?

在某些情況下,您可能想要跨多個邏輯應用程式資源分享和使用相同的 API 連線,但不要將每個邏輯應用程式資源的系統指派身分識別新增至目標資源的存取原則。

在其他情況下,您可能不想在邏輯應用程式上完全設定系統指派的身分識別,因此您可將驗證變更為使用者指派的身分識別,並完全停用系統指派的身分識別。

變更權杖存放區的驗證

  1. Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在資源功能表的 [工作流程] 之下,選取 [連線]

  3. [連線 ions] 窗格中,選取 [JSON 檢視]。

    顯示已選取 JSON 檢視 Azure 入口網站 標準邏輯應用程式資源 連線 窗格的螢幕快照。

  4. 在 JSON 編輯器中,尋找 managedApiConnections 區段,其中包含邏輯應用程式資源中所有工作流程的 API 連線。

  5. 尋找您要在其中新增使用者指派受控識別的連線。

    例如,假設您的工作流程具有 Azure Key Vault 連線:

    "keyvault": {
       "api": {
          "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
       },
       "authentication": {
          "type": "ManagedServiceIdentity"
       },
       "connection": {
          "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
       },
       "connectionProperties": {
          "authentication": {
             "audience": "https://vault.azure.net",
             "type": "ManagedServiceIdentity"
          }
       },
       "connectionRuntimeUrl": "<connection-runtime-URL>"
    }
    
  6. 在連線定義中,完成下列步驟:

    1. 尋找第一個 authentication 區段。 如果本節authentication中沒有任何identity屬性存在,邏輯應用程式會隱含使用系統指派的身分識別。

    2. 使用此步驟中的範例來新增 identity 屬性。

    3. 將屬性值設定為使用者指派身分識別的資源識別碼。

    "keyvault": {
       "api": {
          "id": "/subscriptions/<Azure-subscription-ID>/providers/Microsoft.Web/locations/<Azure-region>/managedApis/keyvault"
       },
       "authentication": {
          "type": "ManagedServiceIdentity",
          // Add "identity" property here
          "identity": "/subscriptions/<Azure-subscription-ID>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-resource-ID>"
       },
       "connection": {
          "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Web/connections/<connector-name>"
       },
       "connectionProperties": {
          "authentication": {
             "audience": "https://vault.azure.net",
             "type": "ManagedServiceIdentity"
          }
       },
       "connectionRuntimeUrl": "<connection-runtime-URL>"
    }
    
  7. 在 Azure 入口網站中,移至目標資源,並根據目標資源的需求授與使用者指派的受控識別存取權

    例如,針對 Azure Key Vault,將身分識別新增至金鑰保存庫的存取原則。 針對 Azure Blob 儲存體,將身分識別的必要角色指派給儲存體帳戶。

停用受控識別

若要停止使用受控識別進行驗證,請先移除身分識別對目標資源的存取權。 接下來,在您的邏輯應用程式資源上,關閉系統指派的身分識別,或移除使用者指派的身分識別。

當您在邏輯應用程式資源上停用受控識別時,您會移除該身分識別的能力,以要求身分識別具有存取權的 Azure 資源存取權。

注意

如果您停用系統指派的身分識別,即使您立即再次啟用身分識別,該邏輯應用程式工作流程中的工作流程所使用的任何和所有連線都不會在執行階段運作。 之所以發生此行為,是因為停用身分識別會刪除其對象標識碼。 每次啟用身分識別時,Azure 都會產生具有不同且唯一物件識別碼的身分識別。 若要解決此問題,您必須重新建立連線,使其使用目前系統指派身分識別的目前物件識別碼。

請嘗試盡可能避免停用系統指派的身分識別。 如果您想要移除身分識別對 Azure 資源的存取權,請從目標資源移除身分識別的角色指派。 如果您刪除邏輯應用程式資源,Azure 會自動從 Microsoft Entra ID 移除移除受控識別。

本節中的步驟涵蓋如何使用 Azure 入口網站Azure Resource Manager 範本 (ARM 範本)。 若為 Azure PowerShell、Azure CLI 和 Azure REST API,請參閱下列文件:

工具 文件
Azure PowerShell 1.移除角色指派
2.刪除使用者指派的身分識別
Azure CLI 1.移除角色指派
2.刪除使用者指派的身分識別
Azure REST API 1.移除角色指派
2.刪除使用者指派的身分識別

如需相關資訊,請參閱移除 Azure 角色指派

在 Azure 入口網站中停用受控識別

若要移除受控識別的存取權,請從目標資源移除身分識別的角色指派,然後停用受控識別。

移除角色指派

下列步驟會從受控識別移除目標資源的存取權:

  1. Azure 入口網站中,移至您想要針對受控識別移除存取權的目標 Azure 資源。

  2. 從目標資源的功能表中,選取 [存取控制 (IAM)]。 在工具列底下,選取 [角色指派]

  3. 在角色清單中,選取您想要移除的受控識別。 在工具列上,選取 [移除]

    提示

    如果 [移除] 選項已停用,您很可能沒有權限。 如需可讓您管理資源角色的權限的詳細資訊,請參閱 Microsoft Entra ID 中的系統管理員角色權限

停用邏輯應用程式資源上的受控識別

  1. Azure 入口網站中,開啟您的邏輯應用程式資源。

  2. 在邏輯應用程式資源功能表上的 [設定] 下,選取 [身分識別],然後遵循身分識別的步驟:

    • 選取 [系統指派]>[開啟]>[儲存]。 Azure 提示您確認時,請選取 [是]

    • 選取 [使用者指派] 和 [受控識別],然後選取 [移除]。 Azure 提示您確認時,請選取 [是]

停用 ARM 範本中的受控識別

如果您使用 ARM 範本建立邏輯應用程式的受控識別,請將 identity 物件的 type 子屬性設定為 None

"identity": {
   "type": "None"
}