Как мне разрешить доступ к базе данных MySQL на основе VPS только с IP-адресов на основе AWS East?
У меня есть база данных MySQL на VPS, доступ к которой я хочу получить только по локальному IP- адресу (в этом нет проблем) и приложение IroneWorker Ruby, которое может использовать любой из этих IP-адресов AWS East.
Пока что я могу думать об этом только путем добавления правила к брандмауэру VPS /iptables, которое разрешает подключения только всем IP-адресам AWS East через порт MySQL и отклоняет все остальные подключения.
Учитывая большое количество IP-адресов, есть ли лучший способ сделать это.
ПРИМЕЧАНИЕ. VPS не включен в AWS, поэтому использование их правил безопасности не вариант.
Кроме того, доступ будет предоставлен только для пользователя, созданного специально для доступа IronIO.
ОБНОВЛЕНИЕ: Как предложил tadman, я пришел к выводу, что установление удаленного SSH-соединения является самым безопасным маршрутом. Я отследил гемы Net::SSH и Net:SSH::Gateway, которые сделали бы это возможным, однако я все еще не уверен, как это сделать с помощью аутентификации по ключу, поэтому создал новый вопрос здесь.
2 ответа
Используя SSH, вы можете настроить туннель от каждой машины, требующей доступа к базе данных, до удаленной машины. Например:
ssh -L 3306:localhost:3306 -f remote_database.host
-L
опция указывает локальный порт для прослушивания и удаленный адрес и порт для подключения. В этом случае локальный 3306 подключен к удаленному 3306 на машине, к которой вы подключаетесь по SSH.
Возможно, вы захотите убедиться, что вы используете SSH-аутентификацию с открытым / закрытым ключом и что у вас есть способ сохранить этот туннель, если что-то пойдет не так.
Если вы можете использовать группы безопасности AWS: http://dev.iron.io/worker/reference/environment/
Если нет (хотя разрешения для широкого доступа): https://forums.aws.amazon.com/ann.jspa?annID=1701 (AWS-восточный регион)
К сожалению, нет хорошего решения для этого. Amazon может назначить практически любой ip в пределах диапазона