はじめに
社会人なりたてのエンジニアです。学生時代はデータサイエンスに取り組み、趣味でweb開発をしていたのですが、業務ではクラウド系のインフラに取り組むことになりました。
ここ最近の学びを整理するついでに覚え書きしておこうと思います。主に既出の内容ですが、今までAWSなんとなく使ってる方やAWS始めたい方の手助けになる記事になればと思います。
ゴール
AWSを使ってインフラ構築して、簡単なブラウザアプリケーションを展開する。
※アプリケーションに関しては、詳しくは書きません。
設計
インフラ構築する上で設計図を用意しておきます。自分もなんですが、学生のころはとりあえず「EC2をたてる!」なんてこと多いかと思います。最初に設計図を作ると作業がスムーズになるかと思います。
設計図
とりあえず、こんな感じで想定します。
抜けてるIPらへんはElasticIPをアタッチしたときに追記します。
MySQLの接続ポートなんだっけ、、笑
ポイント
① 固定IPをもつのは踏み台サーバー(rep_EC2)とポートフォワーディングサーバー(pf_EC2)のみ
② WEBサーバー(front_EC2)とAPサーバー(server_EC2,db_instace)の役割をもつVPCはインターネットから分離する
③ VPC同士をピアリング接続
④ 各EC2にフローログを設定
それぞれの意図を説明していきます。
① 固定IPをもつEC2をしぼる
固定IPをもつということは、それだけ狙われやすいサーバーだと思います。なので、できるだけ情報を持たないサーバーにすべきかと考え以下のようにしました。
運用者側からは、rep_EC2を踏み台サーバーとして各サーバーにアクセスできる形をとりました。
ユーザー側からアクセスできるEC2はpf_EC2のみにしました。このpf_EC2をポートフォワーディングさせることでwebサーバーにアクセスできる仕組みにします。
② 主要サーバーはインターネットから分離
上記とほぼ同様なのですが、インターネットとの接続があると攻撃の対象になると考えました。なのでインターネットとの接続を絶ちました(具体的には、ルートテーブルからインターネットゲートウェイを外す)。これで少しは安全度が増すのかなと。
③ VPC同士をピアリング
これは②を適用すると取らざる得ない選択肢なのかなと思うんですが、異なるVPCに属するEC2同士で疎通するためにピアリング接続をしました。ざっくり言うと、インターネットを介さずに疎通が取れるって感じですかね。
このピアリング接続は、今回の大きな学びの一つでした。学生時代は単語すら聞いたことなかったです。
④ 各EC2にフローログを設定
フローログは、設定したEC2への接続をログとして吐き出してくれます。これによって、見覚えないアクセスなどを把握することができます。
これも今回初めて設定してみたんですけど、特に固定IPもってるEC2(Ex.踏み台サーバー)には知らないIPからかなりアクセスがきていることがわかりました。
まとめ
こんなところポイントとして構成を考えてみました。クラウドやセキュリティに関してはホントに初心者なんで、「こんなんでセキュアって言えるの」みたいな意見があるかと思います。コメントにて優しくご教授していただけるとありがたいです。
ただ、数ヶ月前まで学生として趣味でいじっていた自分のような方には参考、、までとは言いませんがアプローチ(インターネットからの分離,ピアリング接続,フローログなど)があるということ知ってもらえると嬉しいです。
おわりに
とりあえず、インフラの設計とセキュアにするためアプローチをまとめてみました。
次は実際に構築していきます。
異なるVPCでPublicIP持っていないのに疎通が取れるピアリング接続(自分的には感動しましたw)やフローログの設定などもまとめたいと思っています。