在 Azure Logic Apps 中保護工作流程的存取和資料

Azure Logic Apps 使用 Azure 儲存體 儲存並自動加密靜態資料。 這種加密透過 Microsoft 管理的金鑰保護您的資料,幫助您達成組織的安全與合規承諾。 如需詳細資訊,請參閱待用資料的 Azure 儲存體加密。

本指南說明如何在 Azure Logic Apps 的以下主要領域進一步保護與保護敏感資料:

任務 移至
控制誰能管理或編輯工作流程 安全邏輯應用程式操作
在執行紀錄中隱藏輸入、輸出、密碼和秘密 安全運行歷史資料
保護跨環境的參數值 安全參數輸入
了解認證類型 檢視工作流程操作的認證類型
驗證啟動你工作流程的通話 安全的入站通話
驗證你的工作流程所發出的呼叫 安全外撥通話
封鎖特定連接器 封鎖連線
符合隔離要求 隔離導引
檢視安全基準 適用於 Azure Logic Apps 的 Azure 安全性基準

有關 Azure 全域安全性的資訊,請參見:

使用 Azure RBAC 保護對邏輯應用程式作業的存取

在 Azure 中,角色型存取控制(RBAC)可控制誰能存取資源,以及可對資源執行哪些操作。 在其他人建立或管理邏輯應用程式、工作流程和連線之前,你需要先指派他們一個提供必要權限的角色。 你可以設定權限,讓只有特定使用者或群組能執行特定任務,例如管理、編輯和查看邏輯應用程式。 為了控制他們的權限,請將內建或自訂的角色分配給有權限存取你 Azure 訂閱的成員。

Important

為了減少攻擊面,務必依 據最小權限原則分配角色。

在指派角色前,請檢視以下最佳實務、考量及影響:

  • 允許使用者、應用程式及受管理身份只存取執行工作所需的資料與操作。

  • 僅依最小權限原則,將貢獻者層級角色或工作流程編輯權限指派給 受信任主體。

  • 只為 Logic App 工作流程中受管理身份設定最低必要的權限,以完成其工作。

  • 貢獻者或工作流程編輯權限等同於持有該工作流程中每個受 管理身份 的權限。

  • 任何擁有貢獻者或工作流程編輯權限的人,都可以設定 HTTP 內建操作,利用受管理身份來請求任何受眾的身份持有者令牌。 他們可以用這些權杖向任何端點或目的地發送請求。 平台不會限制目的地。 持有人憑證有效期為一小時,且可存取其身份能存取的任何 Azure API。

Azure Logic Apps 會依您使用的是 Consumption 或 Standard 類型的工作流程,而有下列特定角色:

取用工作流程
角色 說明
Logic App 貢獻者 您可以管理邏輯應用程式工作流程,但無法變更其存取權。
邏輯應用程式操作員 您可以讀取、啟用及停用邏輯應用程式工作流程,但無法加以編輯或更新。
參與者 您具備管理所有資源的完整存取權,但無法在 Azure RBAC 中指派角色、在 Azure 藍圖中管理指派,或共用映像庫。

舉例來說,假設你需要處理一個你沒建立的邏輯應用程式工作流程,並驗證該邏輯應用程式工作流程所使用的連線。 您的 Azure 訂用帳戶需要包含該邏輯應用程式資源的資源群組參與者權限。 如果你建立一個 Logic App 資源,你就會自動擁有 貢獻者 權限。

為了防止他人更改或刪除你的邏輯應用程式工作流程,請使用 Azure 資源鎖定。 這項功能可防止其他人變更或刪除生產資源。 如需連線安全性的詳細資訊,請參閱 Azure Logic Apps 中的連線組態和連線安全性與加密。

標準工作流程
角色 說明
Logic Apps 標準閱讀器 您有標準邏輯應用程式和工作流程中所有資源的唯讀存取權,包括工作流程執行及其歷程記錄。
Logic Apps 標準運算子 您具有為標準邏輯應用程式啟用、重新提交和停用工作流程,以及建立服務、系統和網路連線的存取權。 操作員角色可以在 Azure Logic Apps 平台上執行管理和支援工作,但沒有權限可編輯工作流程或設定。
Logic Apps Standard Developer 您具有為標準邏輯應用程式建立和編輯工作流程、連線和設定的存取權。 開發人員角色沒有在工作流程範圍外進行變更的權限,例如,設定虛擬網路整合等全應用程式變更。 不支援 App Service 方案。
邏輯應用程式標準參與者 您具有管理標準邏輯應用程式的所有層面的存取權,但無法變更存取權或擁有權。

存取工作流程執行歷史

在工作流程執行期間,所有資料在 傳輸過程中 會透過傳輸層安全(TLS)加密,且 在靜態中進行加密。 當邏輯應用程式執行完成時,您可以檢視本次執行的歷程記錄,包括已執行的步驟,以及每個動作的狀態、持續時間、輸入和輸出。 這項豐富的詳細資料可讓您深入解析邏輯應用程式的執行情形,而且對於任何發生的問題,可讓您知道從何處開始進行疑難排解。

當您檢視邏輯應用程式的執行歷程記錄時,Azure Logic Apps 會驗證您的存取,然後針對每次執行的要求和回應,提供連結指向輸入和輸出。 不過,如果動作處理任何密碼、秘密、金鑰或其他敏感性資訊,建議您防止其他人檢視和存取該資料。 例如,如果邏輯應用程式從 Azure Key Vault 取得祕密來用於驗證 HTTP 動作,建議您隱藏該秘密。

要控制工作流程執行歷史中的輸入與輸出存取,請使用以下選項:

依 IP 位址範圍限制存取

您可以限制存取邏輯應用程式工作流程執行歷程記錄中的輸入和輸出,使得只有來自特定 IP 位址範圍的要求才能檢視該資料。

例如,若要阻止任何人存取輸入和輸出,請指定像 0.0.0.0-0.0.0.0 這樣的 IP 位址範圍。 只有具備管理員權限的人才能移除此限制,其提供「及時」存取邏輯應用程式工作流程中資料的機會。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

若要指定允許的 IP 範圍,請在 Azure 入口網站或 Azure Resource Manager 範本中針對您的取用或標準邏輯應用程式執行下列步驟:

取用工作流程
  1. 在 Azure 入口網站中,在設計工具中開啟您的取用邏輯應用程式工作流程。

  2. 在 Logic App 側邊欄的 設定裡,選擇 工作流程設定。

  3. 在 [存取控制組態] 區段的 [允許的輸入 IP 位址] 下,從 [觸發程序存取選項] 清單中選取 [特定 IP 位址]。

  4. 在 [內容的 IP 範圍] 方塊中,指定可存取輸入和輸出內容的 IP 位址範圍。

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

  2. 在 Logic App 側邊欄的 設定 下,選取 網路。

  3. 在 [輸入流量組態] 區段的 [公用網路存取] 旁,選取 [已啟用且無存取限制]。

  4. 在 [存取限制] 頁面的 [應用程式存取] 下,選取 [已從選取的虛擬網路和 IP 位址啟用]。

  5. 在 [網站存取和規則] 下,於 [主要網站] 索引標籤上,新增一或多個規則以允許或拒絕特定 IP 範圍的要求。 您也可以使用 HTTP 標頭來篩選設定和轉送設定。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

    如需詳細資訊,請參閱在 Azure Logic Apps (標準) 中封鎖輸入 IP 位址。

使用混淆來保護執行歷程記錄中的資料

許多觸發程序和動作都有設定,可保護來自邏輯應用程式執行歷程記錄的輸入、輸出或兩者。 所有受控連接器和自訂連接器都支援這些選項。 不過,下列內建作業不支援下列選項:

安全輸入 - 不支援 安全輸出 - 不支援
附加到陣列變數
附加至字串變數
遞減變數
For each
If
遞增變數
將變數初始化
週期性
範圍
設定變數
Switch
Terminate
Until
附加到陣列變數
附加至字串變數
撰寫
遞減變數
For each
If
遞增變數
將變數初始化
剖析 JSON
週期性
回應
範圍
設定變數
Switch
Terminate
Until
Wait

保護輸入和輸出安全性的考量

