保護 Azure Logic Apps 中工作流程的存取和數據

Azure Logic Apps 依靠 Azure 儲存體來儲存和自動加密待用資料。 這道加密可保護您的資料安全,並協助您符合組織安全性和合規性承諾。 根據預設,Azure 儲存體會使用 Microsoft 管理的金鑰來加密您的資料。 如需詳細資訊,請檢閱待用資料的 Azure 儲存體加密

若要在 Azure Logic Apps 中進一步控制存取及保護敏感性資料,您可以提升這幾個方面的安全性:

如需 Azure 中安全性的詳細資訊,請檢閱下列主題:

存取邏輯應用程式作業

僅針對取用邏輯應用程式,您必須先有特定權限,才能建立或管理邏輯應用程式及其連線,這些權限是使用 Azure 角色型存取控制 (Azure RBAC) 透過角色所提供。 您也可以設定權限,僅允許特定使用者或群組可執行特定工作,例如管理、編輯和檢視邏輯應用程式。 若要控制其權限,您可以將內建或自訂角色指派給可存取 Azure 訂用帳戶的成員。 Azure Logic Apps 具有下列特定角色,取決於您有使用量或標準邏輯應用程式工作流程:

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

例如,假設您必須使用未建立的邏輯應用程式工作流程,並驗證該邏輯應用程式工作流程所使用的連線。 您的 Azure 訂用帳戶需要包含該邏輯應用程式資源的資源群組參與者權限。 如果您建立邏輯應用程式資源,便會自動獲得參與者存取權。

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

標準工作流程

注意

此功能處於預覽狀態,且受限於 Microsoft Azure 預覽版的補充使用規定

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

存取執行歷程記錄資料

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

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

若要控制存取邏輯應用程式執行歷程記錄中的輸入和輸出,您有下列選項:

依 IP 位址範圍限制存取

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

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

若要指定允許的 IP 範圍,請針對 Azure 入口網站或 Azure Resource Manager 範本執行下列步驟:

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

  2. 在邏輯應用程式功能表的 [設定] 底下,選取 [工作流程設定]

  3. 在 [存取控制設定]>[允許的輸入 IP 位址] 底下,選取 [特定 IP 範圍]

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

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

  2. 在邏輯應用程式功能表的 [設定] 底下,選取 [網路]

  3. 在 [輸入流量] 區段中,選取 [存取限制]

  4. 建立一或多個規則,以 [允許] 或 [拒絕] 來自特定 IP 範圍的要求。 您也可以使用 HTTP 標頭來篩選設定和轉送設定。

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

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

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

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

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

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

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

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

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

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

    保護輸出設定

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

    保護輸出作為對大多數動作的輸入和下游影響

    「撰寫」、「剖析 JSON」和「回應」動作只有 [保護輸入] 設定。 此設定開啟時也會隱藏這些動作的輸出。 如果這些動作明確使用上游保護的輸出作為輸入,Azure Logic Apps 會隱藏這些動作的輸入和輸出,但「不會啟用」這些動作的 [保護輸入] 設定。 如果下游動作明確使用「撰寫」、「剖析 JSON」或「回應」動作的隱藏輸出作為輸入,Azure Logic Apps「不會隱藏此下游動作的輸入或輸出」

    保護輸出做為對特定動作造成下游影響的輸入

    保護輸入設定

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

    保護對大部分動作的輸入和下游影響

    如果「撰寫」、「剖析 JSON」和「回應」動作明確使用的可見輸出,來自於具有受保護輸入的觸發程序或動作,Azure Logic Apps 會隱藏這些動作的輸入和輸出,但「不會啟用」這些動作的 [保護輸入] 設定。 如果下游動作明確使用「撰寫」、「剖析 JSON」或「回應」動作的隱藏輸出作為輸入,Azure Logic Apps「不會隱藏此下游動作的輸入或輸出」

    保護對特定動作的輸入和下游影響

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

  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 區段。 若要保護參數值而不要在編輯邏輯應用程式或檢視執行歷程記錄時出現,請使用 securestringsecureobject 型別來定義參數,並視需要使用編碼。 此型別的參數不會隨著資源定義一起傳回,而在部署之後檢視資源時也無法存取。 若要在執行階段存取這些參數值,請在工作流程定義內使用 @parameters('<parameter-name>') 運算式。 此運算式只在執行階段評估,而且以工作流程定義語言來描述。

