Я довольно новичок в работе с системным администратором, особенно на этом уровне, и мне было поручено установить «отраслевой стандарт» способ аутентификации межпроцессного взаимодействия между приложением PHP и сервером баз данных MySQL.
Я не могу найти какую-либо ссылку в документации MySQL или PHP. Я обнаружил огромное количество информации о стандартном TLS между PHP и Mysql для целей шифрования, однако абсолютно ничего не говорится о взаимной аутентификации (аутентификации приложения PHP внутри Mysql). Это возможно с или без пользовательских плагинов?
TLS только гарантирует, что люди не смогут снять ваши учетные данные «с провода», используя инструменты отслеживания пакетов. Это не делает ничего, чтобы гарантировать идентичность устройства или приложения, подключающегося к MySQL.
Для такого рода вещей вам нужен дополнительный уровень, такой как SSH, или какое-то специальное приложение, которое выполняет проверку перед тем, как разрешить соединение с MySQL через прокси-канал какого-либо вида. Это может быть сложным делом, и это, безусловно, не отраслевой стандарт.
Текущий стандарт довольно прост:
Если у вас есть дополнительные проблемы сделать аудит уважаемой охранной фирмой, чтобы убедиться в правильности вашей стратегии.
Есть два подхода, которые широко используются. Во-первых, если приложение PHP правильно проверяет сертификат сервера MySQL, то вы знаете, что сервер MySQL является тем, кем он себя считает. Это подтверждает подлинность MySQL для PHP. Затем, когда вы отправляете пароль базы данных, вы аутентифицируете приложение php на сервере MySQL. Вы использовали разные подходы в каждом направлении, но достигли взаимной аутентификации. На сегодняшний день это наиболее распространенный подход, и он соответствует определению взаимной аутентификации.
Менее распространенный подход заключается в использовании клиентские сертификаты; см. текст, начинающийся с «Требовать, чтобы также использовался сертификат клиента.» Используя аргументы —ssl-cert и —ssl-key для командной строки mysql (и аналогичные аргументы подключения из php), вы можете предоставить сертификат клиента на сервер. Сертификат сервера используется для проверки подлинности сервера на php, а сертификат клиента — для проверки подлинности php на сервере.