У меня есть база данных MySQL на выделенном сервере, которую я хочу реплицировать в Amazon RDS, чтобы всегда иметь актуальную резервную копию.
Для этого Amazon RDS должен иметь возможность подключаться к моему главному серверу MySQL.
Я не хочу открывать порт MySQL 3306
для всего мира, хотя у MySQL есть собственные разрешения, я считаю, что обнаружение проблемы безопасности в MySQL представляет собой дополнительный риск для безопасности.
Итак, я хочу добавить в iptables правило, разрешающее все подключения из *.rds.amazonaws.com
. Но, насколько я понимаю, хотя iptables позволяет указывать имя хоста вместо IP-адреса, оно разрешается при создании правила, а не при проверке пакета.
И из-за того, как спроектирован RDS, IP-адрес за именем хоста экземпляра RDS может измениться в течение его срока службы, так что это не лучшее решение.
Какие у меня есть альтернативы, чтобы открыть мой сервер MySQL только для RDS?
Вот ссылка на вопрос об обмене стеком Unix и Linux: UFW: разрешить трафик только из домена с динамическим IP-адресом
Блокировка на уровне TCP / IP может не работать с динамическим IP-адресом. Хотя в принятом ответе упоминается сценарий, он может быть подвержен ошибкам. AWS публикует список диапазонов IP, но со временем это может измениться.
К сожалению, лучшим вариантом может быть аутентификация пользователя в MySQL. Вы можете ограничить привилегии пользователем И именем хоста: Указание имен учетных записей.
Я считаю, что наиболее правильным способом действий было бы использование Группа безопасности VPC. Вы можете написать группу безопасности, чтобы разрешить трафик TCP на порт 3306 только от других экземпляров, которые имеют эту группу безопасности:
Если у вас есть экземпляр, к которому вы действительно хотите получить доступ публично, добавьте еще одну группу безопасности, в которой указано «0.0.0.0/0» в качестве источника для порта 3306. Таким образом, оба правила будут перекрываться.