mTLS: что это такое и почему это важно в сервисной сетке

Опубликовано: 30 Марта, 2023
mTLS: что это такое и почему это важно в сервисной сетке

Организации переносят свои монолитные рабочие нагрузки на архитектуру микросервисов. Многие организации уже использовали рабочие нагрузки на основе микросервисов в производственной среде. Преимущества инфраструктуры распределенных микросервисов многочисленны. Многие организации допускают ошибку, полагая, что, поскольку каждая служба в контейнере отделена стеной от других контейнеров, кластеру присуща неотъемлемая безопасность. Несмотря на то, что службы разрознены, эти службы взаимодействуют друг с другом для выполнения рабочей нагрузки. Сервисы используют API для связи друг с другом. И именно в связи между этими службами безопасность имеет первостепенное значение.

Давайте сначала познакомимся с TLS

Вы, наверное, слышали о TLS. Безопасность транспортного уровня часто используется, когда вы подключаетесь к серверу через браузер. Например, когда вы открываете веб-сайт, вы можете увидеть зеленый значок замка рядом с адресной строкой, который означает, что TLS включен. Когда клиент подключается к серверу с помощью TLS, клиент запрашивает сервер идентифицировать себя, предоставляя клиенту свой общедоступный сертификат. Клиент, в свою очередь, предлагает серверу расшифровать известное значение, зашифрованное с использованием открытого ключа сервера. Как только сервер расшифровывает известное значение, устанавливается безопасное и зашифрованное соединение между сервером и клиентом. Однако вредоносный сервер может предоставить клиенту поддельный сертификат. В таком случае подлинность этого сертификата необходимо будет проверить через доверенный сторонний центр сертификации. Соединение не будет установлено, если сертификат не подписан доверенным корневым ЦС или его промежуточными ЦС.
Изображение 9891
TLS уже много лет используется для безопасных соединений между клиентом и сервером. Однако что, если вы хотите, чтобы к серверу обращались только определенные клиенты. С TLS любой клиент может получить доступ к любому серверу. Обычно клиент проходит валидацию с помощью двухфакторной аутентификации, как в случае доступа к порталу вашего банка онлайн. Однако что, если вы хотите ограничить доступ к определенному серверу только для определенного отдела внутри организации. Это можно сделать несколькими способами. Однако в нынешнюю эпоху безопасности с нулевым доверием mTLS — ваш лучший вариант.

Что такое mTLS?

Взаимный TLS или mTLS, как следует из названия, устанавливает безопасное соединение между клиентом и сервером после того, как они оба проверяют подлинность друг друга. Это означает, что в отличие от TLS, где для подтверждения своей подлинности требовался только сервер, в mTLS серверу также потребуется клиент для аутентификации. Когда клиент запрашивает доступ к серверу, сервер предоставляет свой сертификат клиенту и, в свою очередь, запрашивает у клиента общедоступный сертификат. Этот сертификат будет содержать открытый ключ, идентификатор и подпись доверенного центра сертификации. Затем оба объекта будут искать подпись и подниматься по цепочке доверия, пока не найдут общий центр сертификации, подтверждающий подлинность обоих объектов и создающий безопасный и зашифрованный канал.

Поскольку оба объекта должны быть проверены, mTLS может снизить вероятность атак. Этот тип безопасности с нулевым доверием находит применение во многих сферах, особенно в сервисной сетке.

Проблемы безопасности микросервисов

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

Изображение 9892
Введите сервисную сетку. Сервисные сетки, такие как Istio, помогают с взаимодействием между приложениями, управлением безопасностью, контролем трафика, балансировкой нагрузки и безопасностью. С помощью Service Mesh вы можете упростить связь между службами, создавать и управлять политиками связи и авторизации для всех ваших служб, а также отслеживать любые узкие места в трафике в режиме реального времени. Плоскость управления сеткой служб предоставляет центр сертификации, который подписывает общедоступные сертификаты ваших служб, а также политики авторизации, которым должна соответствовать каждая служба.

mTLS в сервисной сетке

Две службы, пытающиеся связаться друг с другом, выполняют множество шагов для аутентификации и установления безопасного и зашифрованного соединения. Микросервис A запросит у Microservice B свой общедоступный сертификат; микросервис B отправит свой сертификат и запросит сертификат у микросервиса A. Затем микросервис A проверит сертификат с помощью доверенного центра сертификации и отправит свой сертификат вместе с зашифрованным ключом сеанса. Затем микросервис B проверит подлинность микросервиса A, используя центр сертификации и политики связи, распространяемые сервером API конфигурации. Если службы предназначены для связи, mTLS установит безопасный канал, иначе доступ будет запрещен.

Соединение mTLS устанавливается сайдкарами — микросервисы используют сайдкары для связи друг с другом. Вместо того, чтобы заставлять разработчиков писать код для политик авторизации и связи внутри каждой службы, можно использовать Sidecars, чтобы сделать это эффективно и без права на человеческую ошибку. Сайдкары действуют как мост между двумя сервисами и разгружают много накладных расходов, связанных с управлением безопасностью. Эти дополнительные компоненты отвечают за запрос сертификатов, проверку их достоверности с помощью ЦС и проверку политик авторизации, определенных плоскостью управления сервисной сеткой. Таким образом, фактический код службы не затрагивается, и разработчикам не придется тратить время на обновление кода при каждом выпуске.

Связь без mTLS по-прежнему важна

При переносе рабочих нагрузок в сервисную сетку может потребоваться убедиться, что связь без mTLS разрешена. Не для всех сервисов, которые вы создаете, будет включен mTLS. Строго включив mTLS в вашей сервисной сетке, пространстве имен или приложении, вы рискуете сломать свое приложение. Вероятно, это такая же большая проблема, как нарушение безопасности. Другой сценарий, в котором вам может потребоваться включить связь без mTLS, — это когда вы хотите, чтобы ваши службы взаимодействовали с внешними службами, отличными от mTLS. Поскольку рабочие нагрузки, основанные на микросервисах, имеют тенденцию становиться довольно сложными, у вас могут возникнуть трудности с определением места возникновения проблемы.

Популярный инструмент Service Mesh Istio поставляется с тремя различными настройками для mTLS:

    • Разрешающий: разрешает связь как по mTLS, так и без mTLS.

.

  • Строгий: разрешает только связь mTLS.
  • Отключено: разрешено только взаимодействие без mTLS.

Istio по умолчанию включает разрешающий режим на всех своих прокси. Это лучший способ, если вы только начинаете миграционный путь. Разрешающий режим не является безопасным, поскольку мошеннические микросервисы все еще могут взаимодействовать с вашими критически важными сервисами. Однако поначалу вашим приоритетом должно быть обеспечение того, чтобы ваши рабочие нагрузки не прерывались. Затем вы можете постепенно реализовать строгую настройку в зависимости от того, как взаимодействуют сервисы.

Большой импульс для безопасности с нулевым доверием

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