「外部接続が許可されていないAmazon RDSへローカル環境から接続したい!」
こういうこと、ありますよね?
外部接続できないんだから、
ローカル端末から接続するなんて無理でしょ?と思われるかもしれませんが、
次のような条件下であれば接続することは可能です。
- ローカル環境からSSH接続できる踏み台サーバやWebサーバがあること
- そのサーバーからRDSへアクセスできる(SQLが投げられる)こと
さらに今回は、MySQLのGUIツールでお馴染みの「MySQL Workbench」を使った方法をご紹介したいと思います。
SSHポートフォワードを利用する
外部接続が許可されていないAmazon RDSへ自分のローカル端末からアクセスするにはどうしたらよいのでしょうか?
▽
▽
▽
その答えは、“SSHポートフォワード機能を使う”です!!
SSHポートフォワードとは、別名”トンネリング”とも言われています。
SSHの転送機能を使い、特定のポートへ送ったデータを別のコンピューターの指定のポートへ転送することです。
SSH接続したサーバーは、RDSへ接続するための中継サーバーとなります。
上図でいうと、踏み台サーバ(EC2)が中継サーバーの役割を果たし、
ローカル端末の20,000番ポートへのアクセスをRDSの3306番ポートへ転送するといった仕組みです。
このSSHポートフォワードを利用する接続方法は、MySQL Workbenchでも機能の一つとして盛り込まれております。
MySQL Workbenchから外部接続が許可されていないRDSへアクセスする方法
それでは、ローカル端末上にあるWorkbenchから外部接続が許可されていないRDSへ、
SSHポートフォワードを使ってアクセスする方法をご説明します。
※この方法は、”Workbench community 8.0.13″での方法となります。その他のバージョンの場合、画面や手順が異なることがありますのでご注意ください。
テスト環境の構成とログイン情報
手順をご説明する前に、今回サンプルとして使うテスト環境の構成と、それぞれのサーバー情報をご紹介します。
【環境構成】
【各サーバー情報】
<EC2サーバ>
- パブリックIP:3.81.138.149
- ログインするためのユーザーID:ec2-user
- ログインするためのパスワード:(なし)
<RDS>
- エンドポイント名:testdb.cfh5bd6plzmc.us-east-1.rds.amazonaws.com
- DB名:testdb
- DBユーザー名:dbuser
- DBパスワード:abcdefg
手順
(1) Workbenchを立ち上げます
(2) メニューバーから[Database]→[Connect to Database]をクリックします
(3) “Connection Method:”項目にて[Standard TCP/IP over SSH]をクリックします
(4) “Parameters”を以下のように設定します
・SSH Hostname:3.81.138.149:22(EC2サーバのIP:22)
・SSH Username:ec2-user(EC2のログインユーザー名)
・SSH Password:(なし)
・SSH Key File:EC2のログイン認証キーファイルを指定
・MySQL Hostname:testdb.cfh5bd6plzmc.us-east-1.rds.amazonaws.com(DBのエンドポイント名)
・MySQL Server Port:3306
・Username:dbuser(DBユーザー名)
・Password:abcdefg(DBパスワード)
・Default Schema:testdb(DB名)
(5) [OK]をクリックしてDBへ接続
(6) 接続完了!
いかがでしたでしょうか?
大事な機密情報が入っているRDSをパブリックサブネットに置くというリスクを侵さなくとも、
この方法を使えば簡単にRDSへ接続することが可能です。
今回はWorkbenchを使った方法をご紹介させていただきましたが、
Workbenchでなくとも、SSHポートフォワードが利用できれば同じように接続することが可能です。
また、接続先もRDSだけではなくて、外部接続が許可されていないAPサーバなんかにも応用が可能なんです。
ぜひ試してみてくださいね。
以上、hidesanでした!