使用這些設定來協助您保護此資料之前,請檢閱這些考量事項:

  • 當您遮蔽觸發程序或動作的輸入或輸出時,Azure Logic Apps 不會將受保護的資料傳送至 Azure Log Analytics。 此外,您無法將追蹤的屬性新增至該觸發程序或動作來監視。

  • 用於處理工作流程歷程記錄的 Azure Logic Apps API 不會傳回受保護的輸出。

  • 若要保護動作的輸出,但該動作已遮蔽輸入或明確遮蔽輸出,請在該動作中手動開啟 [保護輸出]。

  • 在您預期執行歷程記錄會遮蔽該資料的下游動作中,請務必開啟 [保護輸入] 或 [保護輸出]。

    保護輸出設定

    當您在觸發程序或動作中手動開啟 [保護輸出] 時,Azure Logic Apps 會在執行歷程記錄中隱藏這些輸出。 如果下游動作明確使用這些受保護的輸出作為輸入,Azure Logic Apps 會在執行歷程記錄中隱藏此動作的輸入,但「不會啟用」動作的 [保護輸入] 設定。

    此圖表顯示安全輸出如何影響工作流程執行歷程中下游動作之隱藏輸入的可見性。

    Compose、Parse JSON和Response動作只有Secure Inputs設定。 此設定開啟時也會隱藏這些動作的輸出。 如果這些動作明確使用上游保護的輸出作為輸入,Azure Logic Apps 會隱藏這些動作的輸入和輸出,但「不會啟用」這些動作的 [保護輸入] 設定。 如果下游動作明確使用了 Compose、Parse JSON 或 Response 動作的隱藏輸出作為輸入,Azure Logic Apps 不會隱藏該下游動作的輸入或輸出。

    圖表顯示安全輸出如何影響 Compose、Parse JSON 和 Response 動作的可視性。

    保護輸入設定

    當您在觸發程序或動作中手動開啟 [保護輸入] 時,Azure Logic Apps 會在執行歷程記錄中隱藏這些輸入。 如果下游動作明確使用該觸發程序或動作的可見輸出作為輸入,Azure Logic Apps 會在執行歷程記錄中隱藏此下游動作的輸入,但在此動作中「不會啟用」[保護輸入],也不會隱藏此動作的輸出。

    圖示顯示安全觸發或動作輸入如何影響作為下游工作流程動作輸入的可見性。

    如果 Compose、Parse JSON 和 Response 動作明確使用了觸發器或動作中可見的輸出,且該動作有安全輸入,Azure Logic Apps 會隱藏這些動作的輸入與輸出,但不會啟用這些動作的 Secure Inputs 設定。 如果下游動作明確使用了 Compose、Parse JSON 或 Response 動作的隱藏輸出作為輸入,Azure Logic Apps 不會隱藏該下游動作的輸入或輸出。

    圖表顯示安全輸入如何影響 Compose、Parse JSON 和 Response 工作流程動作。

在設計工具中保護輸入和輸出

  1. 在 Azure 入口網站中,在設計工具中開啟邏輯應用程式工作流程。

  2. 在設計工具上,選取您要保護敏感性資料的觸發程序或動作。

  3. 在開啟的資訊窗格上,選取 [設定],並展開 [安全性]。

    截圖顯示 Azure 入口網站、工作流程設計器,以及開啟設定後的觸發器或動作。

  4. 開啟 [保護輸入]、[保護輸出] 或兩者。

    截圖顯示一個動作的工作流程已啟用安全輸入或安全輸出設定。

    觸發程序或動作的標題列中現在顯示鎖定圖示。 如果權杖代表先前動作的受保護輸出,則也會顯示鎖定圖示。 例如,在後續動作中,當您從動態內容清單選取安全輸出的權杖之後,該權杖會顯示鎖定圖示。

    截圖顯示工作流程中,後續動作的動態內容清單開啟,以及前一個動作的安全輸出標記,並帶有鎖定圖示。

  5. 當工作流程執行之後,您可以檢視該執行的歷程記錄。

    1. 在邏輯應用程式提要欄位中,選取 [ 概觀]。

    2. 在 [執行歷程記錄] 下,選取您想要檢視的執行。

    3. 在工作流程執行歷程記錄窗格中,選取您想要檢閱的動作。

      如果您已選擇隱藏輸入和輸出,則那些值現在已隱藏。

      截圖顯示標準工作流程執行歷史視圖,裡面有隱藏的輸入和輸出。

在程式碼檢視中保護輸入和輸出

在基礎觸發程序或動作定義中,使用下列其中一個或兩個值來新增或更新 runtimeConfiguration.secureData.properties 陣列:

  • "inputs":保護執行歷程記錄中的輸入。
  • "outputs":保護執行歷程記錄中的輸出。
"<trigger-or-action-name>": {
   "type": "<trigger-or-action-type>",
   "inputs": {
      <trigger-or-action-inputs>
   },
   "runtimeConfiguration": {
      "secureData": {
         "properties": [
            "inputs",
            "outputs"
         ]
      }
   },
   <other-attributes>
}

安全地跨環境存取參數輸入

如果您在不同的環境之間部署,請考慮將工作流程定義中的值參數化,讓值隨著這些環境而改變。 透過使用 Azure Resource Manager 範本來部署你的邏輯應用程式,你可以避免硬編碼資料,透過定義安全參數保護敏感資料,並透過參數檔案將資料作為獨立輸入傳遞到範本的參數中。

例如,如果您使用 OAuth 搭配 Microsoft Entra ID 驗證 HTTP 動作,您可以定義並遮蔽會接受用於驗證的用戶端識別碼和用戶端密碼的參數。 若要在邏輯應用程式工作流程中定義這些參數,請在邏輯應用程式的工作流程定義和 Resource Manager 部署範本中,使用 parameters 區段。 若要保護參數值而不要在編輯邏輯應用程式或檢視執行歷程記錄時出現,請使用 securestring 或 secureobject 型別來定義參數,並視需要使用編碼。 此型別的參數不會隨著資源定義一起傳回,而在部署之後檢視資源時也無法存取。 若要在執行階段存取這些參數值,請在工作流程定義內使用 @parameters('<parameter-name>') 運算式。 此運算式只在執行階段評估,而且以工作流程定義語言來描述。

Note

如果你在請求標頭或請求主體中使用參數,當你查看工作流程的執行紀錄和發出的 HTTP 請求時,這個參數可能會被看見。 請務必也適當地設定內容存取原則。 您也可以使用混淆,以隱藏執行歷程記錄中的輸入和輸出。

依預設,Authorization 標頭不會透過輸入或輸出顯示。 如果您在那裡使用祕密,就無法擷取該祕密。

如需詳細資訊,請參閱本文下列各節:

如果您使用 Resource Manager 範本來自動部署邏輯應用程式,您可以使用 和 securestring 型別來定義受保護的secureobject (在部署時評估)。 若要定義範本參數,請使用範本的最上層 parameters 區段,此區段獨立且不同於工作流程定義的 parameters 區段。 若要提供範本參數的值,請使用個別的參數檔案。

例如,如果您使用秘密,您可以定義和使用受保護的範本參數,在部署時從 Azure Key Vault 取得這些秘密。 然後,您可以在參數檔案中參考金鑰保存庫和祕密。 欲了解更多資訊,請參閱:

保護工作流程定義中的參數 (使用量工作流程)

若要保護邏輯應用程式工作流程定義中的敏感性資訊,請使用受保護的參數,在您儲存邏輯應用程式工作流程之後就不會看到此資訊。 舉例來說,假設你有一個需要基本認證的 HTTP 動作,使用使用者名稱和密碼。 在工作流程定義中,parameters 區段使用 basicAuthPasswordParam 型別來定義 basicAuthUsernameParam 和 securestring 參數。 然後,動作定義會在 authentication 區段中參考這些參數。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

"definition": {
   "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
   "actions": {
      "HTTP": {
         "type": "Http",
         "inputs": {
            "method": "GET",
            "uri": "https://www.microsoft.com",
            "authentication": {
               "type": "Basic",
               "username": "@parameters('basicAuthUsernameParam')",
               "password": "@parameters('basicAuthPasswordParam')"
            }
         },
         "runAfter": {}
      }
   },
   "parameters": {
      "basicAuthPasswordParam": {
         "type": "securestring"
      },
      "basicAuthUsernameParam": {
         "type": "securestring"
      }
   },
   "triggers": {
      "manual": {
         "type": "Request",
         "kind": "Http",
         "inputs": {
            "schema": {}
         }
      }
   },
   "contentVersion": "1.0.0.0",
   "outputs": {}
}

保護 Azure Resource Manager 範本中的參數 (使用量工作流程)

邏輯應用程式資源和工作流程的 Resource Manager 範本有多個 parameters 區段。 若要保護密碼、金鑰、秘密及其他敏感性資訊,請在範本層級和工作流程定義層級,使用 securestring 或 secureobject 型別來定義受保護的參數。 然後,您可以將這些值儲存在 Azure Key Vault 中,並使用參數檔案來參考金鑰保存庫和密碼。 然後,您的範本會在部署時取出該資訊。 如需詳細資訊,請檢閱在部署時使用 Azure Key Vault 傳遞敏感值。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