注意

如果您在要求標頭或本文中使用參數,則在檢視工作流程的執行歷程記錄及傳出 HTTP 要求時,可能會看見此參數。 請務必也適當地設定內容存取原則。 您也可以使用混淆,以隱藏執行歷程記錄中的輸入和輸出。 依預設,Authorization 標頭不會透過輸入或輸出顯示。 如此一來如果該處有使用密碼,就無法擷取密碼。

如需詳細資訊,請檢閱本主題中的下列各節:

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

例如,如果您使用秘密,您可以定義和使用受保護的範本參數,在部署時從 Azure Key Vault 取得這些秘密。 然後,您可以在參數檔案中參考金鑰保存庫和祕密。 如需詳細資訊,請檢閱下列主題:

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

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

"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 區段。 若要保護密碼、金鑰、秘密及其他敏感性資訊,請在範本層級和工作流程定義層級,使用 securestringsecureobject 型別來定義受保護的參數。 然後,您可以將這些值儲存在 Azure Key Vault 中,並使用參數檔案來參考金鑰保存庫和密碼。 然後,您的範本會在部署時取出該資訊。 如需詳細資訊,請檢閱在部署時使用 Azure Key Vault 傳遞敏感值

此清單包含這些 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": {}
}

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

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

驗證類型 邏輯應用程式與支援的連接器
基本 Azure API 管理、Azure App Service、HTTP、HTTP + Swagger、HTTP Webhook
用戶端憑證 Azure API 管理、Azure App Service、HTTP、HTTP + Swagger、HTTP Webhook
Active Directory OAuth - 消費方案:Azure API 管理、Azure App Service、Azure Functions、HTTP、HTTP + Swagger、HTTP Webhook

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

- 消費方案:Azure API 管理、Azure App Service、Azure Functions、HTTP、HTTP Webhook

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

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

受控連接器:Azure App Service、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

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

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

注意

為了回溯相容性,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

下列清單包含更多方式,可讓您限制存取接收邏輯應用程式輸入呼叫的觸發程序,僅允許擁有授權的用戶端呼叫邏輯應用程式:

產生共用存取簽章 (SAS)

邏輯應用程式上的每個要求端點在端點的 URL 中,都有共用存取簽章 (SAS),格式如下:

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

每個 URL 都包含 spsvsig 查詢參數,如下表所述:

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

對要求端點的輸入呼叫只能使用一個授權配置,例如 SAS 或 OAuth 搭配 Microsoft Entra ID。 雖然使用其中一個配置不會停用其他配置,但同時使用這兩個配置會造成錯誤,因為服務不知道要選擇哪一個配置。

如需使用 SAS 保護存取安全性的詳細資訊,請檢閱本主題中下列各節:

重新產生存取金鑰

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

  1. Azure 入口網站中,開啟邏輯應用程式,內有您要重新產生的金鑰。

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

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

建立有期限的回呼 URL

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

POST /subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-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,請使用 Logic Apps REST API,例如:

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

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

啟用 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth)

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

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

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

