在 Azure Logic Apps 中禁止使用連接器

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

如果您的組織不允許在 Azure Logic Apps 中使用受控連接器來連線到受限制或未核准的資源,您可以禁止在邏輯應用程式工作流程中建立和使用這些連線。 您可以透過 Azure 原則來定義並強制執行原則,以針對您要封鎖的連接器,防止建立或使用連線。 例如,基於安全性考量,您可以封鎖對特定社交媒體平台或其他服務和系統的連線。

本文說明如何使用 Azure 入口網站來設定原則,以封鎖特定連線,但您可以透過其他方式建立原則定義。 例如,您可以使用 Azure REST API、Azure PowerShell、Azure CLI 和 Azure Resource Manager 範本。 如需詳細資訊,請參閱教學課程:建立和管理原則來強制執行合規性

必要條件

尋找連接器參考識別碼

如果您已有的邏輯應用程式有您要封鎖的連線,請遵循 Azure 入口網站的步驟。 否則,遵循下列步驟:

連接器參考文件

  1. 請檢閱適用於 Azure Logic Apps 的連接器

  2. 針對您要封鎖的連接器,尋找參考頁面。

    例如,如果您要封鎖已被取代的 Instagram 連接器,請移至此頁面:

    https://learn.microsoft.com/connectors/instagram/

  3. 從頁面的 URL 中,複製並儲存結尾的連接器參考識別碼,不含斜線 (/),例如 instagram

    稍後建立原則定義時,您在定義的條件陳述式中會使用此識別碼,例如:

    "like": "*managedApis/instagram"

Azure 入口網站

  1. Azure 入口網站中,尋找並開啟邏輯應用程式工作流程。

  2. 在邏輯應用程式功能表上,選取下列其中一個選項︰

    • 取用邏輯應用程式:在 [開發工具] 下,選取 [API 連線]

    • 標準邏輯應用程式:在 [工作流程] 下,選取 [連線]。 在 [連線] 窗格上,選取 [API 連線] (如果尚未選取)。

    1. 在 API 連線窗格上,選取連線。 當連線窗格開啟時,選取右上角的 [JSON 檢視]

    2. 尋找 api 物件,其中包含 id 具有下列格式的屬性和值:

      "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region}/managedApis/{connection-name}"

      下列範例顯示 Instagram 連線的 id 屬性和值:

      "id": "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/providers/Microsoft.Web/locations/westus/managedApis/instagram"

    3. id 屬性值,複製並儲存結尾的連接器參考識別碼,例如 instagram

      稍後建立原則定義時,您在定義的條件陳述式中會使用此識別碼,例如:

      "like": "*managedApis/instagram"

封鎖建立連線

若要在邏輯應用程式工作流程中完全禁止建立連線,請遵循下列步驟:

  1. Azure 入口網站搜尋方塊中,輸入原則,然後選取 [原則]

    Screenshot showing main Azure portal search box with

  2. 在 [原則] 功能表的 [撰寫] 下,選取 [定義]。 在 [定義] 窗格工具列上,選取 [原則定義]

    Screenshot showing the

  3. 在 [原則定義] 窗格上,根據範例中所述的屬性,提供原則定義的資訊:

    Screenshot showing the policy definition properties.

    屬性 必填 Description
    定義位置 Yes <Azure-訂閱-名稱> 要用於原則定義的 Azure 訂用帳戶

    1.若要尋找您的訂用帳戶,請選取省略符號 (...) 按鈕。
    2.從 [訂用帳戶] 清單中,尋找並選取您的訂用帳戶。
    3.完成後,選取 [選取]

    名稱 Yes <policy-definition-name> 要用於原則定義的名稱
    說明 No <policy-definition-name> 原則定義的描述
    類別 Yes 邏輯應用程式 原則定義的現有類別或新類別的名稱
    原則強制執行 Yes 已啟用 此設定指定當您儲存工作時,是否要啟用或停用原則定義。
  4. 在 [原則規則] 下,JSON 編輯方塊中已預先填入原則定義範本。 根據下表所述的屬性,並遵循下列語法,將此範本換成您的原則定義

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "field": "Microsoft.Web/connections/api.id",
             "like": "*managedApis/{connector-name}"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
    屬性 數值 Description
    mode All 模式,決定原則評估的資源類型。

    此案例將 mode 設定為 All,這會將原則套用至 Azure 資源群組、訂用帳戶和所有資源類型。

    如需詳細資訊,請參閱原則定義結構 - 模式

    if {condition-to-evaluate} 條件,決定何時強制執行原則規則

    在此案例中,{condition-to-evaluate} 判斷 Microsoft.Web/connections/api.id 中的 api.id 值是否符合 *managedApis/{connector-name} (其中指定萬用字元 (*) 值)。

    如需詳細資訊,請參閱原則定義結構 - 原則規則

    field Microsoft.Web/connections/api.id 要與條件比較的 field

    在此案例中,field 使用 別名Microsoft.Web/connections/api.id 來存取連接器屬性 api.id 中的值。

    like *managedApis/{connector-name} 用來比較 field 值的邏輯運算子和值

    在此案例中,like 運算子和萬用字元 (*) 字元都確保不論在什麼區域,規則都有效,而字串 *managedApis/{connector-name} 是要符合的值,其中 {connector-name} 是您要封鎖的連接器的識別碼。

    例如,假設您要禁止對社交媒體平台或資料庫建立連線:

    - Twitter:twitter
    - Instagram:instagram
    - Facebook:facebook
    - Pinterest:pinterest
    - SQL Server 或 Azure SQL:sql

    若要尋找這些連接器識別碼,請參閱本主題稍早的尋找連接器參考識別碼

    then {effect-to-apply} 符合 if 條件時要套用的效果

    在此案例中,{effect-to-apply} 是封鎖並捨棄不符合原則的要求或作業。

    如需詳細資訊,請參閱原則定義結構 - 原則規則

    effect deny effect 是封鎖要求,即禁止建立指定的連線

    如需詳細資訊,請參閱了解 Azure 原則效果 - Deny

    例如,假設您要禁止對 Instagram 連接器建立連線。 以下是您可以使用的原則定義:

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "field": "Microsoft.Web/connections/api.id",
             "like": "*managedApis/instagram"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
    }
    

    以下是 [原則規則] 方塊出現的樣子:

    Screenshot showing the

    針對多個連接器,您可以新增更多條件,例如:

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "anyOf": [
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/instagram"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/twitter"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/facebook"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/pinterest"
                }
             ]
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
  5. 完成時,選取儲存。 儲存原則定義之後,Azure 原則會產生更多屬性值並新增至原則定義。

  6. 接下來,若要指派原則定義來強制執行原則,請建立原則指派

