在 Azure 逻辑应用中阻止使用连接器

适用于:Azure 逻辑应用(消耗型 + 标准型)

如果你的组织不允许在 Azure 逻辑应用中使用托管连接器连接到受限的或未批准的资源,则可阻止在逻辑应用工作流中创建和使用这些连接的功能。 使用 Azure Policy,可以定义并强制实施 策略 ,以防止为要阻止的连接器创建或使用连接。 例如,出于安全原因,你可能想要阻止与特定社交媒体平台或其他服务和系统的连接。

本指南介绍如何使用 Azure 门户设置阻止特定连接的策略。 还可以通过其他方式创建策略定义。 例如,可以使用 Azure REST API、Azure PowerShell、Azure CLI 或 Azure 资源管理器模板。 有关详细信息,请参阅创建和管理策略以强制实施符合性

先决条件

  • Azure 帐户和订阅。 如果没有订阅,请创建一个试用版 Azure 订阅

  • 要阻止的连接器的引用 ID。 本指南演示如何查找此引用 ID。

查找连接器引用 ID

如果已有包含要阻止的连接的逻辑应用工作流,请跳过本部分。 否则,请按照以下步骤查找连接器引用 ID:

使用参考文档查找连接器 ID

  1. 查看 所有 Azure 逻辑应用托管连接器的列表

  2. 找到要阻止的连接器的参考页。

    例如,如果想要阻止 Office 365 Outlook 连接器,请参阅此页:

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

  3. 在该页的 URL 中,复制并保存末尾处的连接器引用 ID,不带正斜杠 (/),例如 office365

    稍后,在创建策略定义时在定义的条件语句中将使用此 ID,例如:

    "like": "*managedApis/office365"

使用 Azure 门户查找 ID

  1. Azure 门户中,打开你的逻辑应用资源。

  2. 在资源边栏上,选择以下选项之一:

    • 消耗型逻辑应用:在“开发工具”下,选择“API 连接”。

    • 标准逻辑应用:在“工作流”下面,选择“连接”。 在“连接”窗格中,选择“API 连接”(如果尚未选择)。

  3. “API 连接 ”页上,选择该连接。 连接页打开后,在右上角选择 JSON 视图

  4. 查找 api 对象,此对象包含具有以下格式的 id 属性和值:

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

    以下示例显示了 id 连接的 Office 365 Outlook 属性和值:

    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/chinaeast2/managedApis/office365"

    1. id属性值中复制并保存连接器引用 ID,该 ID 显示在末尾,例如office365

    稍后,在创建策略定义时在定义的条件语句中将使用此 ID,例如:

    "like": "*managedApis/office365"

阻止创建连接

