AWSをはじめたての際、一番わかりづらいのが、ネットワーク周りについて。
これは間違いないと思います。
そんなネットワークについて次の記事で基礎的なネットワーク要素をご紹介しました。
VPCやサブネット等、AWSの基本ネットワーク要素を解説する
今回は、その中でもセキュリティグループについて、少し深掘りして解説していいきたいと思います。
セキュリティグループとは?
セキュリティグループとは、インスタンスに割り当てるファイアウォールです。
どこから、どのような通信データの受け入れを許可するのか。
または、どこへ、どのような通信データの発信を許可するのか。
この設定をするのが、セキュリティグループとなります。
セキュリティグループはインスタンスに適用する
セキュリティグループはインスタンスに適用します。
インスタンスといっても様々ありまして、EC2もありますし、RDSもあります。
ELBだってあります。
ですが、サブネットには適用できません。
なぜこのような話をするのかというと、セキュリティグループに似たサービスで「ネットワークACL」というものがあります。
ネットワークACLは、サブネットを対象として適用します。
なので、インスタンスを同じサブネットに所属させるだけで、ネットワークACLの設定が適用されます。
ですが、セキュリティグループの適用はインスタンスです。
きちんとインスタンスごとに適用させましょう。
ここが少し混乱する部分かと思いますので、気をつけてくださいね。
インバウンド、アウトバウンドとは?
例えばセキュリティグループをEC2インスタンスにつけたとします。
その時、EC2が受け取る方の通信をインバウンド、
EC2から送信する方の通信をアウトバウンドと言います。
ここで混乱する人がいるんですが、
例えば、あるサーバAからEC2がファイルをダウンロードするとします。
この場合、まず「ダウンロードさせてくれ」っていう命令をEC2から送信します。
これはアウトバンド通信です。
で、命令の結果、EC2はデータをダウンロードする、
これはインバウンドです。
じゃ、ファイルをサーバAからダウンロードするのにアウトバンドもインバウンドも両方の許可が必要かというと、
セキュリティグループはその必要はありません。
アウトバンドで通信した結果、インバウンドが発生したら、
そのインバウンドはセキュリティグループで許可してようが許可してなかろうが通信ができます。
逆もしかりですね。
インバウンドで許可されていたら、アウトバンドの通信も無条件で通る。
セキュリティグループはこうなっています。
※ネットワークACLは両方の許可が必要なのでご注意ください。
なので、どちらの方向の通信がまず最初にあるのか?
セキュリティグループを設定する際は、その点を押さえることが重要です。
ソースにセキュリティグループを指定する?
セキュリティグループのソース欄(送信元)とは、どこを対象とした通信制御かということを指定する項目です。
もちろん、このソース欄にはCIDRで記載することもできますが、セキュリティグループを指定することもできます。
「え?セキュリティグループの送信元がセキュリティグループってどういうこと?」
と混乱しますよね?(笑)
これは厳密に言うと、送信元に記載されたセキュリティグループを適用されたインスタンスが送信元、ということを意味しています。
「なんでそんな面倒な書き方をできるようにしているんだ?」と私も最初はそう思いましたよ。
でもこれ、慣れてくると超便利なんです!
セキュリティグループって複数のインスタンスに取り付けられることができるんですね。
例えば、同じようなサーバとして機能しているEC2インスタンス3台に同一のセキュリティグループを取り付けました。
EC2のバックにはRDSが控えていて、RDSのセキュリティグループの送信元にEC2インスタンスに適用しているセキュリティグループを記載します。
そうなると、本来ならば送信元に3つのIPアドレスを書かなくてはならないですが、セキュリティグループを1つ書いておくだけでいいですよね。
さらに、APサーバを3台から4台にスケールアウト(サーバー台数を増やすという意味です)しました。
4台目のサーバにも同じセキュリティグループを適用します。
すると、自動的に4台目のサーバも送信元として見なされるわけです。
これ便利ですよ!ぜひこの手法使ってみてください。
セキュリティグループの設定例
では、実際にどのようにセキュリティグループを書いていけばよのか。
さまざまなセキュリティグループの書き方がありますが、その中でもよく使うセキュリティグループの設定例をご紹介します。
【セキュリティグループ設定例 ELB】
バックにはwebサーバがあり、一般公開されているとします。
HTTP通信、HTTPS通信を公開します。
【セキュリティグループ設定例 EC2】
Webサーバとして機能し、フロントにELBがあり、バックにDBサーバがあるとします。
ELBからは、HTTP通信を受け付けます。
【セキュリティグループ設定例 RDS】
DBサーバのフロントにWebサーバがあるとします。
Webサーバからは、SQL通信を受け付けます。
説明欄にはソースの内容を入れておくと便利
セキュリティグループの説明欄の書き方のご紹介です。
もちろん、説明欄には何を記載してもいいんですが、ソース欄に書かれた対象名がわかる内容を記載するのが一番便利かなぁと私は思います。
例えばソース欄に「51.22.31.8/32」とだけ書かれていると、あとあと見た時
「あれ?この”51.22.31.8″ってどこだったっけかなぁ?」
と、よくなります。
・・・私だけですかね・・?笑
いや、多くの方がそうだと思います!
人間は忘れる生き物です。
なので、パッと見て思い出せるように説明欄にソースの対象名を書いておきましょう。
(例)Ikebukuro office
↑こんな風にね。
ちょっとしたTipsですね。
セキュリティグループのコピー方法
こちらも説明欄同様、ちょっとしたTipsになります。
たまに同じようなセキュリティグループを複数作成しなくてはならないことがあります。
例えば開発環境と本番環境用にそれぞれ同じようなセキュリティグループを作るとか。
このような時、便利な小技があるんです。
それがセキュリティグループのコピーです。
このセキュリティグループのコピーはVPCをまたいで行うことも可能です。
(1)EC2コンソール画面を開きます。
(2)左ナビゲーションペインより[セキュリティグループ]をクリックします
(3)コピー対象のセキュリティグループを選択します
(4)[アクション]→[コピーして新規作成]をクリックします
(5)”セキュリティグループ名”、”説明”,”VPC”欄を入力して[作成]をクリックします
この方法は、EC2コンソール画面から行うのがポイントです。
セキュリティグループの作成・変更は、VPCコンソール画面からも行うことができますが、このコピー操作はできませんのでご注意を。
いかがでしたでしょうか?
セキュリティグループは非常によく使うサービスですし、
名前の通りセキュリティに関わる要となるものです。
なのでしっかりと理解していただければと思います。
以上、hidesanでした!