啟用 Microsoft Entra ID OAuth 之前的考量

  • 輸入要求端點時只能使用一種授權配置:OAuth 搭配 Microsoft Entra ID 或共用存取簽章 (SAS)。 雖然使用其中一個配置不會停用其他配置,但同時使用這兩個配置會造成錯誤,因為 Azure Logic Apps 不知道要選擇哪一個配置。

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

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

  • 授權原則至少必須包含簽發者宣告,其中有一個值的開頭以 https://sts.windows.net/https://login.microsoftonline.com/ (OAuth V2) 做為 Microsoft Entra 簽發者識別碼。

    例如,假設邏輯應用程式資源的授權原則需要兩種宣告類型:對象簽發者。 解碼存取權杖的這個範例承載區段包含宣告類型,其中 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": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "unique_name": "SophiaOwen@fabrikam.com",
        "upn": "SophiaOwen@fabrikam.com",
        "uti": "TPJ7nNNMMZkOSx6_uVczUAA",
        "ver": "1.0"
    }
    

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

  1. 遵循步驟,在要求或 HTTP Webhook 觸發程序輸出中包含 'Authorization' 標頭,以設定要求或 HTTP Webhook 觸發程序,使其具備檢查 OAuth 存取權杖的功能。

    注意

    此步驟會在工作流程的執行歷程記錄和觸發程序的輸出中顯示 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 範本執行下列步驟:

在 Azure 入口網站,將一或多個授權原則新增至取用邏輯應用程式資源:

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

  2. 在邏輯應用程式資源功能表上的 [設定] 下,選取 [授權]。 在 [授權] 窗格開啟之後,選取 [新增原則]

    此螢幕快照顯示 Azure 入口網站、取用邏輯應用程式功能表、授權頁面,以及要新增原則的已選取按鈕。

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

    顯示 Azure 入口網站、取用邏輯應用程式授權頁面,以及授權原則資訊的螢幕快照。

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

    可用的標準宣告類型:

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

    需求:

    - 宣告清單至少必須包含簽發者宣告,其中有一個開頭為 https://sts.windows.net/https://login.microsoftonline.com/ 的值作為 Microsoft Entra 簽發者識別碼。

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

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

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

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

    顯示 Azure 入口網站、取用邏輯應用程式授權頁面,以及擁有權證明原則信息的螢幕快照。

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

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

    • 若要新增自己的宣告,請選取 [新增自訂宣告]。 如需詳細資訊,請檢閱如何為應用程式提供選擇性宣告。 您的自訂宣告隨後會儲存為 JWT 識別碼的一部分,例如:"tid": "72f988bf-86f1-41af-91ab-2d7cd011db47"

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

  6. 完成時,選取儲存

  7. 若要在要求型觸發程序輸出中包含存取權杖的 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"
   }
}

如需詳細資訊,請檢閱下列主題:

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

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

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

限制輸入 IP 位址

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

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

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

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

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

  2. 在邏輯應用程式功能表上的 [設定] 底下,選取 [工作流程設定]。

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

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

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

    • 若要使用 HTTP 動作讓您的工作流程可供呼叫,但只能作為巢狀工作流程,請選取 [特定 IP 範圍]。 當 [觸發程序的 IP 範圍] 方塊出現時,請輸入父工作流程的輸出 IP 位址。 有效的 IP 範圍使用這些格式:x.x.x.x/xx.x.x.x-x.x.x.x

      注意

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

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

  4. 或者,在 [限制呼叫從執行歷程記錄取得輸入和輸出訊息到提供的 IP 位址] 下,您可以指定輸入呼叫的 IP 位址範圍,以存取執行歷程記錄中的輸入和輸出訊息。

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

  2. 在邏輯應用程式功能表的 [設定] 底下,選取 [網路]

  3. 在 [輸入流量] 區段中,選取 [存取限制]

  4. 建立一或多個規則,以 [允許] 或 [拒絕] 來自特定 IP 範圍的要求。 您也可以使用 HTTP 標頭來篩選設定和轉送設定。 有效的 IP 範圍使用這些格式:x.x.x.x/xx.x.x.x-x.x.x.x

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

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

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

