在 Azure Logic Apps 中禁止使用連接器
適用於:Azure Logic Apps (使用量 + 標準)
如果您的組織不允許在 Azure Logic Apps 中使用受控連接器來連線到受限制或未核准的資源,您可以禁止在邏輯應用程式工作流程中建立和使用這些連線。 您可以透過 Azure 原則來定義並強制執行原則,以針對您要封鎖的連接器,防止建立或使用連線。 例如,基於安全性考量,您可以封鎖對特定社交媒體平台或其他服務和系統的連線。
本文說明如何使用 Azure 入口網站來設定原則,以封鎖特定連線,但您可以透過其他方式建立原則定義。 例如,您可以使用 Azure REST API、Azure PowerShell、Azure CLI 和 Azure Resource Manager 範本。 如需詳細資訊,請參閱教學課程:建立和管理原則來強制執行合規性。
必要條件
Azure 帳戶和訂用帳戶。 如果您未訂閱,請建立免費的 Azure 帳戶。
您要封鎖的連接器的參考識別碼。 如需詳細資訊,請參閱尋找連接器參考識別碼。
尋找連接器參考識別碼
如果您已有的邏輯應用程式有您要封鎖的連線,請遵循 Azure 入口網站的步驟。 否則,遵循下列步驟:
連接器參考文件
針對您要封鎖的連接器,尋找參考頁面。
例如,如果您要封鎖已被取代的 Instagram 連接器,請移至此頁面:
https://learn.microsoft.com/connectors/instagram/
從頁面的 URL 中,複製並儲存結尾的連接器參考識別碼,不含斜線 (
/
),例如instagram
。稍後建立原則定義時,您在定義的條件陳述式中會使用此識別碼,例如:
"like": "*managedApis/instagram"
Azure 入口網站
在 Azure 入口網站中,尋找並開啟邏輯應用程式工作流程。
在邏輯應用程式功能表上,選取下列其中一個選項︰
取用邏輯應用程式:在 [開發工具] 下,選取 [API 連線]。
標準邏輯應用程式:在 [工作流程] 下,選取 [連線]。 在 [連線] 窗格上,選取 [API 連線] (如果尚未選取)。
在 API 連線窗格上,選取連線。 當連線窗格開啟時,選取右上角的 [JSON 檢視]。
尋找
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"
從
id
屬性值,複製並儲存結尾的連接器參考識別碼,例如instagram
。稍後建立原則定義時,您在定義的條件陳述式中會使用此識別碼,例如:
"like": "*managedApis/instagram"
封鎖建立連線
若要在邏輯應用程式工作流程中完全禁止建立連線,請遵循下列步驟:
在 Azure 入口網站搜尋方塊中,輸入原則,然後選取 [原則]。
在 [原則] 功能表的 [撰寫] 下,選取 [定義]。 在 [定義] 窗格工具列上,選取 [原則定義]。
在 [原則定義] 窗格上,根據範例中所述的屬性,提供原則定義的資訊:
屬性 必填 值 Description 定義位置 Yes <Azure-訂閱-名稱> 要用於原則定義的 Azure 訂用帳戶 1.若要尋找您的訂用帳戶,請選取省略符號 (...) 按鈕。
2.從 [訂用帳戶] 清單中,尋找並選取您的訂用帳戶。
3.完成後,選取 [選取]。名稱 Yes <policy-definition-name> 要用於原則定義的名稱 說明 No <policy-definition-name> 原則定義的描述 類別 Yes 邏輯應用程式 原則定義的現有類別或新類別的名稱 原則強制執行 Yes 已啟用 此設定指定當您儲存工作時,是否要啟用或停用原則定義。 在 [原則規則] 下,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}
是您要封鎖的連接器的識別碼。例如,假設您要禁止對社交媒體平台或資料庫建立連線:
- X:
x
- 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": {} }
以下是 [原則規則] 方塊出現的樣子:
針對多個連接器,您可以新增更多條件,例如:
{ "mode": "All", "policyRule": { "if": { "anyOf": [ { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/instagram" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/x" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/facebook" }, { "field": "Microsoft.Web/connections/api.id", "like": "*managedApis/pinterest" } ] }, "then": { "effect": "deny" } }, "parameters": {} }
完成時,選取儲存。 儲存原則定義之後,Azure 原則會產生更多屬性值並新增至原則定義。
接下來,若要指派原則定義來強制執行原則,請建立原則指派。
如需 Azure 原則定義的詳細資訊,請參閱下列主題:
禁止將連線與邏輯應用程式建立關聯
當您在邏輯應用程式工作流程中建立連線時,此連線會以獨立 Azure 資源的形式存在。 如果您只刪除邏輯應用程式工作流程,則不會自動刪除連線資源,將持續存在直到刪除為止。 有時,連線資源可能已存在,或您必須建立連線資源以在邏輯應用程式外部使用。 對於嘗試使用受限制或未核准連線的邏輯應用程式工作流程,您仍然可以建立原則來防止儲存這些工作流程,以禁止將連線與不同邏輯應用程式工作流程建立關聯。 此原則只影響尚未使用連線的邏輯應用程式工作流程。
在 Azure 入口網站搜尋方塊中,輸入原則,然後選取 [原則]。
在 [原則] 功能表的 [撰寫] 下,選取 [定義]。 在 [定義] 窗格工具列上,選取 [原則定義]。
在 [原則定義] 下,根據範例所述的屬性,提供原則定義的資訊,在此繼續以 Instagram 為例:
屬性 必填 值 Description 定義位置 Yes <Azure-訂閱-名稱> 要用於原則定義的 Azure 訂用帳戶 1.若要尋找您的訂用帳戶,請選取省略符號 (...) 按鈕。
2.從 [訂用帳戶] 清單中,尋找並選取您的訂用帳戶。
3.完成後,選取 [選取]。名稱 Yes <policy-definition-name> 要用於原則定義的名稱 說明 No <policy-definition-name> 原則定義的描述 類別 Yes 邏輯應用程式 原則定義的現有類別或新類別的名稱 原則強制執行 Yes 已啟用 此設定指定當您儲存工作時,是否要啟用或停用原則定義。 在 [原則規則] 下,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}
是您要限制或封鎖的連接器的識別碼。例如,假設您要禁止對社交媒體平台或資料庫使用連線:
- X:
x
- Instagram:instagram
- Facebook:facebook
- Pinterest:pinterest
- SQL Server 或 Azure SQL:sql
若要尋找這些連接器識別碼,請參閱本主題稍早的尋找連接器參考識別碼。
then
{effect-to-apply}
符合 if
條件時要套用的效果在此案例中,
{effect-to-apply}
是封鎖並捨棄不符合原則的要求或作業。如需詳細資訊,請參閱原則定義結構 - 原則規則。
effect
deny
effect
是deny
或封鎖要求,以拒絕儲存使用特定連線的邏輯應用程式如需詳細資訊,請參閱了解 Azure 原則效果 - Deny。
例如,假設您要禁止儲存使用 Instagram 連線的邏輯應用程式。 以下是您可以使用的原則定義:
{ "mode": "All", "policyRule": { "if": { "value": "[string(field('Microsoft.Logic/workflows/parameters'))]", "contains": "instagram" }, "then": { "effect": "deny" } }, "parameters": {} }
以下是 [原則規則] 方塊出現的樣子:
完成時,選取儲存。 儲存原則定義之後,Azure 原則會產生更多屬性值並新增至原則定義。
接下來,若要指派原則定義來強制執行原則,請建立原則指派。
如需 Azure 原則定義的詳細資訊,請參閱下列主題:
建立原則指派
接下來,您必須指派原則定義以強制執行原則,例如指派給單一資源群組、多個資源群組、Microsoft Entra 租用戶或 Azure 訂用帳戶。 針對此工作,請遵循下列步驟來建立原則指派:
在 Azure 入口網站的入口網站搜尋方塊中,輸入原則,然後選取 [原則]。
在 [原則] 功能表的 [撰寫] 下,選取 [指派]。 在 [指派] 窗格工具列上,選取 [指派原則]。
在 [指派原則] 窗格的 [基本] 下,為原則指派提供下列資訊:
屬性 必要 描述 範圍 Yes 您要強制執行原則指派的資源。 1.在 [範圍] 方塊旁,選取省略符號 (...) 按鈕。
2.從 [訂用帳戶] 清單中,選取 Azure 訂用帳戶。
3.(選擇性) 從 [資源群組] 清單中,選取資源群組。
4.完成後,選取 [選取]。排除 No 要從原則指派中排除的任何 Azure 資源。 1.在 [排除項目] 方塊旁,選取省略符號 (...) 按鈕。
2.從 [資源] 清單中,選取資源 >[新增至選取的範圍]。
3.完成時,選取 [儲存]。原則定義 Yes 您要指派和強制執行的原則定義的名稱。 此範例繼續以 Instagram 原則「封鎖 Instagram 連線」為例。 1.在 [原則定義] 方塊旁,選取省略符號 (...) 按鈕。
2.使用 [類型] 篩選條件或 [搜尋] 方塊來尋找並選取原則定義。
3.完成後,選取 [選取]。指派名稱 Yes 要用於原則指派的名稱 (如果不同於原則定義) 指派識別碼 Yes 為原則指派自動產生的識別碼 說明 No 原則指派的描述 原則強制執行 Yes 決定啟用或停用原則指派的設定 指派者 No 建立並套用原則指派的人員名稱 例如,以 Instagram 為例,若要將原則指派給 Azure 資源群組:
當您完成時,選取 [檢閱 + 建立]。
建立原則之後,您可能必須等候最多 15 分鐘,原則才會生效。 變更也可能有類似的延遲效果。
原則生效之後,您可以測試原則。
如需詳細資訊,請參閱快速入門:建立原則指派以識別不符合規範的資源。
測試原則
若要嘗試您的原則,請在工作流程設計工具中使用現在受限制的連接器,開始建立連線。 繼續以 Instagram 為例,當您登入 Instagram 時發生此錯誤,指出邏輯應用程式無法建立連線:
訊息包含此資訊:
描述 | 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" |
下一步
- 深入了解 Azure 原則