Безопасность API в лучших практиках Azure

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

  1. Требуется ли для приложения API аутентификация при реализации с помощью управления API? Если да, то какие варианты? Эта ссылка http://www.kefalidis.me/2015/06/taking-advantage-of-api-management-for-api-apps/ упоминает "Имейте в виду, что нет необходимости иметь аутентификацию в приложении API, поскольку вы можете включить аутентификацию по управлению API, и пусть он обрабатывает все детали ». Значит, это означает, что проверка подлинности приложения API будет общедоступной анонимной? Но тогда тот, кто знает прямой URL-адрес приложения API, может получить к нему доступ напрямую.
  2. Как лучше всего реализовать безопасность управления API? Тот, который упоминается в руководстве (наличие необработанного ключа подписки, переданного в заголовке), похоже, подвержен атаке человека в середине.
  3. Какие преимущества добавляет приложение API вместо реализации с помощью обычного проекта веб-API?

Заранее спасибо.


person Adelia Benalius    schedule 03.09.2015    source источник


Ответы (1)


Я могу ответить с точки зрения управления API. Чтобы защитить соединение между API Mgmt и вашим сервером (иногда называемое безопасностью последней мили), есть несколько вариантов:

  1. Базовая аутентификация: это простейшее решение
  2. Взаимная проверка подлинности сертификатов: https://azure.microsoft.com/en-us/documentation/articles/api-management-howto-mutual-certificates/ - это наиболее распространенный подход.
  3. Белый список IP-адресов: если у вас есть экземпляр APIM уровня Standard или Premium, IP-адрес прокси останется постоянным. Таким образом, вы можете настроить правила брандмауэра для блокировки неизвестных IP-адресов.
  4. Токен JWT: если ваш бэкэнд имеет возможность проверять токены JWT, вы можете заблокировать любых вызывающих абонентов без действительного JWT.

Это видео также может быть полезно: https://channel9.msdn.com/Blogs/AzureApiMgmt/Last-mile-Security

Я думаю, что документ означал, что вы можете выполнять проверку токена JWT в APIM. Однако, чтобы предотвратить прямой вызов вашего бэкэнда, вам нужно будет реализовать один из упомянутых выше вариантов в своих приложениях Api.

person Miao Jiang    schedule 08.09.2015
comment
Привет, Мяо Цзян, спасибо за ответ. Я читал об этих вариантах, но не нашел ни одной статьи, в которой конкретно упоминается поддержка приложений API для любого из этих вариантов. - person Adelia Benalius; 08.09.2015