質問: いつもお世話になっております。 今回はAWSのRDS(Mysql)使用時の DBに登録するホストについて質問させてください。 sqlでユーザ登録を行い、RDSにログインする際、 ホスト名(EC2のprivate ip)を使用して、ログインしているのですが private ipアドレスだと、EC2を作り直した際に、DBのホストも毎回変更しないといけないので、%指定で、全て許可しようかと思っているのですが、他にどのような方法があるのか知りたいと思っています。 思いつく方法としては、、 ------------ <ホスト登録方法案> 1. 「192.168.1.x」のようにDBのホスト名を登録する 2. 「192.168.1.*」のようにサブネット単位くらいで登録する 3. %でユーザ登録して、全て許可する。(RDSはpublic ipアクセスは不可)なので、これでも安全? 4. 「localhost」でDBのホスト名を登録する。 →これだと、ホストが分からないので、そもそもログインできないのですが、これでもログインする方法がある? --- <問題点> 1. EC2インスタンスを作り直した際に、private ipが変化したら DBのホスト名も毎回修正しなければならないので、手間がかかる。 2. アクセスするサブネットが複数ある場合は、何個も登録しないと いけないので、少し手間がかかる。1よりはまし。 3. 全てのインスタンスからアクセス出来るので楽。public ipからアクセス可能な場合は危険なので、private ipアクセス限定であれば これでよい? 4. そもそもlocalhost指定でEC2からログインが出来ないと思われる。 --- <質問事項> 1皆さんはRDS使用時に、DBに登録するホストは上記1~4の どの方法でされていますか?オススメはありますでしょうか? ※ネットで調べた限りだと「%」で全て許可が多かったようです。 24番のように、DBに「localhost」を登録して、EC2からアクセスする 方法はありますか? 3その他に何かよい登録方法がありましたら、ご教授頂けると幸いです。(エンドポイント指定とか可能?) --- 少し、ざっくりした質問ですが、みなさんがどのように登録しているのか聞いてみたいと思い、ご質問させて頂きました。 よろしければご回答頂けますよう、お願い致します。
回答: <**質問(1)**に対して>(質問3の話を含める) 自分の場合では選択肢的には3が一番近いです。 セキュリティの面はセキュリティグループを設定することで担保することが多いです。 また、接続時にはRDS作成時に設定されるエンドポイントをそのまま使うのが一番楽だと思います。 自分がよくやる手法は、 1. EC2インスタンスからはエンドポイントで接続 2. 接続するEC2インスタンスにセキュリティグループを設定 3. 2で設定するSGのみRDSへの接続ができるように、RDS用のセキュリティグループを用意 4. 2,3でアクセス経路を限定して、MySQ上のユーザーは'%'でホスト制限をしない という形式で設計することが多いです。 <**質問2**について> HAProxyを使えば`localhostの3306ポートはRDSへ流す`といったことはできたと思います。 ただ、上記の通りlocalhostで接続しようとすることがあまりないので、 やったことはなく、かつ自分で採用することもなさそうです。