若要阻止在工作流中创建连接,请执行以下步骤:

  1. Azure 门户搜索框中,输入“策略”,然后选择“策略”。

    屏幕截图显示 Azure 门户搜索框,其中已输入“策略”(Policy)并突出显示“策略”。

  2. 在“策略”菜单上,在“创作”下,选择“定义”。 在 “定义 ”工具栏上,选择“ 策略定义”。

    屏幕截图显示了“定义”页,其中突出显示了“策略定义”。

  3. “策略定义 ”页上,根据图像后面的表中的属性提供策略定义的信息:

    屏幕截图显示了阻止 Gmail 的策略定义值。

    参数 需要 说明
    定义位置 < Azure 订阅名称> 用于策略定义的 Azure 订阅

    1.若要查找订阅,请选择省略号(...)。
    2.在“订阅”列表中找到并选择你的订阅。
    3.完成后,选择“选择”。
    名称 <policy-definition-name<> 要用于策略定义的名称。
    说明 <policy-definition-name<> 策略定义的说明。
    类别 逻辑应用 策略定义的现有类别或新类别的名称。
  4. “策略”规则下,JSON 编辑框已预先填充策略定义模板。 将此模板替换为基于下表中描述的属性,并使用以下语法的策略定义

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "field": "Microsoft.Web/connections/api.id",
             "like": "*managedApis/{connector-name}"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
    关键字 说明
    mode All 一个模式,用于确定策略所评估的资源类型。

    在此情况下会将 mode 设置为 All,这会将策略应用于 Azure 资源组、订阅和所有资源类型。

    有关详细信息,请参阅策略定义结构 - 模式
    if {condition-to-evaluate} 一个条件,用于确定何时强制实施策略规则

    在这种情况下,{condition-to-evaluate} 确定 api.id 中的 Microsoft.Web/connections/api.id 值是否与指定了通配符 (*) 值的 *managedApis/{connector-name} 匹配。

    有关详细信息,请参阅策略定义结构 - 策略规则
    field Microsoft.Web/connections/api.id 要与条件进行比较的 field

    在这种情况下,field 使用field 来访问连接器属性 Microsoft.Web/connections/api.id 中的值。
    like *managedApis/{connector-name} 用于比较 field 值的逻辑运算符和值

    在这种情况下,like 运算符和通配符 (*) 字符都确保规则的工作方式与区域无关,而字符串 *managedApis/{connector-name} 是要匹配的值,其中,{connector-name} 是要阻止的连接器的 ID。

    例如,假设你要阻止创建与数据库的连接:

    - SQL Server 或 Azure SQL:sql

    若要查找这些连接器 ID,请参阅本文前面的 “查找连接器参考 ID ”。
    then {effect-to-apply} 满足 if 条件时要应用的效果

    在这种情况下,{effect-to-apply} 会阻止不符合策略的请求或操作并让其失败。

    有关详细信息,请参阅策略定义结构 - 策略规则
    effect deny effect 将阻止请求,即阻止创建指定的连接

    有关详细信息,请参阅了解 Azure Policy 效果 - 拒绝

    例如,假设你要阻止通过 Office 365 Outlook 连接器创建连接。 下面是可以使用的策略定义:

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

    下面是 “策略规则 ”框的显示方式:

    屏幕截图显示了包含策略规则示例的“策略规则”框。

    对于多个连接器,可以添加多个条件,例如:

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "anyOf": [
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/office365"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/office365users"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/office365video"
                },
                {
                   "field": "Microsoft.Web/connections/api.id",
                   "like": "*managedApis/pinterest"
                }
             ]
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
  5. 完成后,选择“保存”。

    保存策略定义后,Azure Policy 会生成更多的属性值并将其添加到策略定义。

若要分配要在其中强制实施策略的策略定义,请创建策略分配,如本文稍后所述。

有关 Azure Policy 定义的详细信息,请参阅:

阻止将连接与逻辑应用关联

在工作流中创建连接时,此连接作为单独的 Azure 资源存在。 如果仅删除工作流或逻辑应用资源,则连接资源不会自动删除,并且一直存在,直到删除为止。 你可能有一个场景,其中连接资源已存在,或者必须创建连接资源以在逻辑应用资源外部使用。

仍可以通过创建一个策略来阻止将连接与不同的逻辑应用资源相关联,从而阻止保存尝试使用受限或未批准的连接的工作流。 此策略仅影响尚未使用连接的工作流。

  1. Azure 门户搜索框中,输入“策略”,然后选择“策略”。

    屏幕截图显示 Azure 门户搜索框,其中已输入“策略”(Policy)并突出显示“策略”。

  2. 在“策略”菜单上,在“创作”下,选择“定义”。 在“ 定义 ”页工具栏上,选择“ 策略定义”。

    屏幕截图显示了“定义”页,其中突出显示了“策略定义”。

  3. “策略定义”下,根据图像后面的表中的属性,提供策略定义的信息。

    屏幕截图显示了用于保存 Gmail 连接的策略定义值。

    参数 需要 说明
    定义位置 < Azure 订阅名称> 用于策略定义的 Azure 订阅

    1.若要查找你的订阅,请选择省略号 ( ... ) 按钮。
    2.在“订阅”列表中找到并选择你的订阅。
    3.完成后,选择“选择”。
    名称 <policy-definition-name<> 用于策略定义的名称
    说明 <policy-definition-name<> 策略定义的说明
    类别 逻辑应用 策略定义的现有类别或新类别的名称
  4. “策略规则”下,JSON 编辑框使用策略定义模板预填充。 将此模板替换为基于下表中描述的属性,并使用以下语法的策略定义

    {
       "mode": "All",
       "policyRule": {
          "if": {
             "value": "[string(field('Microsoft.Logic/workflows/parameters'))]",
             "contains": "{connector-name}"
          },
          "then": {
             "effect": "deny"
          }
       },
       "parameters": {}
     }
    
    关键字 说明
    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'))] 的字符串输出,它将 $connectors 对象中的 Microsoft.Logic/workflows/parameters 对象转换为字符串。
    contains {connector-name} 用于与 value 属性进行比较的逻辑运算符和值

    在此情况下,contains 运算符确保规则正常工作,而不管 {connector-name} 出现在何处,其中,字符串 {connector-name} 是要限制或阻止的连接器的 ID。

    例如,假设你要阻止使用与数据库的连接:

    - SQL Server 或 Azure SQL:sql

    若要查找这些连接器 ID,请参阅本文前面的 “查找连接器参考 ID ”。
    then {effect-to-apply} 满足 if 条件时要应用的效果

    在这种情况下,{effect-to-apply} 会阻止不符合策略的请求或操作并让其失败。

    有关详细信息,请参阅策略定义结构 - 策略规则
    effect deny effectdeny或阻止请求,即阻止保存使用指定连接的逻辑应用

    有关详细信息,请参阅了解 Azure Policy 效果 - 拒绝

    例如,假设你要阻止保存使用 Office 365 Outlook 连接的逻辑应用。 下面是可以使用的策略定义:

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

    下面是策略定义规则的显示方式:

    屏幕截图显示了策略定义规则。

  5. 完成后,选择“保存”。

    保存策略定义后,Azure Policy 会生成更多的属性值并将其添加到策略定义。

