Какие способы обеспечения безопасности функций Azure
Я написал 5 функций Azure на портале Azure, используя C#.
Ниже приведены инструкции по установке моего приложения:
- Скопируйте сценарии развертывания в пограничный узел кластера.
- Сценарии развертывания для выполнения следующих действий
- Вызовите функции Azure, чтобы получить сборки моего приложения от WASB.
- Установите мое приложение на пограничном узле
- Вызовите функции Azure для обновления.
Вышеописанный процесс будет выполняться на узле Customer Edge.
Авторизация с использованием " ключей", описанная здесь, предназначена только для обеспечения другого уровня авторизации ключей API и не применима, когда мой скрипт должен вызываться общедоступным клиентом (например, пограничным узлом), поскольку он может быть обнаружен там.
Каковы наилучшие способы защиты функций Azure в моем сценарии?
2 ответа
По умолчанию функции Azure общедоступны. Таким образом, вы развертываете их, и конечная точка доступна публично через адрес функции. Как вы упомянули, вы можете установить доступ на уровне функций, что означает, что вам нужно передать ключ доступа. Так что они добры, если защищены.
Есть и другие варианты:
Вы можете создавать функции внутри vnet, используя службу среды Azure. Но за это вы платите хорошие деньги и должны использовать версию плана Azure с сервисным планом.
Я объединил управление API с функциями. API-управление - это способ представить ваш API-интерфейс потребителям, но при этом сохранить большой контроль над его использованием. Компонент Api Management не запрещает доступ к общему лазурному адресу, но я реализовал шаблон в коде, который проверяет наличие специального токена, который добавляется к запросу http как часть сквозного управления приложениями. Или же вы можете установить IP-ограничения в приложении Function, чтобы разрешить трафик только от конечной точки управления API. (IP-адрес) Таким образом, вы можете перейти к функции только через управление приложениями.
Просто обратите внимание на вышесказанное, портал Azure удалил возможность устанавливать ограничения IP-адресов через вкладку стандартных функций сети. Поэтому вам нужно зайти в проводник ресурсов и вручную установить ограничения IP в разделе веб-конфигурации.
Наконец, вы можете настроить oauth-сервер и проверить токен в функции, в компоненте управления API или в обоих.
AZURE ASE (среда службы приложений) слишком дорогая, только для 5 функций. Вы можете защитить функции путем добавления шлюза приложения и внесения в белый список IP-адреса шлюза приложения в функции. Вы можете найти более подробную информацию здесь: Белый список в функциях Azure
Это все в дополнение к аутентификации и авторизации на основе токенов или AAD (например, "Noel", упомянутый в предыдущем ответе).
Лучший способ защитить ваши функции Azure - использовать AAD или сервер аутентификации, которому вы доверяете. Если это невозможно, возможно, потому, что вы используете эти функции из консоли или приложение не поддерживает поток кода авторизации или используется пользователями, которых нет в вашем AAD, тогда используйте APIM. Техника, предоставляемая @Noel ниже, является мощной, и она необходима для ограничения доступа к вашим функциям только из APIM.(Функции не должны быть анонимными, и нет необходимости иметь какой-либо код авторизации, кроме кода APIM.) Теперь подумайте, как защитить APIM. У вас есть несколько вариантов, но, вероятно, вы можете рассматривать сертификат клиента как средство правильной аутентификации. В конце концов, потребителям необходимо иметь что-то для их аутентификации (пароль, сертификат, устройство или что-то еще). Таким образом, установка политики для проверки наличия сертификата и поиск способа проверки этого сертификата может помочь защитить ваш APIM. Теперь возникает вопрос о защите APIM, и здесь у вас есть много вариантов на основе политик. Надеюсь, это поможет. (Также не забудьте рассмотреть другие решения, предоставленные Ноэлем выше)