Взаимный TLS (mTLS)

Взаимный TLS — это обычный TLS, в котором рукопожатие идёт в обе стороны: сервер предъявляет сертификат, который проверяет клиент, и клиент предъявляет сертификат, который проверяет сервер. Обычный HTTPS аутентифицирует только сервер. Он доказывает, что вы разговариваете с нужным узлом, и ничего не говорит о том, кто разговаривает; взаимный TLS закрывает этот второй пробел на транспортном уровне, до того как отработает хоть строчка прикладного кода. Для SaaS-поставщика привлекательность в том, что предъявляемый секрет заменяется ключом, который никуда не едет. API-ключ или токен уходит с каждым запросом и потому воспроизводим любым, кто прочитал лог, буфер прокси или неаккуратный отчёт об ошибке. У клиентского сертификата закрытый ключ остаётся на клиенте, а рукопожатие доказывает владение, не передавая его. Поэтому регулируемые и корпоративные покупатели просят mTLS на межмашинных эндпоинтах, и поэтому он встречается на трафике между сервисами внутри сети, которая перестала считать саму себя доверенной. Плата — жизненный цикл сертификатов. Кто-то должен их выпускать, раздавать, менять до истечения срока и отзывать при выводе клиента из эксплуатации; просроченный клиентский сертификат отказывает наглухо и роняет интеграцию в момент, который никто не планировал. Слежение за сроками здесь не приятное дополнение, а основное операционное содержание схемы. Два ограничения стоит назвать прямо. Взаимный TLS аутентифицирует клиента, но не авторизует его: личность из сертификата всё равно нужно сопоставить с арендатором и набором прав, иначе любой валидный сертификат достаёт до всего. И если TLS завершается на балансировщике или на пограничной сети, личность из сертификата приходится осознанно пробрасывать в приложение, обычно заголовком, а этот заголовок затем обязательно вырезать из недоверенных входящих запросов, чтобы его нельзя было подделать.

Похожие термины

Ещё термины: Интеграции