若要分配要在其中强制实施策略的策略定义,请创建策略分配,如本指南稍后所述。

有关 Azure Policy 定义的详细信息,请参阅:

创建策略分配

需要将策略定义分配到您希望强制执行策略的地方。 例如,可以将策略定义分配给单个资源组、多个资源组、Microsoft Entra 租户或 Azure 订阅。 对于此任务,请按照以下步骤创建策略分配:

  1. Azure 门户搜索框中,输入“策略”,然后选择“策略”。

    屏幕截图显示 Azure 门户搜索框,其中已输入“策略”(Policy)并突出显示“策略”。

  2. 在“策略”菜单上,在“创作”下,选择“分配”。 在 “分配 ”工具栏上,选择“ 分配策略”。

    屏幕截图显示了“分配”工具栏,其中突出显示了“分配策略”。

  3. “分配策略 ”页上的 “基本信息”下,为策略分配提供此信息:

    参数 需要 说明
    范围 要在其中强制实施策略分配的资源。

    1.在“作用域”框旁边,选择省略号 ( ... ) 按钮。
    2.在“订阅”列表中选择 Azure 订阅。
    3.(可选)在“资源组”列表中选择资源组。
    4.完成后,选择“选择”。
    排除项 要从策略分配中排除的任何 Azure 资源。

    1.在“排除项”框旁边,选择省略号 ( ... ) 按钮。
    2. 从“资源”列表中选择相应资源 “添加到所选作用域”。
    3.完成后,选择“保存”。
    资源选择器
    策略定义 要分配和强制实施的策略定义的名称。 此示例将继续执行示例 Office 365 Outlook 策略“阻止 Office 365 Outlook 连接”。

    1.在“策略定义”框旁边,选择省略号 ( ... ) 按钮。
    2.使用“类型”筛选器或“搜索”框找到并选择策略定义。
    3.完成后,选择“选择”。
    替代
    分配名称 要用于策略分配的名称(如果不同于策略定义)。
    说明 策略分配的说明。
    策略强制执行 启用或禁用策略分配的设置。

    例如,使用 Office 365 Outlook 示例将策略分配给 Azure 资源组:

    屏幕截图显示了策略分配值。

  4. 完成操作后,选择“查看 + 创建”。

    创建策略后,可能需要等待 15 分钟,然后策略才会生效。 变更可能也有类似的延迟影响。

策略生效后,在下一部分中测试策略。

有关详细信息,请参阅快速入门:创建策略分配以识别不合规资源

测试策略

若要试用策略,请在工作流设计器中使用目前受限的连接器开始创建连接。 继续使用该 Office 365 Outlook 示例,当你登录 Office 365 Outlook时,你会收到一个错误,表明工作流未能创建连接。

错误消息包括以下信息:

说明 内容
失败原因 "Resource Office 365 Outlook was disallowed by policy."
分配名称 "Block Office 365 Outlook connections"
分配 ID "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyLogicApp-RG/providers/Microsoft.Authorization/policyAssignments/4231890fc3bd4352acb0b673"
策略定义 ID "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"