如需 Azure 原則定義的詳細資訊,請參閱下列主題:

禁止將連線與邏輯應用程式建立關聯

當您在邏輯應用程式工作流程中建立連線時,此連線會以獨立 Azure 資源的形式存在。 如果您只刪除邏輯應用程式工作流程,則不會自動刪除連線資源,將持續存在直到刪除為止。 有時,連線資源可能已存在,或您必須建立連線資源以在邏輯應用程式外部使用。 對於嘗試使用受限制或未核准連線的邏輯應用程式工作流程,您仍然可以建立原則來防止儲存這些工作流程,以禁止將連線與不同邏輯應用程式工作流程建立關聯。 此原則只影響尚未使用連線的邏輯應用程式工作流程。

  1. Azure 入口網站搜尋方塊中,輸入原則,然後選取 [原則]

    Screenshot showing the Azure portal search box with

  2. 在 [原則] 功能表的 [撰寫] 下,選取 [定義]。 在 [定義] 窗格工具列上,選取 [原則定義]

    Screenshot showing

  3. 在 [原則定義] 下,根據範例所述的屬性,提供原則定義的資訊,在此繼續以 Instagram 為例:

    Screenshot showing policy definition properties.

    屬性 必填 Description
    定義位置 Yes <Azure-訂閱-名稱> 要用於原則定義的 Azure 訂用帳戶

    1.若要尋找您的訂用帳戶,請選取省略符號 (...) 按鈕。
    2.從 [訂用帳戶] 清單中,尋找並選取您的訂用帳戶。
    3.完成後,選取 [選取]

    名稱 Yes <policy-definition-name> 要用於原則定義的名稱
    說明 No <policy-definition-name> 原則定義的描述
    類別 Yes 邏輯應用程式 原則定義的現有類別或新類別的名稱
    原則強制執行 Yes 已啟用 此設定指定當您儲存工作時,是否要啟用或停用原則定義。
  4. 在 [原則規則] 下,JSON 編輯方塊中已預先填入原則定義範本。 根據下表所述的屬性,並遵循下列語法,將此範本換成您的原則定義

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "value": "[string(field('Microsoft.Logic/workflows/parameters'))]",
             "contains": "{connector-name}"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
    屬性 數值 Description
    mode All 模式,決定原則評估的資源類型。

    此案例將 mode 設定為 All,這會將原則套用至 Azure 資源群組、訂用帳戶和所有資源類型。

    如需詳細資訊,請參閱原則定義結構 - 模式

    if {condition-to-evaluate} 條件,決定何時強制執行原則規則

    在此案例中,{condition-to-evaluate} 判斷 [string(field('Microsoft.Logic/workflows/parameters'))] 的字串輸出是否包含字串 {connector-name}

    如需詳細資訊,請參閱原則定義結構 - 原則規則

    value [string(field('Microsoft.Logic/workflows/parameters'))] 要與條件比較的值

    在此案例中,value[string(field('Microsoft.Logic/workflows/parameters'))] 的字串輸出,這會將 Microsoft.Logic/workflows/parameters 物件內的 $connectors 物件轉換成字串。

    contains {connector-name} 用來與 value 屬性比較的邏輯運算子和值

    在此案例中,contains 運算子確保不論 {connector-name} 出現在何處,規則都有效,而字串 {connector-name} 是您要限制或封鎖的連接器的識別碼。

    例如,假設您要禁止對社交媒體平台或資料庫使用連線:

    - Twitter:twitter
    - Instagram:instagram
    - Facebook:facebook
    - Pinterest:pinterest
    - SQL Server 或 Azure SQL:sql

    若要尋找這些連接器識別碼,請參閱本主題稍早的尋找連接器參考識別碼

    then {effect-to-apply} 符合 if 條件時要套用的效果

    在此案例中,{effect-to-apply} 是封鎖並捨棄不符合原則的要求或作業。

    如需詳細資訊,請參閱原則定義結構 - 原則規則

    effect deny effectdeny 或封鎖要求,以拒絕儲存使用特定連線的邏輯應用程式

    如需詳細資訊,請參閱了解 Azure 原則效果 - Deny

    例如,假設您要禁止儲存使用 Instagram 連線的邏輯應用程式。 以下是您可以使用的原則定義:

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "value": "[string(field('Microsoft.Logic/workflows/parameters'))]",
             "contains": "instagram"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    

    以下是 [原則規則] 方塊出現的樣子:

    Screenshot showing policy definition rule.

  5. 完成時,選取儲存。 儲存原則定義之後,Azure 原則會產生更多屬性值並新增至原則定義。

  6. 接下來,若要指派原則定義來強制執行原則,請建立原則指派