此清單包含這些 parameters 區段的詳細資訊:

  • 在範本的最上層,parameters 區段定義的參數指定範本在「部署」時使用的值。 例如,這些值可以包含特定部署環境的連接字串。 然後,您可以將這些值儲存在個別的參數檔案中,以更輕鬆變更這些值。

  • 在邏輯應用程式的資源定義內 (但在工作流程定義外),parameters 區段指定工作流程定義參數的值。 在此區段中,您可以使用範本運算式來參考範本的參數,以指派這些值。 部署時會評估這些運算式。

  • 在工作流程定義內,parameters 區段會定義邏輯應用程式工作流程在執行階段使用的參數。 然後,您可以在邏輯應用程式的工作流程內,使用工作流程定義運算式 (在執行階段評估) 來參考這些參數。

這個範例範本有多個使用 securestring 型別的受保護參數定義:

參數名稱 說明
TemplatePasswordParam 此範本參數接受密碼,再傳遞給工作流程定義的 basicAuthPasswordParam 參數
TemplateUsernameParam 此範本參數接受使用者名稱,再傳遞給工作流程定義的 basicAuthUserNameParam 參數
basicAuthPasswordParam 此工作流程定義參數接受密碼,以用於 HTTP 動作中的基本驗證
basicAuthUserNameParam 此工作流程定義參數接受使用者名稱,以用於 HTTP 動作中的基本驗證
{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "LogicAppName": {
         "type": "string",
         "minLength": 1,
         "maxLength": 80,
         "metadata": {
            "description": "Name of the Logic App."
         }
      },
      "TemplatePasswordParam": {
         "type": "securestring"
      },
      "TemplateUsernameParam": {
         "type": "securestring"
      },
      "LogicAppLocation": {
         "type": "string",
         "defaultValue": "[resourceGroup().location]",
         "allowedValues": [
            "[resourceGroup().location]",
            "eastasia",
            "southeastasia",
            "centralus",
            "eastus",
            "eastus2",
            "westus",
            "northcentralus",
            "southcentralus",
            "northeurope",
            "westeurope",
            "japanwest",
            "japaneast",
            "brazilsouth",
            "australiaeast",
            "australiasoutheast",
            "southindia",
            "centralindia",
            "westindia",
            "canadacentral",
            "canadaeast",
            "uksouth",
            "ukwest",
            "westcentralus",
            "westus2"
         ],
         "metadata": {
            "description": "Location of the Logic App."
         }
      }
   },
   "variables": {},
   "resources": [
      {
         "name": "[parameters('LogicAppName')]",
         "type": "Microsoft.Logic/workflows",
         "location": "[parameters('LogicAppLocation')]",
         "tags": {
            "displayName": "LogicApp"
         },
         "apiVersion": "2016-06-01",
         "properties": {
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
               "actions": {
                  "HTTP": {
                     "type": "Http",
                     "inputs": {
                        "method": "GET",
                        "uri": "https://www.microsoft.com",
                        "authentication": {
                           "type": "Basic",
                           "username": "@parameters('basicAuthUsernameParam')",
                           "password": "@parameters('basicAuthPasswordParam')"
                        }
                     },
                  "runAfter": {}
                  }
               },
               "parameters": {
                  "basicAuthPasswordParam": {
                     "type": "securestring"
                  },
                  "basicAuthUsernameParam": {
                     "type": "securestring"
                  }
               },
               "triggers": {
                  "manual": {
                     "type": "Request",
                     "kind": "Http",
                     "inputs": {
                        "schema": {}
                     }
                  }
               },
               "contentVersion": "1.0.0.0",
               "outputs": {}
            },
            "parameters": {
               "basicAuthPasswordParam": {
                  "value": "[parameters('TemplatePasswordParam')]"
               },
               "basicAuthUsernameParam": {
                  "value": "[parameters('TemplateUsernameParam')]"
               }
            }
         }
      }
   ],
   "outputs": {}
}

支援驗證的連接器驗證類型

下表顯示連接器作業上可用的驗證類型,您可以在其中選取驗證類型:

驗證類型 Logic 應用程式及支援的連接器
基本 Azure API 管理、Azure App 服務、HTTP、HTTP + Swagger、HTTP Webhook
用戶端憑證 Azure API 管理、Azure App 服務、HTTP、HTTP + Swagger、HTTP Webhook
Active Directory OAuth (具有 Microsoft Entra ID 的 OAuth 2.0) - 取用:Azure API 管理、Azure App 服務、Azure Functions、HTTP、HTTP + Swagger、HTTP Webhook

- 標準方案:Azure 自動化、Azure Blob 儲存體、Azure 事件中樞、Azure 佇列、Azure 服務匯流排、Azure 資料表、HTTP、HTTP Webhook、SQL Server
原始 Azure API 管理、Azure App 服務、Azure Functions、HTTP、HTTP + Swagger、HTTP Webhook
受控識別 內建連接器:

- 取用:Azure API 管理、Azure App 服務、Azure Functions、HTTP、HTTP Webhook

- 標準方案:Azure 自動化、Azure Blob 儲存體、Azure 事件中樞、Azure 佇列、Azure 服務匯流排、Azure 資料表、HTTP、HTTP Webhook、SQL Server

注意:目前,大部分的內建服務提供者型連接器都不支援選取使用者指派的受控識別用於驗證。

受控連接器:Azure App 服務、Azure 自動化、Azure Blob 儲存體、Azure 容器執行個體、Azure Cosmos DB、Azure 資料總管、Azure Data Factory、Azure Data Lake、Azure 事件方格、Azure 事件中樞、Azure IoT Central V2、Azure IoT Central V3、Azure Key Vault、Azure Log Analytics、Azure 佇列、Azure Resource Manager、Azure 服務匯流排、Azure Sentinel、Azure 表格儲存體、Azure VM、HTTP 搭配 Microsoft Entra ID、SQL Server

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

要求型觸發程序的輸入呼叫存取權

邏輯應用程式透過要求型觸發程序 (例如要求觸發程序或 HTTP Webhook 觸發程序) 接收的輸入呼叫,支援加密且至少使用傳輸層安全性 (TLS) 1.2 保護,先前稱為安全通訊端層 (SSL)。 Azure Logic Apps 收到要求觸發程序的輸入呼叫或 HTTP Webhook 觸發程序或動作的回呼時,會強制執行此版本。

Note

如果收到 TLS 交握錯誤,請確定您使用 TLS 1.2。 如需詳細資訊,請參閱解決 TLS 1.0 問題。

針對輸入呼叫,請使用下列加密套件:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384。
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256。
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384。
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256。
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384。
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256。

Important

為了回溯相容性,Azure Logic Apps 目前支援一些較舊的加密套件。 不過,當您開發新的應用程式時,「請勿使用」較舊的加密套件,因為未來「可能不支援」這類套件。

例如,如果您在使用 Azure Logic Apps 時檢查 TLS 交握訊息,或在邏輯應用程式的 URL 上使用安全性工具,您可能會發現下列加密套件。 同樣地,「請勿使用」這些較舊的套件:

  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA。
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA.
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA。
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA。
  • TLS_RSA_WITH_AES_256_GCM_SHA384。
  • TLS_RSA_WITH_AES_128_GCM_SHA256。
  • TLS_RSA_WITH_AES_256_CBC_SHA256。
  • TLS_RSA_WITH_AES_128_CBC_SHA256。
  • TLS_RSA_WITH_AES_256_CBC_SHA。
  • TLS_RSA_WITH_AES_128_CBC_SHA。
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA。

下列清單包含數種方式,可讓您限制存取接收邏輯應用程式工作流程輸入呼叫的觸發程序,而僅允許已授權的用戶端呼叫工作流程:

啟用具有 Microsoft Entra ID 的 OAuth 2.0

在以要求型觸發程序開頭的取用工作流程中,您可以啟用具有 Microsoft Entra ID 的 OAuth 2.0,以驗證傳送至該觸發程序所建立之端點的輸入呼叫,並予以授權。 若要設定此驗證,請在邏輯應用程式資源層級定義或新增授權原則。 如此一來,輸入呼叫會使用 OAuth 存取權杖進行授權。

當邏輯應用程式工作流程收到包含 OAuth 存取權杖的輸入要求時,Azure Logic Apps 會比較權杖的宣告與每個授權原則中指定的宣告。 如果權杖的宣告與至少一個原則中的所有宣告相符,則會成功授權輸入要求。 權杖的宣告可以比授權原則指定的數目更多。

在以要求觸發程序 (而非 Webhook 觸發程序) 開頭的標準工作流程中,若有輸入呼叫傳送至要求觸發程序使用受控識別建立的端點,您可以使用 Azure Functions 佈建加以驗證。 此佈建也稱為「簡單驗證」。 如需詳細資訊,請參閱標準邏輯應用程式中具有簡單驗證的觸發程序工作流程。

