Группа белых списков для приложений Azure Function - PullRequest
0 голосов
/ 06 февраля 2020

Мы создаем несколько Azure функциональных приложений, каждое функциональное приложение по умолчанию имеет свой собственный белый список IP-адресов.

У нас есть несколько третьих сторон, которые будут использовать эти функциональные приложения. Каждая третья сторона, вероятно, будет иметь несколько IP-адресов. Некоторые функциональные приложения могут использоваться всеми третьими сторонами, другие - одним, но не другим, и т. Д. c.

. Нам нужен центральный способ управления этим. У нас есть Powershell, который мы использовали в прошлом для поддержания IP-адреса, но интересовался, есть ли лучшее решение - возможно, некоторые шаблоны встроены в саму Azure?

Это должно быть довольно Общая проблема, у кого-нибудь есть предложения, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Основная проблема в том, что IP-адреса могут меняться довольно часто. Я предпочитаю управлять этим с помощью ключей подписки для каждого клиента или / для каждого клиента и API.

Для этого вы можете добавить управление API (шаблон шлюза API) перед своими API. Вы также можете продолжать контролировать каждый IP-адрес с помощью API Management, но я бы сказал, что API-ключ - это хорошая практика.

Дополнительная информация:

https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#RestrictCallerIPs

https://microservices.io/patterns/apigateway.html

0 голосов
/ 06 февраля 2020

Вы можете использовать Microsoft.Web/sites/config объект ARM. Вы можете развернуть объект конфигурации поверх существующих функций или включить его в определение ARM полного шаблона functionApp. Таким образом, вы можете централизованно управлять правилами IP и контролировать их версии. С PowerShell вы можете организовать развертывание правил IP ARM на основе ваших критериев.

https://docs.microsoft.com/en-us/azure/templates/microsoft.web/2018-11-01/sites/config

{
    "type": "Microsoft.Web/sites/config",
    "apiVersion": "2018-11-01",
    "name": "[concat(variables('functionName'), '/web')]",
    "location": "East US",
    "dependsOn": [
      "[resourceId('Microsoft.Web/sites', variables('functionName'))]"
    ],
    "properties": {
      "ipSecurityRestrictions": [
        {
          "ipAddress": "00.00.00.00/00",
          "action": "Allow",
          "tag": "Default",
          "priority": 1000,
          "name": "Rule 1"
        },
        {
          "ipAddress": "00.00.00.00/00",
          "action": "Allow",
          "tag": "Default",
          "priority": 2000,
          "name": "Rule 2"
        },
        {
          "ipAddress": "Any",
          "action": "Deny",
          "priority": 2147483647,
          "name": "Deny all",
          "description": "Deny all access"
        }
      ]
    }
  }
...