У меня есть база данных mysql, размещенная на сервере Amazon EC2, и я хочу получить к ней удаленный доступ, чтобы внести в нее изменения. Поскольку у меня нет статического IP-адреса, я не могу разрешить определенный IP-адрес в брандмауэре для безопасного доступа к порту 3306.
Есть ли другой способ безопасно открыть 3306 с удаленного компьютера? одним из решений может быть туннелирование порта 3306 через ssh, поэтому любое другое решение безопасного доступа, которое у нас есть для доступа к 3306?
Спасибо
SSH-туннелирование, вероятно, самый простой вариант настройки, поскольку он не требует изменений в вашей конфигурации MySQL. Это так же безопасно, как и использование встроенной в MySQL поддержки SSL.
На своей рабочей станции просто запустите:
$ ssh user@host -L3306:localhost:3306
Затем подключитесь к localhost: 3306, и все будет готово. Вероятно, вам потребуется добавить грант для любого пользователя, с которым вы будете подключаться.
Вы можете найти документацию MySQL SSL полезной:
http://dev.mysql.com/doc/refman/5.0/en/secure-connections.html
В вашем случае я бы рекомендовал использовать хотя бы серверный SSL для защиты вашего пароля и данных, но использование клиентского SSL-сертификата (самоподписанного и доверенного на сервере) тоже может быть неплохой идеей.
Я обычно не рекомендую аутентификацию на основе хоста или использование ACL на основе хоста для защиты вашего подключения к чему-либо, потому что IP-адреса (и имена DNS, как некоторые люди!) Могут быть подделаны и взломаны, а также вам не нужно административного доступа к доверенному клиенту достаточно, чтобы его скомпрометировать, и обычно это легче сделать, чем скомпрометировать достаточно длинный закрытый ключ. Кроме того, если вы не используете SSL, вы уязвимы для атак с перехватом трафика.
Если вы говорите об Amazon RDS экземпляры, то вы уже можете использовать соединения SSL для подключения. Если вы соответствующим образом настроите пользователей своей БД, вы также можете сделать это обязательным.