啟用具有 Microsoft Entra ID 的 OAuth 2.0 之前的考量

  • 為了獲得最佳安全性,Microsoft建議您盡可能使用 Microsoft Entra ID 搭配 受控識別 進行驗證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。 若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

  • 在取用工作流程中,對要求型觸發程序的端點 URL 進行輸入呼叫時只能使用一個授權配置:具有 Microsoft Entra ID 的 OAuth 2.0 或共用存取簽章 (SAS)。 雖然使用一個配置時並不會停用另一個配置,但若同時使用這兩個配置,Azure Logic Apps 會產生錯誤,因為服務不知道應選擇哪一個配置。 如果您的取用工作流程始於要求觸發程序,您可以停用 SAS 驗證,並限制授權僅使用具有 Microsoft Entra ID 的 OAuth 2.0。 對於標準工作流程,您可以使用其他驗證類型而不停用 SAS。

  • Azure Logic Apps 支援 Microsoft Entra ID OAuth 存取權杖的持有人類型或擁有權證明類型 (僅限使用量邏輯應用程式) 授權配置。 不過,存取權杖的 Authorization 標頭必須指定 Bearer 類型或 PoP 類型。 如需如何取得和使用 PoP 權杖的詳細資訊,請參閱取得擁有權證明 (PoP) 權杖。

  • 取用邏輯應用程式資源受限於授權原則數目上限。 每個授權原則也有宣告數目上限。 如需詳細資訊,請參閱 Azure Logic Apps 的限制和設定。

  • 授權政策必須至少包含 發行人 及 受眾 權利要求。 簽發者聲明具有一個值,該值以 https://sts.windows.net/ 或 https://login.microsoftonline.com/bbb (OAuth V2) 開頭,做為 Microsoft Entra ID 的簽發者。 適用對象聲明具有一個值,該值表示您的邏輯應用資源的預期適用對象。

    例如,假設邏輯應用程式資源的授權原則需要兩種宣告類型:對象和簽發者。 解碼存取權杖的這個範例承載區段包含宣告類型,其中 aud 是對象值,而 iss 是簽發者值:

    {
        "aud": "https://management.core.windows.net/",
        "iss": "https://sts.windows.net/<Azure-AD-issuer-ID>/",
        "iat": 1582056988,
        "nbf": 1582056988,
        "exp": 1582060888,
        "_claim_names": {
           "groups": "src1"
        },
        "_claim_sources": {
           "src1": {
              "endpoint": "https://graph.windows.net/7200000-86f1-41af-91ab-2d7cd011db47/users/00000-f433-403e-b3aa-7d8406464625d7/getMemberObjects"
           }
        },
        "acr": "1",
        "aio": "AVQAq/8OAAAA7k1O1C2fRfeG604U9e6EzYcy52wb65Cx2OkaHIqDOkuyyr0IBa/YuaImaydaf/twVaeW/etbzzlKFNI4Q=",
        "amr": [
           "rsa",
           "mfa"
        ],
        "appid": "c44b4083-3bb0-00001-b47d-97400853cbdf3c",
        "appidacr": "2",
        "deviceid": "bfk817a1-3d981-4dddf82-8ade-2bddd2f5f8172ab",
        "family_name": "Sophia Owen",
        "given_name": "Sophia Owen (Fabrikam)",
        "ipaddr": "167.220.2.46",
        "name": "sophiaowen",
        "oid": "3d5053d9-f433-00000e-b3aa-7d84041625d7",
        "onprem_sid": "S-1-5-21-2497521184-1604012920-1887927527-21913475",
        "puid": "1003000000098FE48CE",
        "scp": "user_impersonation",
        "sub": "KGlhIodTx3XCVIWjJarRfJbsLX9JcdYYWDPkufGVij7_7k",
        "tid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "unique_name": "SophiaOwen@fabrikam.com",
        "upn": "SophiaOwen@fabrikam.com",
        "uti": "TPJ7nNNMMZkOSx6_uVczUAA",
        "ver": "1.0"
    }
    

啟用 OAuth 2.0 並啟用 Microsoft Entra ID 作為呼叫請求端點的唯一選項

對於要求型端點,您可以限制授權僅使用具有 Microsoft Entra ID 的 OAuth 2.0。 即使您也停用共用存取簽章 (SAS) 驗證,此選項仍適用。

  1. 針對你的工作流程,設定 請求觸發器 或 HTTP Webhook 觸發器,並具備檢查 OAuth 存取權杖的功能,方法是 依照步驟在請求或 HTTP webhook 觸發器輸出中加入「授權」標頭。

    Note

    此步驟會在工作流程的執行歷程記錄和觸發程序的輸出中顯示 Authorization 標頭。

  2. 在 Azure 入口網站,在設計器中開啟你的工作流程。

  3. 在設計工具中,選取觸發程序。 在開啟的資訊窗格上,選取 [設定]。

  4. 在 [一般]>[觸發條件] 底下,選取 [新增]。 在觸發條件方塊中,根據您想要使用的權杖類型,輸入下列任一運算式:

    @startsWith(triggerOutputs()?['headers']?['Authorization'], 'Bearer')

    -或-

    @startsWith(triggerOutputs()?['headers']?['Authorization'], 'PoP')

如果您在沒有正確授權的情況下呼叫觸發端點,執行歷程會將觸發程序顯示為 Skipped,且不會顯示任何指出觸發條件失敗的訊息。

取得擁有權證明 (PoP) 權杖

Microsoft 驗證程式庫 (MSAL) 程式庫會提供 PoP 權杖供您使用。 如果你想呼叫的消費邏輯應用程式工作流程需要 PoP 標記,你可以透過 MSAL 函式庫取得這個標記。 下列範例示範如何取得 PoP 權杖:

若要將 PoP 權杖用於您的取用邏輯應用程式工作流程,請按照步驟設定具有 Microsoft Entra ID 的 OAuth。

為您的取用邏輯應用程式資源啟用具有 Microsoft Entra ID 的 OAuth

若要將授權原則新增至取用邏輯應用程式,請依照 Azure 入口網站或 Azure Resource Manager 範本的步驟操作:

  1. 在 Azure 入口網站中,於設計工具中開啟您的使用量邏輯應用程式和工作流程。

  2. 在 Logic App 側邊欄的 設定裡,選擇 授權。

  3. 在 [授權] 頁面上,選取 [新增原則]。

    截圖顯示 Azure 入口網站、授權頁面,以及已選中的新增政策按鈕。

  4. 提供授權原則的相關資訊,請指定宣告類型和值 (在每次輸入呼叫要求觸發程序時所出示的存取權杖中,符合邏輯應用程式所預期):

    顯示 Azure 入口網站、授權頁面和授權政策細節的截圖。

    Property Required 類型 說明
    原則名稱 Yes String 您想要用於授權原則的名稱
    政策類型 Yes String 持有人類型權杖的 AAD 或擁有權證明類型權杖的 AADPOP。
    Claims Yes String 索引鍵/值組,指定工作流程要求觸發程序在對觸發程序的每個輸入呼叫所呈現的存取權杖中預期的宣告類型和值。 您可以選取 [新增標準宣告] 來新增您想要的任何標準宣告。 若要新增 PoP 權杖的特定宣告,請選取 [新增自訂宣告]。

    可用的標準宣告類型:

    - 簽發者
    - 對象
    - 主體
    - JWT 識別碼 (JSON Web 權杖識別碼)

    要求:

    - 至少, 理賠 清單必須包含以下理賠類型:

    -- 簽發者:將值設定為以 https://sts.windows.net/ 或 https://login.microsoftonline.com/ 開頭,作為 Microsoft Entra 簽發者 ID。
    -- 受眾:此值會設為您的 Logic Apps 資源的預期受眾。

    - 每個宣告都必須是單一字串值,而不是值的陣列。 例如,您可以擁有具有 Role 做為類型的宣告,而 [開發人員] 做為值。 您無法擁有具有 Role 做為類型的宣告,以及設定為開發人員和方案經裡的值。

    - 宣告值限制為最大字元數。

    您也可以指定自己的宣告類型和值。 如需這些宣告類型的詳細資訊,請參閱 Microsoft Entra 安全性權杖中的宣告。

    下列範例顯示 PoP 權杖的資訊:

    截圖顯示 Azure 入口網站、授權頁面及擁有權證明政策資訊。

  5. 若要新增另一個宣告,請從下列選項中選取:

    • 若要新增另一個宣告類型,請選取 [新增標準宣告],選取宣告類型,然後指定宣告值。

    • 若要新增自己的宣告,請選取 [新增自訂宣告]。 如需詳細資訊,請檢閱如何為應用程式提供選擇性宣告。 您的自訂宣告隨後會儲存為 JWT 識別碼的一部分,例如:"tid": "aaaabbbb-0000-cccc-1111-dddd2222eeee"。

  6. 若要新增另一個授權原則,請選取 [新增原則]。 重複上述步驟來設定原則。

  7. 完成後,選取 [儲存]。

  8. 若要在要求型觸發程序輸出中包含存取權杖的 Authorization 標頭,請檢閱在要求和 HTTP Webhook 觸發程序輸出中包含 'Authorization' 標頭。

