Использование MTLS в приложениях контейнеров Azure

Взаимная безопасность уровня транспорта (mTLS) — это расширение стандартного протокола TLS, обеспечивающего взаимную проверку подлинности между клиентом и сервером. Приложения контейнеров Azure поддерживают запуск приложений с поддержкой MTLS, чтобы обеспечить повышенную безопасность в приложениях.

В приложениях контейнеров Azure все входящие запросы передаются через Envoy перед перенаправлением в целевое приложение контейнера. При использовании MTLS клиент обменивается сертификатами с Envoy. Каждый из этих сертификатов помещается в заголовок X-Forwarded-Client-Cert , который затем отправляется в приложение.

Чтобы создать приложение mTLS в приложениях контейнеров Azure, необходимо выполнить следующие действия.

  • Настройте приложения контейнеров Azure, чтобы требовать сертификаты клиента от одноранговых узлов.
  • Извлечение X.509 сертификатов из запросов.

В этой статье описывается, как обрабатывать сертификаты рукопожатия peer mTLS путем извлечения сертификата X.509 у клиента.

Требовать сертификаты клиента

Выполните следующие действия, чтобы настроить приложение-контейнер для требования сертификатов клиента:

  1. На портале Azure откройте приложение контейнера.
  2. В меню слева выберите Сеть>Вход.
  3. В разделе "Включение входящего трафика" для приложений, которым требуется конечная точка HTTP или TCP, включите входящий трафик.
  4. Для типа входящего трафика выберите HTTP.
  5. В разделе "Режим сертификата клиента" выберите "Требовать".
  6. Выберите Сохранить, чтобы применить изменения.

Дополнительные сведения о настройке проверки подлинности сертификата клиента в azure Container Apps см. в статье "Настройка проверки подлинности сертификата клиента" в приложениях контейнеров Azure.

Извлечение сертификатов X.509

Чтобы извлечь X.509 сертификаты из заголовка X-Forwarded-Client-Cert, разберите значение заголовка в коде приложения. Этот заголовок содержит сведения о сертификате клиента при включении mTLS. Сертификаты предоставляются в формате списка с запятой, который включает хэш, сертификат и цепочку.

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

  1. Извлеките заголовок X-Forwarded-Client-Cert из входящего запроса.
  2. Анализ значения заголовка для извлечения сведений о сертификате.
  3. Поместите проанализированные сертификаты в стандартный атрибут сертификата для дальнейшей проверки или использования.

После синтаксического анализа можно проверить сертификаты и использовать их в соответствии с потребностями приложения.

Пример

В приложениях Java можно использовать фильтр проверки подлинности Reactive X.509 для сопоставления сведений о пользователе из сертификатов с контекстом безопасности. Полный пример приложения Java с mTLS в приложениях контейнеров Azure см. в статье mTLS Server Application on Azure Container Apps.