如需 Azure 原則定義的詳細資訊,請參閱下列主題:

建立原則指派

接下來,您必須指派原則定義以強制執行原則,例如指派給單一資源群組、多個資源群組、Microsoft Entra 租用戶或 Azure 訂用帳戶。 針對此工作,請遵循下列步驟來建立原則指派:

  1. Azure 入口網站的入口網站搜尋方塊中,輸入原則,然後選取 [原則]

    Screenshot showing Azure portal search box with

  2. 在 [原則] 功能表的 [撰寫] 下,選取 [指派]。 在 [指派] 窗格工具列上,選取 [指派原則]

    Screenshot showing

  3. 在 [指派原則] 窗格的 [基本] 下,為原則指派提供下列資訊:

    屬性 必要 描述
    範圍 Yes 您要強制執行原則指派的資源。

    1.在 [範圍] 方塊旁,選取省略符號 (...) 按鈕。
    2.從 [訂用帳戶] 清單中,選取 Azure 訂用帳戶。
    3.(選擇性) 從 [資源群組] 清單中,選取資源群組。
    4.完成後,選取 [選取]

    排除 No 要從原則指派中排除的任何 Azure 資源。

    1.在 [排除項目] 方塊旁,選取省略符號 (...) 按鈕。
    2.從 [資源] 清單中,選取資源 >[新增至選取的範圍]
    3.完成時,選取 [儲存]

    原則定義 Yes 您要指派和強制執行的原則定義的名稱。 此範例繼續以 Instagram 原則「封鎖 Instagram 連線」為例。

    1.在 [原則定義] 方塊旁,選取省略符號 (...) 按鈕。
    2.使用 [類型] 篩選條件或 [搜尋] 方塊來尋找並選取原則定義。
    3.完成後,選取 [選取]

    指派名稱 Yes 要用於原則指派的名稱 (如果不同於原則定義)
    指派識別碼 Yes 為原則指派自動產生的識別碼
    說明 No 原則指派的描述
    原則強制執行 Yes 決定啟用或停用原則指派的設定
    指派者 No 建立並套用原則指派的人員名稱

    例如,以 Instagram 為例,若要將原則指派給 Azure 資源群組:

    Screenshot showing policy assignment properties.

  4. 當您完成時,選取 [檢閱 + 建立]

    建立原則之後,您可能必須等候最多 15 分鐘,原則才會生效。 變更也可能有類似的延遲效果。

  5. 原則生效之後,您可以測試原則

如需詳細資訊,請參閱快速入門:建立原則指派以識別不符合規範的資源

測試原則

若要嘗試您的原則,請在工作流程設計工具中使用現在受限制的連接器,開始建立連線。 繼續以 Instagram 為例,當您登入 Instagram 時發生此錯誤,指出邏輯應用程式無法建立連線:

Screenshot showing connection failure due to applied policy.

訊息包含此資訊:

描述 Content
失敗的原因 "Resource 'instagram' was disallowed by policy."
指派名稱 "Block Instagram connections"
指派識別碼 "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/resourceGroups/MyLogicApp-RG/providers/Microsoft.Authorization/policyAssignments/4231890fc3bd4352acb0b673"
原則定義識別碼 "/subscriptions/xxxxxXXXXXxxxxxXXXXXxxxxxXXXXX/providers/Microsoft.Authorization/policyDefinitions/b5ddcfec-1b24-4cac-a353-360846a59f24"

下一步