Azure 入口網站中的工作流程程式碼檢視,不會顯示如原則之類的工作流程屬性。 若要以程式設計方式存取您的原則,請透過 Azure Resource Manager 呼叫下列 API:https://management.azure.com/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group-name}/providers/Microsoft.Logic/workflows/{your-workflow-name}?api-version=2016-10-01&_=1612212851820。 請確認已取代 Azure 訂用帳戶識別碼、資源群組名稱和工作流程名稱的預留位置值。

在要求或 HTTP Webhook 觸發程序輸出中包含 'Authorization' 標頭

對於啟用具有 Microsoft Entra ID 的 OAuth 以授權給輸入呼叫存取要求型觸發程序的邏輯應用程式,您可以啟用要求觸發程序或 HTTP Webhook 觸發程序輸出,以包含來自 OAuth 存取權杖的 Authorization 標頭。 在觸發程序的基礎 JSON 定義中,將 operationOptions 屬性新增並設定為 IncludeAuthorizationHeadersInOutputs。 以下是要求觸發程序的範例:

"triggers": {
   "manual": {
      "inputs": {
         "schema": {}
      },
      "kind": "Http",
      "type": "Request",
      "operationOptions": "IncludeAuthorizationHeadersInOutputs"
   }
}

欲了解更多資訊,請參閱:

產生共用存取簽章 (SAS) 金鑰或權杖

若工作流程始於要求型觸發程序,且您是首次儲存該工作流程,則 Azure Logic Apps 會在該觸發程序上建立可呼叫的端點。 此端點具有可接收輸入呼叫或要求啟動工作流程的 URL。 該 URL 包含共用存取簽章 (SAS),這是將權限授與儲存體服務 (舉例而言) 的金鑰或權杖。 此端點 URL 使用下列格式:

https://<request-endpoint-URI>sp=<permissions>sv=<SAS-version>sig=<signature>

例如,若要在要求觸發程序中檢視此 URL,請尋找觸發程序的 HTTP URL 屬性:

這張截圖顯示了 Azure 入口網站、Consumption 工作流程,以及名為 HTTP URL 的請求觸發端點屬性。

完整的 URL 如下列範例所示:

https://{domain}:443/workflows/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

URL 中的 SAS 具有查詢參數,如下表所說明:

查詢參數 說明
sp 指定權限供允許的 HTTP 方法使用。
sv 指定用於產生簽章的 SAS 版本。
sig 指定簽章以用於驗證對觸發程序的存取。 在所有 URL 路徑和屬性上,系統會使用 SHA256 演算法,搭配祕密存取金鑰,以產生此簽章。 此金鑰會保密並加密、與邏輯應用程式一起儲存,且永不公開或發佈。 您的邏輯應用程式只會針對包含使用祕密金鑰建立之有效簽章的觸發程序進行授權。

Important

保護你的 SAS 金鑰,就像保護帳號金鑰防止未經授權使用一樣。 設定或準備用於撤銷遭入侵存取金鑰的計劃。 當您散發使用存取金鑰的 URI 時,請自行判斷,且只透過 HTTPS 等安全連線來散發這類 URI。 請務必僅執行透過 HTTPS 連線使用存取金鑰的作業。 URI 具有效金鑰的任何人都可以存取相關聯的資源。

為了維護安全並保護工作流程存取權,請定期 重新生成存取金鑰 ,因為這些金鑰可能需要遵守安全政策或遭到入侵。 如此一來,您可以確定只有授權的要求可以觸發您的工作流程,以保護您的資料和程序免於遭到未經授權的存取。

如果你使用 SAS 金鑰存取儲存服務,請建立使用者委派 SAS,其受 Microsoft Entra ID 保護,而不是使用帳戶金鑰。

為了達到最佳安全性,盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。 若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

對要求型觸發程序的端點進行輸入呼叫只能使用一個授權配置:SAS 或具有 Microsoft Entra ID 的 OAuth 2.0。 雖然使用一個配置時並不會停用另一個,但若同時使用這兩個配置,Azure Logic Apps 會產生錯誤,因為服務不知道應選擇哪一個配置。

如果您有始於要求觸發程序的取用工作流程,則可以停用 SAS 驗證。 即使您也限制授權僅使用具有 Microsoft Entra ID 的 OAuth 2.0,此選項仍適用。 對於標準工作流程,您可以使用其他驗證類型而不停用 SAS。

如需使用 SAS 金鑰時的安全性詳細資訊,請參閱本指南中的下列各節:

停用共享存取簽章(SAS)認證

根據預設,要求型觸發程序會啟用 SAS 驗證。 觸發程序的端點 URL 包含 SAS,開頭為查詢參數 sp-<permissions>sv-<SAS-version>sig=<signature>,例如:

https://{domain}:443/workflows/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

如果你的工作流程是從 Request 觸發器開始,且你想使用 OAuth 搭配 Microsoft Entra ID,你可以關閉 SAS 認證以避免執行錯誤和問題。 您也可藉由移除對秘密的相依性來新增安全性階層,進而降低記錄或洩漏秘密的風險。

即使您也啟用具有 Microsoft Entra ID 的 OAuth 2.0,作為呼叫要求型端點的唯一選項,此選項仍適用。 對於標準工作流程,您可以使用其他驗證類型而不停用 SAS。

Note

此動作會停用傳入要求的 SAS 驗證,並使現有的 SAS 金鑰或簽章無法運作。 不過,您的 SAS 金鑰或簽章仍然有效,且再次啟用 SAS 驗證後仍可運作。

若要藉由建立新版本來停用 SAS 金鑰和簽章,請參閱重新產生存取金鑰。

停用 SAS 驗證之後,要求觸發程序的端點 URL 即不再包含 SAS 金鑰,例如:

https://{domain}:443/workflows/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01

停用 SAS 認證的前提條件

要在基於請求的觸發器中停用 SAS 認證,你需要一個工具來發送 REST API 呼叫,例如:

注意事項

針對您有敏感數據的案例,例如認證、秘密、存取令牌、API 密鑰和其他類似資訊,請務必使用一個工具,以必要的安全性功能保護您的數據。 此工具應該離線或本機運作,且不需要登入線上帳戶或將數據同步處理至雲端。 當您使用具有這些特性的工具時,可以降低公開敏感數據給公眾的風險。

檢查已啟用或停用 SAS 的觸發程序

SAS 驗證停用時,觸發程序的端點 URL 即不再包含 SAS 金鑰。 此外,取用工作流程定義也會包含 sasAuthenticationPolicy JSON 物件。 此物件具有設定為 [已停用] 的狀態屬性,例如:

"properties": {
    "accessControl": {
        "triggers": {
            "sasAuthenticationPolicy": {
                "state": "Disabled"
            }
        }
    }
}

若要尋找已啟用或停用 SAS 的取用工作流程,請檢查工作流程定義是否包含狀態屬性設定為 [已停用] 的 sasAuthenticationPolicy 物件。

  1. 使用工具傳送 REST API 呼叫後,請使用下列 GET 要求執行工作流程 -取得作業,以取得工作流程的相關資訊,例如:

    GET https://management.azure.com/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Logic/workflows/{workflow-name}?api-version=2016-06-01

  2. 取得工作流程 - 取得作業的輸出,並檢查 sasAuthenticationPolicy 物件是否存在,且狀態屬性設定為 [已停用]。

將 sasAuthenticationPolicy 屬性新增至您的工作流程定義

對於要停用 SAS 驗證的取用工作流程,請遵循下列步驟:

  1. 執行下列作業 (若尚未執行):使用下列 GET 要求執行工作流程 -取得作業,以取得工作流程的相關資訊,例如:

    GET https://management.azure.com/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Logic/workflows/{workflow-name}?api-version=2016-06-01

  2. 取得工作流程 - 取得作業的輸出,並手動新增下列元素:

    1. 在 properties 物件中,新增包含 accessControl 物件的 triggers 物件 (如果不存在)。

    2. 在 triggers 物件中新增 sasAuthenticationPolicy 物件,且其中包含設定為 state 的 Disabled 屬性。

    完成作業後,編輯的部分會如同下列範例所示:

    "properties": {
        "accessControl": {
            "triggers": {
                "sasAuthenticationPolicy": {
                    "state": "Disabled"
                }
            }
        }
    }
    
  3. 使用下列 PUT 要求執行工作流程 - 更新作業 (部分機器翻譯),傳送另一個要求以使用經過編輯的輸出 (作為要求本文中的輸入) 更新工作流程,例如:

    PUT https://management.azure.com/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Logic/workflows/{workflow-name}?api-version=2016-06-01

  4. 在 Azure 入口網站中,移至設計工具中的取用工作流程,並確認要求觸發程序的 URL 不再包含 SAS。

  5. 若要啟用具有 Microsoft Entra ID 的 OAuth 2.0,請在邏輯應用程式資源層級為具有 Microsoft Entra ID 的 OAuth 新增授權原則。

    如需詳細資訊,請參閱具有 Microsoft Entra ID 的 OAuth 2.0。

