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