此清單包含 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 的用戶端憑證或具有 Microsoft Entra ID 的 OAuth 認證類型。

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

  • 將驗證新增至輸出要求

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

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

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

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

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

    • 內部部署的資料閘道

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

    • 透過 Azure API 管理進行連線

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

      注意

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

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

      使用量工作流程

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

        • 觸發程序:

          1. 在工作流程設計工具上,選取 [新增觸發程式]。

          2. 在 [新增觸發程式] 窗格開啟之後,在搜尋方塊中輸入 API 管理

          3. 從觸發程式結果清單中,選取 [選擇 Azure API 管理 觸發程式]。

        • 動作:

          1. 在工作流程設計工具上,選取您要在其中新增動作的加號 (+)。

          2. 在 [新增動作] 窗格開啟之後,在搜尋方塊中輸入 API 管理

          3. 從動作結果清單中,選取 [選擇 Azure API 管理 動作]。

        下列範例顯示尋找 Azure API 管理 觸發程式:

        此螢幕快照顯示 Azure 入口網站、取用工作流程設計工具,以及尋找 API 管理 觸發程式。

      2. 從 [API 管理 服務實例] 清單中,選取您先前建立 API 管理 服務實例。

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

      標準工作流程

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

      1. 在工作流程設計工具上,選取您要在其中新增動作的加號 (+)。

      2. 在 [新增動作] 窗格開啟之後,在搜尋方塊中輸入 API 管理

      3. 從動作結果清單中,選取 [呼叫 Azure API 管理 API]。

        顯示 Azure 入口網站、標準工作流程設計工具及 Azure API 管理 動作的螢幕快照。

      4. 從 [API 管理 服務實例] 清單中,選取您先前建立 API 管理 服務實例。

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

        此螢幕快照顯示 Azure 入口網站、標準工作流程設計工具,以及要呼叫的已選取 API。

將驗證新增至輸出呼叫

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

重要

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

基本驗證

如果有基本選項可用,請指定下列屬性值:

屬性 (設計工具) Property (JSON) 必要 Description
驗證 type Yes 基本 要使用的驗證類型
使用者名稱 username Yes <user-name> 用來驗證存取目標服務端點的使用者名稱
密碼 password Yes <password> 用來驗證存取目標服務端點的密碼

當您使用受保護的參數來處理和保護敏感性資訊時,例如,在用於自動化部署的 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": {}
}

用戶端憑證驗證

如果有用戶端憑證選項可用,請指定下列屬性值:

屬性 (設計工具) Property (JSON) 必要 Description
驗證 type Yes 用戶端憑證

ClientCertificate
要使用的驗證類型。 您可以使用 Azure API 管理來管理憑證。

注意:自訂連接器不支援輸入和輸出呼叫的憑證式驗證。
Pfx pfx Yes <encoded-pfx-file-content> 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 檔案的密碼

注意

如果您嘗試使用 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": {}
}

重要

如果您的單一租用戶 Azure Logic Apps 中有標準邏輯應用程式資源,而且您想要使用 HTTP 作業搭配 TSL/SSL 憑證、用戶端憑證或使用 Certificate 認證類型的 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth),請務必完成此驗證類型的額外設定步驟。 否則,呼叫將會失敗。 如需詳細資訊,請檢閱單一租用戶環境中的驗證

如需以用戶端憑證驗證來保護服務的詳細資訊,請檢閱下列主題:

Microsoft 身分識別平台

在 [要求觸發程序] 上,您可以在為邏輯應用程式設定 Microsoft Entra 授權原則之後,使用 Microsoft 身分識別平台來驗證呼叫。 對於有 Active Directory OAuth 驗證類型可供您選擇的其他所有觸發程序和動作,請指定下列屬性值:

屬性 (設計工具) Property (JSON) 必要 Description
驗證 type Yes Active Directory OAuth

ActiveDirectoryOAuth
要使用的驗證類型。 Azure Logic Apps 目前遵循 OAuth 2.0 通訊協定
授權單位 authority No <URL-for-authority-token-issuer> 提供存取權杖的授權單位 URL,例如 Azure 全球服務區域的 https://login.microsoftonline.com/。 針對其他國家/地區雲端,請檢閱 Microsoft Entra 驗證端點 - 選擇您的身分識別授權單位
租用戶 tenant Yes <tenant-ID> Microsoft Entra 租用戶的租用戶識別碼
適用對象 audience Yes <resource-to-authorize> 您希望用於授權的資源,例如,https://management.core.windows.net/
用戶端識別碼 clientId Yes <client-ID> 要求授權的應用程式用戶端識別碼
認證類型 credentialType Yes 憑證

祕密
用戶端要求授權時使用的認證類型。 此屬性和值不會出現在邏輯應用程式的基礎定義中,但可決定在選取的認證類型上出現的屬性。
祕密 secret 是,但僅適用於「祕密」認證類型 <client-secret> 要求授權用的用戶端密碼
Pfx pfx 是,但僅適用於「憑證」認證類型 <encoded-pfx-file-content> 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": {}
}

重要

如果您的單一租用戶 Azure Logic Apps 中有標準邏輯應用程式資源,而且您想要使用 HTTP 作業搭配 TSL/SSL 憑證、用戶端憑證或使用 Certificate 認證類型的 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth),請務必完成此驗證類型的額外設定步驟。 否則,呼叫將會失敗。 如需詳細資訊,請檢閱單一租用戶環境中的驗證

原始驗證

如果有 [原始] 選項可用,當您必須使用未遵循 OAuth 2.0 通訊協定驗證配置時,您可以使用此驗證類型。 使用此類型時,您可以手動建立授權標頭值以隨著傳出要求一起傳送,並在觸發程序或動作中指定該標頭值。

下列範例顯示遵循 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"

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

屬性 (設計工具) Property (JSON) 必要 Description
驗證 type Yes Raw 要使用的驗證類型
value Yes <authorization-header-value> 要用於驗證的授權標頭值

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

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

受控識別驗證

支援受控識別驗證的觸發程序或動作上提供受控識別選項時,您的邏輯應用程式可使用此身分識別來驗證 Azure 資源的存取權,這些資源是使用 Microsoft Entra ID 保護,而不是認證、祕密或 Microsoft Entra 權杖。 Azure 會為您管理此身分識別,並協助保護您的認證,因為您不需要管理祕密或直接使用 Microsoft Entra 權杖。 深入了解支援使用受控識別進行 Microsoft Entra 驗證的 Azure 服務

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

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

    注意

    預設已啟用系統指派的身分識別在執行階段驗證連線。 此身分識別與您建立連線時所使用的驗證認證或連接字串不同。 如果停用此身分識別,則連線在執行階段沒有作用。 若要檢視此設定,在邏輯應用程式的功能表上,於 [設定] 下方選取 [身分識別]

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

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

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

    內建觸發程序和動作

    屬性 (設計工具) Property (JSON) 必要 Description
    驗證 type Yes 受控識別

    ManagedServiceIdentity
    要使用的驗證類型
    受控識別 identity No <user-assigned-identity-ID> 要使用的使用者指派的受控識別。 注意:使用系統指派的受控識別時,請勿包含此屬性。
    適用對象 audience Yes <target-resource-ID> 資源識別碼,代表您想要存取的目標資源。

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

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

    重要事項:請確定目標資源識別碼完全符合 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": {}
    }
    

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

    屬性 (設計工具) 必要 Description
    連線名稱 Yes <connection-name>
    受控識別 Yes 系統指派的受控識別

    <user-assigned-managed-identity-name>
    要使用的驗證類型

封鎖建立連線

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

邏輯應用程式的隔離指引

您可以在 Azure Government 中使用 Azure Logic Apps,以支援 Azure Government 影響等級 5 隔離指引中所述區域中的所有影響層級。 為了滿足這些需求,Azure Logic Apps 支援在具有專用資源的環境中建立和執行工作流程的功能,以便減少邏輯應用程式上其他 Azure 租用戶造成的效能影響,並避免與其他租用戶共用運算資源。

如需隔離的詳細資訊,請參閱下列檔:

下一步