重新產生存取金鑰

若要維護安全性並保護對邏輯應用程式工作流程的存取,請定期重新產生存取金鑰,因為它們可能需要符合安全性原則或遭到入侵。 如此一來,您可以確定只有授權的要求可以觸發您的工作流程,以保護您的資料和程序免於遭到未經授權的存取。

隨時想要產生新的存取金鑰時,請使用 Azure REST API 或 Azure 入口網站。 之前使用舊金鑰產生的所有 URI 或 URL 都會失效,不再有授權來觸發邏輯應用程式工作流程。 重新產生之後,將以新的存取金鑰來簽署您取出的 URI。

  1. 在 Azure 入口網站中,開啟使用您要重新產生之金鑰的邏輯應用程式資源。

  2. 在邏輯應用程式資源功能表的 [設定] 下,選取 [存取金鑰]。

  3. 選取您要重新產生的金鑰,並完成流程。

Important

保護你的存取金鑰,就像保護帳號金鑰免於未經授權使用一樣。 設定或準備用於撤銷遭入侵存取金鑰的計劃。 當您散發使用存取金鑰的 URI 時,請自行判斷,且只透過 HTTPS 等安全連線來散發這類 URI。 請務必僅執行透過 HTTPS 連線使用存取金鑰的作業。 任何擁有有效金鑰的 URI 的人都可以存取該資源。

如果您使用 SAS 金鑰來存取儲存服務,請建立使用者委派 SAS,其受 Microsoft Entra ID 保護,而不是使用帳戶金鑰。

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

建立有期限的回呼 URL

對於以要求為基礎的觸發程序,如果您要將端點 URL 分享給其他人,您可以產生使用特定金鑰且有到期日的回呼 URL。 透過這種方式,您可以順暢地輪替金鑰,或根據特定時間區間限制對觸發邏輯應用程式的存取。 若要指定 URL 的到期日,請使用 Azure Logic Apps REST API,例如:

POST /subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Logic/workflows/{workflow-name}/triggers/{trigger-name}/listCallbackUrl?api-version=2016-06-01

在本文中,使用 JSON 日期字串包含 NotAfter 屬性。 此屬性會傳回只在 NotAfter 日期與時間之前有效的回呼 URL。

使用主要或次要祕密金鑰建立 URL

針對以要求為基礎的觸發程序,當您產生或列出回呼 URL 時,您可以指定用於簽署 URL 的金鑰。 若要產生以特定金鑰簽署的 URL,請使用 Azure Logic Apps REST API,例如:

POST /subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Logic/workflows/{workflow-name}/triggers/{trigger-name}/listCallbackUrl?api-version=2016-06-01

在本文中,將屬性 KeyType 包含為 Primary 或 Secondary。 此屬性會傳回以特定安全金鑰簽署的 URL。

使用 Azure API 管理來公開邏輯應用程式工作流程

如需更多驗證通訊協定和選項,請考慮使用 Azure API 管理將邏輯應用程式工作流程公開為 API。 此服務可為任何端點提供豐富的監視、安全性、原則和記錄功能。 API 管理可以公開邏輯應用程式的公用或私人端點。 若要授權存取此端點,您可以使用 OAuth 搭配 Microsoft Entra ID、用戶端憑證或其他安全性標準。 當 API 管理收到要求時,服務會傳送要求至您的邏輯應用程式,並會在過程中進行任何必要的轉換或限制。 若只要讓 API 管理呼叫邏輯應用程式工作流程,您可以限制邏輯應用程式的輸入 IP 位址。

欲了解更多資訊,請參閱:

限制輸入 IP 位址

除了共用存取簽章 (SAS),您可能還想特別限制哪些用戶端可呼叫邏輯應用程式工作流程。 例如,如果您使用 Azure API 管理來管理要求端點,您可以限制邏輯應用程式工作流程接受的要求,只能來自您建立的 API 管理服務執行個體 IP 位址。

無論您指定的 IP 位址為何,您仍可使用工作流程觸發程序 - 執行作業要求或使用 API 管理來執行具有要求型觸發程序的邏輯應用程式工作流程。 不過,此情況仍然需要經過 Azure REST API 來驗證。 所有事件都出現在 Azure 稽核記錄中。 請確定您已適當地設定存取控制原則。

若要限制邏輯應用程式工作流程的輸入 IP 位址,請針對 Azure 入口網站或 Azure Resource Manager 範本執行下列對應步驟。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

在 Azure 入口網站中,IP 位址限制會影響觸發程序及動作,這與入口網站中 [允許的輸入 IP 位址] 底下的描述相反。 若要為觸發程序和動作分別設定此篩選,請對邏輯應用程式資源或 Azure Logic Apps REST API 中的accessControl作業使用 Azure Resource Manager 範本中的 物件。

取用工作流程
  1. 在 Azure 入口網站中,於設計工具中開啟您的使用量邏輯應用程式和工作流程。

  2. 在 Logic App 側邊欄的 設定裡,選擇 工作流程設定。

  3. 在 [存取控制組態] 區段的 [允許的輸入 IP 位址] 下,選擇案例的路徑:

    • 若要讓您的工作流程可透過 Azure Logic Apps 內建動作來呼叫,但僅限作為巢狀工作流程,請選取 僅其他 Logic Apps。 只有在您使用 Azure Logic Apps 動作來呼叫巢狀工作流程時,此選項才有作用。

      此選項會將空陣列寫入邏輯應用程式資源,並且要求只有從使用內建 Azure Logic Apps 動作的父工作流程呼叫,才能觸發巢狀工作流程。

    • 若要透過 HTTP 動作使你的工作流程可呼叫,但僅限於巢狀工作流程,請選擇 特定 IP 範圍。 當 [觸發程序的 IP 範圍] 方塊出現時,請輸入父工作流程的輸出 IP 位址。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

      Note

      如果您使用 [只有其他邏輯應用程式] 選項和 HTTP 動作來呼叫巢狀工作流程,呼叫會遭到封鎖,並收到「401 未授權」錯誤。

    • 如果您想要限制來自其他 IP 的輸入呼叫的情況,當 [觸發程序的 IP 範圍] 方塊出現時,請指定觸發程序接受的 IP 位址範圍。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

  4. 可選擇性地,在「 限制呼叫以取得執行歷史輸入與輸出訊息至所提供 IP 位址」中,指定可存取輸入與輸出訊息的 IP 位址範圍。

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

  2. 在 Logic App 側邊欄的 設定 底下,選取 網路。

  3. 在 [輸入流量組態] 區段的 [公用網路存取] 旁,選取 [已啟用且無存取限制]。

  4. 在 [存取限制] 頁面的 [應用程式存取] 下,選取 [已從選取的虛擬網路和 IP 位址啟用]。

  5. 在 [網站存取和規則] 下,於 [主要網站] 索引標籤上,新增一或多個規則以允許或拒絕特定 IP 範圍的要求。 有效的 IP 範圍使用以下格式:x.x.x.x/x 或 x.x.x.x-x.x.x.x.x。

    如需詳細資訊,請參閱在 Azure Logic Apps (標準) 中封鎖輸入 IP 位址。

對其他服務和系統的輸出呼叫存取權

根據目標端點的能力,HTTP 觸發器或 HTTP 動作 所發出的外撥呼叫支援加密,並以 傳輸層安全(TLS)1.0、1.1、1.2 或 1.3 保護,過去稱為安全套接字層(SSL)。 Azure Logic Apps 會使用支援的最高可能版本與目標端點交涉。 例如,如果目標端點支援 1.3,HTTP 觸發器或動作會先使用 1.3。 否則,連接器會使用下一個最高支援的版本。

此清單包含 TLS/SSL 自我簽署憑證的相關資訊:

  • 對於多租用戶 Azure Logic Apps 環境中的使用量邏輯應用程式工作流程,HTTP 作業不允許自我簽署 TLS/SSL 憑證。 如果您的邏輯應用程式對伺服器進行 HTTP 呼叫,並呈現 TLS/SSL 自我簽署憑證,HTTP 呼叫就會失敗並出現 TrustFailure 錯誤。

  • 針對單一租用戶 Azure Logic Apps 環境中的標準邏輯應用程式工作流程,HTTP 作業支援自我簽署 TLS/SSL 憑證。 不過,您必須完成此驗證類型的幾個額外步驟。 否則,通話失敗。 如需詳細資訊,請檢閱單一租使用者 Azure Logic Apps 的 TLS/SSL 憑證驗證。

    如果您想要改用用戶端憑證或 OAuth 搭配 Microsoft Entra ID 與「憑證」認證類型,您仍然需要完成此驗證類型的幾個額外步驟。 否則,通話失敗。 如需詳細資訊,請參閱適用於單一租用戶 Azure Logic Apps 的用戶端憑證或 OAuth 搭配 Microsoft Entra ID 與「憑證」認證類型。

