Блокировка использования соединителя в 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://video2.skills-academy.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}"

      В следующем примере показаны свойство id и его значение для подключения к Instagram:

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

    3. Из значения свойства id скопируйте ссылочный идентификатор соединителя, находящийся в конце значения, например instagram, и сохраните его.

      Позднее при создании определения политики этот идентификатор будет использоваться в инструкции условия в определении, например:

      "like": "*managedApis/instagram"

Блокировка создания подключений

Чтобы полностью заблокировать создание подключения в рабочем процессе приложения логики, выполните указанные ниже действия.

  1. В поле поиска на портале Azure введите слово политика и выберите пункт Политика.

    Снимок экрана: главное окно поиска на портале Azure с введенным значением

  2. В меню Политика в разделе Разработка выберите Определения. На панели инструментов области Определения выберите Определение политики.

    Снимок экрана: панель инструментов области

  3. В области Определение политики укажите сведения для определения политики на основе свойств, которые приведены после примера.

    Снимок экрана: свойства для определения политики.

    Свойство Обязательное поле значение Описание
    Расположение определения Да <имя-подписки-Azure> Подписка Azure, используемая для определения политики

    1. Чтобы найти вашу подписку, нажмите кнопку с многоточием (...).
    2. В списке Подписка найдите вашу подписку и выберите ее.
    3. После выбора подписки нажмите кнопку Выбрать.

    Имя Да <имя-определения-политики> Имя, используемое для определения политики
    Description No <имя-определения-политики> Описание определения политики
    Категория Да Приложения логики Имя существующей категории или новой категории определения политики
    Применение политики Да Включено Этот параметр указывает, следует ли включить определение политики или оставить его выключенным при сохранении внесенных изменений.
  4. В разделе POLICY RULE поле редактирования 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 используется псевдоним, 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 — Запрет.

    Например, предположим, что вам нужно заблокировать создание подключений с соединителем 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": {}
     }
    
  5. По завершении выберите Сохранить. После сохранения определения политики Политика Azure создает и добавляет в определение политики дополнительные значения свойств.

  6. Затем для того, чтобы назначить определение политики объекту, в котором необходимо применять политику, создайте назначение политики.

Дополнительные сведения об определениях политик Azure см. в следующих разделах:

Запрет на связывание подключений с приложениями логики

При создании подключения внутри рабочего процесса приложения логики это подключение существует в качестве отдельного ресурса Azure. Если удалить только рабочий процесс приложения логики, ресурс подключения не удаляется автоматически и продолжает существовать, пока не будет удален. Возможна ситуация, в которой ресурс подключения уже существует или вам нужно создать ресурс подключения, которое будет использоваться вне приложения логики. При этом сохраняется возможность заблокировать связывание подключения с другим приложением логики: для этого создайте политику, которая запретит сохранение рабочих процессов приложений логики, содержащих ограниченные или неутвержденные подключения. Эта политика влияет только на рабочие процессы приложений логики, которые еще не используют подключение.

  1. В поле поиска на портале Azure введите слово политика и выберите пункт Политика.

    Снимок экрана: окно поиска на портале Azure с введенным значением

  2. В меню Политика в разделе Разработка выберите Определения. На панели инструментов области Определения выберите Определение политики.

    Снимок экрана: панель инструментов области

  3. В окне Определение политики укажите сведения для определения политики, основанные на свойствах, которые приведены после примера. Продолжим использовать в качестве примера Instagram.

    Снимок экрана: свойства для определения политики.

    Свойство Обязательное поле значение Описание
    Расположение определения Да <имя-подписки-Azure> Подписка Azure, используемая для определения политики

    1. Чтобы найти вашу подписку, нажмите кнопку с многоточием (...).
    2. В списке Подписка найдите вашу подписку и выберите ее.
    3. После выбора подписки нажмите кнопку Выбрать.

    Имя Да <имя-определения-политики> Имя, используемое для определения политики
    Description No <имя-определения-политики> Описание определения политики
    Категория Да Приложения логики Имя существующей категории или новой категории определения политики
    Применение политики Да Включено Этот параметр указывает, следует ли включить определение политики или оставить его выключенным при сохранении внесенных изменений.
  4. В разделе POLICY RULE поле редактирования 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} — это идентификатор соединителя, который нужно ограничить или заблокировать.

    Например, предположим, что вы хотите заблокировать подключение к платформам или базам данных социальных сетей:

    - 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 — Запрет.

    Например, предположим, что вам нужно заблокировать сохранение приложений логики, которые используют подключения к Instagram. Для этого можно использовать такое определение политики:

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

    Содержимое поля ПРАВИЛО ПОЛИТИКИ будет выглядеть следующим образом:

    Снимок экрана: правило

  5. По завершении выберите Сохранить. После сохранения определения политики Политика Azure создает и добавляет в определение политики дополнительные значения свойств.

  6. Затем для того, чтобы назначить определение политики объекту, в котором необходимо применять политику, создайте назначение политики.

Дополнительные сведения об определениях политик Azure см. в следующих разделах:

Создание назначения политики

Затем необходимо назначить определение политики, в котором необходимо применить политику, например для одной группы ресурсов, нескольких групп ресурсов, клиента Microsoft Entra или подписки Azure. Для этого выполните приведенные ниже шаги, которые создают назначение политики.

  1. В поле поиска на портале Azure введите политика и выберите пункт Политика.

    Снимок экрана: окно поиска на портале Azure с введенным значением

  2. В меню Политика в разделе Разработка выберите Назначения. На панели инструментов области Назначения выберите Назначить политику.

    Снимок экрана: панель инструментов области

  3. На панели Назначение политики в разделе Основные сведения укажите следующие данные для назначения политики:

    Свойство Обязательное поле Описание
    Область применения Да Ресурсы, в которых следует принудительно применять назначение политики.

    1. Рядом с полем Область нажмите кнопку с многоточием (...).
    Выберите подписку Azure в списке Подписка.
    3. Также можно выбрать группу ресурсов в списке Группа ресурсов.
    4. После выбора области нажмите кнопку Выбрать.

    Исключения No Выберите ресурсы Azure, исключаемые из назначения политики.

    1. Рядом с полем Исключения нажмите кнопку с многоточием (...).
    2. В списке Ресурсы выберите ресурс и элемент Добавить к выбранной области.
    3. По завершению выбора нажмите кнопку Сохранить.

    Определение политики Да Имя определения политики, которое необходимо назначить и принудительно применять. В этом примере мы продолжаем работать с политикой для Instagram, "Блокировка подключений к Instagram".

    1. Рядом с полем Определение политики нажмите кнопку с многоточием (...).
    2. Найдите и выберите определение политики с помощью фильтра Тип или поля Поиск.
    3. После выбора подписки нажмите кнопку Выбрать.

    Имя назначения Да Имя, используемое для назначения политики, если оно отличается от имени определения политики.
    Идентификатор назначения Да Автоматически созданный идентификатор для назначения политики.
    Description No Описание назначения политики.
    Применение политики Да Параметр, который включает или отключает назначение политики.
    Кем назначено No Имя лица, которое создало и применило назначение политики.

    Например, чтобы назначить политику группе ресурсов Azure (используем наш пример с Instagram), заполните поля следующим образом.

    Снимок экрана: свойства для назначения политики.

  4. Когда все будет готово, выберите Просмотр и создание.

    После создания политики может потребоваться подождать до 15 минут, прежде чем политика вступит в силу. Изменения политики также могут вступать в силу с подобной задержкой.

  5. После того, как политика вступит в силу, можно проверить политику.

Дополнительные сведения см . в кратком руководстве по созданию назначения политики для определения несоответствующих ресурсов.

Проверка политики

Чтобы проверить политику, начните создание подключения, используя в конструкторе рабочих процессов соединитель, который теперь ограничен. Продолжим использовать в качестве примера блокировку Instagram. При входе в Instagram отобразится следующая ошибка, указывающая, что приложению логики не удалось создать подключение:

Снимок экрана: сбой подключения из-за примененной политики.

Сообщение об ошибке включает такие сведения.

Description Содержимое
Причина сбоя "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"

Следующие шаги