如果端點處理邏輯應用程式工作流程所傳送的呼叫,以下有其他方法有助於保護端點:

  • 將驗證新增至輸出要求。

    使用 HTTP 觸發程序或動作來傳送輸出呼叫時,您可以將驗證新增至邏輯應用程式所傳送的要求。 例如,您可以選取下列驗證類型:

  • 限制來自邏輯應用程式工作流程 IP 位址的存取。

    從邏輯應用程式工作流程對端點的所有呼叫,都源自以邏輯應用程式的區域為基礎的特定 IP 位址。 您可以新增篩選,以只接受來自那些 IP 位址的要求。 如需取得這些 IP 位址,請檢閱 Azure Logic Apps 的限制和設定。

  • 改善內部部署系統的連線安全性。

    Azure Logic Apps 與下列服務整合,提供更安全可靠的內部部署通訊。

    • 內部部署資料閘道。

      Azure Logic Apps 的許多受控連接器都支援安全連線至內部部署系統,例如檔案系統、SQL、SharePoint 和 DB2。 閘道會在加密通道上經過 Azure 服務匯流排傳送來自內部部署來源的資料。 所有流量都會從閘道 Agent 以安全的傳出流量形式發出。 了解內部部署資料閘道的運作方式。

    • 透過 Azure API 管理 連接。

      Azure API 管理提供內部部署連線選項,例如站對站虛擬私人網路和 ExpressRoute 整合,以對內部部署系統提供安全的 Proxy 和通訊。 如果您有提供內部部署系統存取權的 API,而且已藉由建立API 管理服務執行個體來公開該 API,您可以從邏輯應用程式的工作流程中呼叫該 API,方法是在工作流程設計工具中選取 [API 管理] 作業。

      Note

      連接器只會顯示您有權檢視和連線的 API 管理服務,但不會顯示以使用量為基礎的 API 管理服務。

      根據您的邏輯應用程式資源類型,遵循對應的步驟:

      使用量工作流程

      1. 根據您要新增 API 管理觸發程序還是動作,請遵循下列步驟:

      2. 從 [API 管理服務執行個體] 清單中,選取您先前建立的 API 管理服務執行個體。

      3. 從 [API 作業] 清單中,選取要呼叫的 API 作業,然後選取 [新增動作]。

      標準工作流程

      針對標準工作流程,您只能新增 [API 管理] 動作,而不是觸發程序。

      1. 在工作流程設計器中,依照一般步驟新增名為「呼叫 Azure API 管理 API」的動作。

      2. 從 [API 管理服務執行個體] 清單中,選取您先前建立的 API 管理服務執行個體。

      3. 從 [API 作業] 清單中,選取要呼叫的 API 作業,然後選取 [新建]。

        截圖顯示 Azure 入口網站、標準工作流程設計器,以及選擇要呼叫的 API。

將驗證新增至輸出呼叫

HTTP 和 HTTPS 端點支援各種類型的驗證。 在某些將輸出呼叫或要求傳送至這些端點的觸發程序和動作上,您可以指定驗證類型。 在工作流程設計工具中,支援選擇驗證類型的觸發程式和動作具有 [驗證] 屬性。 不過,此屬性不一定會預設顯示。 在這些情況下,請在觸發程序或動作上開啟 [進階參數] 清單,然後選取 [驗證]。

Important

若要保護邏輯應用程式工作流程所處理的敏感性資訊,請使用受保護的參數,並視需要將資料編碼。 如需使用及保護參數的詳細資訊,請檢閱存取參數輸入。

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

基本驗證

對於 HTTP 呼叫,基本驗證會使用 base64 編碼字串,其中包含用來提出要求的使用者名稱和密碼。 除非您在使用此選項時搭配 HTTPS/SSL 通訊協定,否則此方法會傳輸未加密的認證,因而提高安全性風險。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

如果 [基本] 是可用選項並已選取,請指定下列屬性值:

屬性 (設計工具) 屬性(JSON) Required 價值 說明
驗證 type Yes 基本 要使用的驗證類型
使用者名稱 username Yes < 使用者名稱> 用來驗證存取目標服務端點的使用者名稱
密碼 password Yes < 密碼> 用來驗證存取目標服務端點的密碼

當您使用受保護的參數來處理和保護敏感性資訊時,例如,在用於自動化部署的 Azure Resource Manager 範本中,您可以使用運算式在執行階段存取這些參數值。 這個 HTTP 動作定義範例將驗證 type 指定為 Basic,並使用 parameters() 函式 來取得參數值:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "@parameters('endpointUrlParam')",
      "authentication": {
         "type": "Basic",
         "username": "@parameters('userNameParam')",
         "password": "@parameters('passwordParam')"
      }
  },
  "runAfter": {}
}

用戶端憑證驗證

用戶端憑證驗證會允許或要求使用者直接使用 X.509 憑證對其 Microsoft Entra ID 進行驗證,以登入應用程式和瀏覽器。 此功能可協助您採用防釣魚驗證,並使用 X.509 憑證對公開金鑰基礎結構 (PKI) 進行驗證。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

如果 [用戶端憑證] 是可用選項並已選取,請指定下列屬性值:

屬性 (設計工具) 屬性(JSON) Required 價值 說明
驗證 type Yes 用戶端憑證
或
ClientCertificate
要使用的驗證類型。 您可以使用 Azure API 管理來管理憑證。

注意:自訂連接器不支援輸入和輸出呼叫的憑證式驗證。
Pfx pfx Yes < 編碼的 PFX 檔案內容> Base64 編碼的個人資訊交換 (PFX) 檔案內容

若要將 PFX 檔案轉換成 base64 編碼格式,您可以依照下列步驟使用 PowerShell 7:

1.將憑證內容儲存至變數:

$pfx_cert = [System.IO.File]::ReadAllBytes('c:\certificate.pfx')

2.使用 ToBase64String() 函式來轉換憑證內容,並將該內容儲存至文字檔:

[System.Convert]::ToBase64String($pfx_cert) | Out-File 'pfx-encoded-bytes.txt'

疑難排解:如果您使用 cert mmc/PowerShell 命令,可能會收到此錯誤:

Could not load the certificate private key. Please check the authentication certificate password is correct and try again.

若要解決此錯誤,請嘗試使用 openssl 命令,將 PFX 檔案轉換成 PEM 檔案,然後再次返回:

openssl pkcs12 -in certificate.pfx -out certificate.pem
openssl pkcs12 -in certificate.pem -export -out certificate2.pfx

之後,當您取得憑證新轉換 PFX 檔案的 base64 編碼字串時,字串現在可在 Azure Logic Apps 中使用。
密碼 password No < password-for-pfx-file> 用於存取 PFX 檔案的密碼

Note

如果你嘗試用 OpenSSL 的客戶端憑證認證,可能會遇到以下錯誤:

BadRequest: Could not load private key

若要解決此錯誤,請依照下列步驟執行︰

  1. 解除安裝所有 OpenSSL 執行個體。
  2. 安裝 OpenSSL 1.1.1t 版。
  3. 請使用新更新重新簽署你的證書。
  4. 使用用戶端憑證驗證時,將新的憑證新增至 HTTP 作業。

當您使用受保護的參數來處理和保護敏感性資訊時,例如,在用於自動化部署的 Azure Resource Manager 範本中,您可以使用運算式在執行階段存取這些參數值。 這個 HTTP 動作定義範例將驗證 type 指定為 ClientCertificate,並使用 parameters() 函式 來取得參數值:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "@parameters('endpointUrlParam')",
      "authentication": {
         "type": "ClientCertificate",
         "pfx": "@parameters('pfxParam')",
         "password": "@parameters('passwordParam')"
      }
   },
   "runAfter": {}
}

Important

如果你在單一租戶的 Azure Logic Apps 裡有標準邏輯應用程式資源,並且想用 HTTP 操作搭配 TLS/SSL 憑證、客戶端憑證,或是帶有Certificate憑證類型的 Microsoft Entra ID OAuth 來操作,請務必完成該認證類型的額外設定步驟。 否則,通話失敗。 如需詳細資訊,請參閱單一租用戶環境中的驗證。

欲了解更多關於利用用戶端憑證認證來保護服務的資訊,請參閱:

Active Directory OAuth(使用 Microsoft Entra ID 的 OAuth 2.0)驗證

在要求觸發程序上,您可以在為邏輯應用程式設定 Microsoft Entra 授權原則之後,使用 Microsoft Entra 平台來驗證傳入呼叫。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

在所有支援 Active Directory OAuth (具有 Microsoft Entra ID 的 OAuth 2.0) 驗證類型的其他觸發程序和動作上,指定下列屬性值:

屬性 (設計工具) 屬性(JSON) Required 價值 說明
驗證 type Yes Active Directory OAuth (具有 Microsoft Entra ID 的 OAuth 2.0)
或
ActiveDirectoryOAuth
要使用的驗證類型。 Azure Logic Apps 目前遵循 OAuth 2.0 通訊協定。
權限 authority No < URL-for-authority-token-issuer> 提供存取金鑰的授權單位 URL,例如 Azure 全球服務區域的 https://login.microsoftonline.com/。 針對其他國家/地區雲端,請檢閱 Microsoft Entra 驗證端點 - 選擇您的身分識別授權單位。
承租人 tenant Yes < 租戶識別碼> Microsoft Entra 租用戶的租用戶識別碼
目標對象 audience Yes < 需授權資源> 您希望用於授權的資源,例如,https://management.core.windows.net/
客戶識別碼 clientId Yes < 用戶端識別碼> 要求授權的應用程式用戶端識別碼
認證類型 credentialType Yes 憑證
或
祕密
用戶端要求授權時使用的認證類型。 此屬性和值不會出現在邏輯應用程式的基礎定義中,但可決定在選取的認證類型上出現的屬性。
祕密 secret 是,但僅適用於「祕密」認證類型 < 用戶端金鑰> 要求授權用的用戶端密碼
Pfx pfx 是,但僅適用於「憑證」認證類型 < 編碼的 PFX 檔案內容> Base64 編碼的個人資訊交換 (PFX) 檔案內容
密碼 password 是,但僅適用於「憑證」認證類型 < password-for-pfx-file> 用於存取 PFX 檔案的密碼

當您使用受保護的參數來處理和保護敏感性資訊時,例如,在用於自動化部署的 Azure Resource Manager 範本中,您可以使用運算式在執行階段存取這些參數值。 這個 HTTP 動作定義範例將驗證 type 指定為 ActiveDirectoryOAuth,將認證類型指定為 Secret,並使用 parameters() 函式來取得參數值:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "@parameters('endpointUrlParam')",
      "authentication": {
         "type": "ActiveDirectoryOAuth",
         "tenant": "@parameters('tenantIdParam')",
         "audience": "https://management.core.windows.net/",
         "clientId": "@parameters('clientIdParam')",
         "credentialType": "Secret",
         "secret": "@parameters('secretParam')"
     }
   },
   "runAfter": {}
}

Important

如果你在單一租戶的 Azure Logic Apps 裡有標準邏輯應用程式資源,並且想用 HTTP 操作搭配 TLS/SSL 憑證、客戶端憑證,或是帶有Certificate憑證類型的 Microsoft Entra ID OAuth 來操作,請務必完成該認證類型的額外設定步驟。 否則,通話失敗。 如需詳細資訊,請參閱單一租用戶環境中的驗證。

原始驗證

如果有 Raw 選項,當你需要使用不遵循 OAuth 2.0 協定的認證方案時,請使用此認證類型。 使用此類型時,您可以手動建立授權標頭值以隨著傳出要求一起傳送,並在觸發程序或動作中指定該標頭值。

Important

為了達到最佳安全性,建議盡可能使用 Microsoft Entra ID 搭配受管理身份進行認證。 此選項提供更優越的安全保障,且不需憑證。 Azure 會管理此身分識別,並協助確保驗證資訊安全性,讓您無須管理這項敏感性資訊。

若要設定 Azure Logic Apps 的受控識別,請參閱 使用 Azure Logic Apps 中的受控識別來驗證 Azure 資源的存取權和連線。

下列範例顯示遵循 OAuth 1.0 通訊協定的 HTTPS 要求範例標頭:

Authorization: OAuth realm="Photos",
   oauth_consumer_key="dpf43f3p2l4k3l03",
   oauth_signature_method="HMAC-SHA1",
   oauth_timestamp="137131200",
   oauth_nonce="wIjqoS",
   oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready",
   oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D"

在支援原始驗證的觸發程序或動作中,請指定下列屬性值:

屬性 (設計工具) 屬性(JSON) Required 價值 說明
驗證 type Yes 未加工 要使用的驗證類型
價值 value Yes < 授權標頭值> 要用於驗證的授權標頭值

當你使用安全參數來處理和保護敏感資訊時,例如在 Azure Resource Manager 範本中自動化部署,你可以在執行時使用表達式來存取這些參數值。 這個 HTTP 動作定義範例將驗證 type 指定為 Raw,並使用 parameters() 函式 來取得參數值:

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "@parameters('endpointUrlParam')",
      "authentication": {
         "type": "Raw",
         "value": "@parameters('authHeaderParam')"
      }
   },
   "runAfter": {}
}

管理式身份驗證

當支援管理身份驗證的觸發器或動作中有受管理身份選項時,你的邏輯應用程式可以使用此身份來驗證由 Microsoft Entra ID 保護的 Azure 資源存取權,而不必使用憑證、秘密或 Microsoft Entra 憑證。 Azure 會為您管理此身分識別,並協助保護您的認證,因為您不需要管理祕密或直接使用 Microsoft Entra 權杖。 深入了解支援使用受控識別進行 Microsoft Entra 驗證的 Azure 服務。

  • 使用量邏輯應用程式資源可以使用系統指派的身分識別,或單一手動建立的使用者指派身分識別。

  • 標準邏輯應用程式資源類型支援同時啟用系統指派的受控識別和多個使用者指派的受控識別,但您隨時仍只能選取一個身分識別來使用。

    Note

    預設已啟用系統指派的身分識別在執行階段驗證連線。 此身分識別與您建立連線時所使用的驗證認證或連接字串不同。 如果你停用這個身份,連線在執行時就無法運作。 要查看此設定,請在 Logic App 側邊欄的設定中選擇「身份」。

  1. 若要讓邏輯應用程式使用受控識別,請遵循在 Azure Logic Apps 中使用受控識別來驗證對 Azure 資源的存取中的步驟。 這些步驟會在邏輯應用程式上啟用受控識別,並設定該身分識別對目標 Azure 資源的存取權。

  2. 請先啟用 Azure 函式的驗證,Azure 函式才能使用受控識別。

  3. 在支援使用受控識別的觸發程序或動作中,提供這項資訊:

    內建觸發程序和動作

    屬性 (設計工具) 屬性(JSON) Required 價值 說明
    驗證 type Yes 受控識別
    或
    ManagedServiceIdentity
    要使用的驗證類型
    受控識別 identity No < 使用者指派身份識別碼> 要使用的使用者指派的受控識別。 注意:使用系統指派的受控識別時,請勿包含此屬性。
    目標對象 audience Yes < 目標資源識別碼> 資源識別碼,代表您想要存取的目標資源。

    例如,https://storage.azure.com/ 為所有儲存體帳戶提供有效的驗證存取權杖。 不過,您也可以為特定儲存體帳戶指定根服務 URL,例如 https://fabrikamstorageaccount.blob.core.windows.net。

    注意:某些觸發程序或動作中,可能會隱藏 [對象] 屬性。 若要顯示此屬性,請在觸發程序或動作中開啟 [進階參數] 清單,然後選取 [對象]。

    重要:請確保此目標資源 ID 與 Microsoft Entra ID 預期的值完全一致,包括任何必要的結尾斜線。 因此,所有 Azure Blob 儲存體帳戶的 https://storage.azure.com/ 資源識別碼需要有尾端斜線。 不過,特定儲存體帳戶的資源識別碼不需要尾端斜線。 若要尋找這些資源識別碼,請檢閱支援 Microsoft Entra ID 的 Azure 服務。

    當你使用安全參數來處理和保護敏感資訊時,例如在 Azure Resource Manager 範本中自動化部署,你可以在執行時使用表達式來存取這些參數值。 例如,這個 HTTP 動作定義範例會將驗證 type 指定為 ManagedServiceIdentity,並使用 parameters() 函式 來取得參數值:

    "HTTP": {
       "type": "Http",
       "inputs": {
          "method": "GET",
          "uri": "@parameters('endpointUrlParam')",
          "authentication": {
             "type": "ManagedServiceIdentity",
             "audience": "https://management.azure.com/"
          },
       },
       "runAfter": {}
    }
    

    受控連接器觸發程序和動作

    屬性 (設計工具) Required 價值 說明
    連線名稱 Yes < 連線名稱>
    受控識別 Yes 系統指派的管理身份
    或
    < 使用者指派之管理身分名稱>
    要使用的驗證類型

封鎖由特定連接器建立的連線

如果您的組織不允許使用 Azure Logic Apps 中的連接器連線到特定資源,您可以使用 Azure 原則,封鎖在邏輯應用程式工作流程中為特定連接器建立這些連線的功能。 如需詳細資訊,請參閱封鎖 Azure Logic Apps 中特定連接器所建立的連線。

邏輯應用程式的隔離指引

關於隔離的更多資訊,請參見: