ブログ

AWS運用 セキュリティグループってどういうグループ?

エンジニアの坂下です。

 突然ですがセキュリティグループをご存知でしょうか?
アイドルグループか何か?と思った方が少なからずいるかも知れませんが、残念ながら違います。
ただ、セキュリティグループは設定した通信を許可するので、CDを買った人だけ握手ができるというところと共有点はあるかもしれません。(こじつけ)

 そんなセキュリティグループは、AWS内では結構出没率も高いので本ブログで概要について知っていただければなと思います。

AWS運用 セキュリティグループとは?

 セキュリティグループは、VPCというAWSの仮想ネットワーク上に構築されるEC2などのインスタンスに対して仮想ファイアウォールとしての機能をもたらします。

 基本的にVPC内に構築されるインスタンスとセットで利用される認識で良いです。

そのため、例えばEC2インスタンスを構築した場合に、”セキュリティグループなし”という設定はできず、必ず何かしらのセキュリティグループを適用しなければなりません。

 セキュリティグループは、AWSのセキュリティサービスとしては簡潔で馴染みやすいかなと思いますので、実際に設定してみることをお勧めいたします。

AWS運用 セキュリティグループは仮想ファイアウォール

 前章で「仮想ファイアウォール」という言葉が出てきました。

 同じ業界の人ならわかるかもしれませんが、私も他業界からこのIT業界に入ってきた人間なので、結構わからない人もいるのではないかと思っていますので説明いたします。

 この「仮想ファイアウォール」という言葉を「仮想」と「ファイアウォール」に分けて説明したいと思います。

 ではそもそもの「ファイアウォール」から説明します。「ファイアウォール」の日本語訳は、RPGで出てきそうな強そうな呪文「炎の壁」ではなく、「防火壁」です。
この訳からもセキュリティということを連想させてくれます。

 じゃあ、何から守ってくれるの?ということなんですが、不正なアクセスから守ってくれます。検索サイトで「ファイアウォール ハードウェア」と検索するとなんか四角い箱みたいなのが出てきますが、これが今回示している「ファイアウォール」の正体となります。

ではこの四角い箱みたいなのとセキュリティグループにどう繋がるかということを「仮想」という言葉と共に説明します。

 「仮想」は「Virtual」の日本語訳ですが、ここで示す「仮想」は「〜っぽい」のことです。
つまり「仮想ファイアウォール」とは、「ファイアウォールっぽい」ってことになります。

では、なぜ「〜っぽい」がつくかというと本来のものと異なるからです。
本来のもの「ファイアウォール」とは、専用のハードウェア(四角い箱みたいなもの)+中に入っているソフトウェア(機能)がセットになっているものです。
実際に目に見えているものもファイアウォールで、機能しているものもファイアウォールで一致しています。

 逆に言うと、「仮想」とつく場合は、実際に目に見えているものと機能しているものにギャップがあることになります。
例えばですが、汎用サーバ+ファイアウォール機能だと、目に見えるものはサーバですが、機能しているのはファイアウォールというギャップがあるため「仮想ファイアウォール」になるわけです。

 セキュリティグループに関しても同等のことが言えます。

AWS運用 セキュリティグループとネットワークACLの違い

 よくセキュリティグループ比較されるのが、ネットワークACLです。
なぜ比較されるかというとVPCという中で両方が存在しているからですね。つまりご近所さんってことです。
差分の代表例は下記の表を参照ください。

セキュリティグループネットワークACL
影響範囲インスタンス単位で動作サブネット単位で動作
設定方法許可設定のみ可能許可拒否の両方の設定が可能
ルールの評価全てのルールを評価ルールに優先度があり、優先度が高い方から評価する
設定効果ステートフルステートレス

 表の上から順番に説明いたします。
まずは、影響範囲が違うということですが、図で示した方が早いかと思いますので図で示します。

 今回の図では、インターネットからEC2へ向けての通信を想定します。
その場合、左から右へ通信がされますが、まず評価されるのがネットワークACLになり、その後、各EC2へのセキュリティグループが評価されます。

つまり、ネットワークACLの方が影響範囲が大きく先に判定されるため、どんなに奥のセキュリティグループで許可設定を行っていても、手前のネットワークACLで拒否してしまうと通信ができなくなってしまいます。

 次に設定方法ですが、セキュリティグループは許可設定のみできます。
つまり設定した通信のみ許可し、他は全て拒否します。イメージとしては、SNSなどの友達リストをイメージしてもらえればいいでしょう。友達リストにある人とのみ連絡が取れるようなイメージです。

ネットワークACLは、許可拒否の両方設定ができます。つまり友達リストに加え、ブロックリストも作ることができるイメージです。

 ルールの評価についてですが、セキュリティグループは全てのルールを評価します。
ルールに序列はなく、上下関係がないということです。またセキュリティグループは許可設定のみできますので、矛盾したルールが設定されにくい仕組みになっています。

ネットワークACLは、セキュリティグループと異なりルールに序列があり、優先度があります。そのため、優先度が高いものが先に評価された場合、その後にある優先度が低いものについては評価されないため、ルールの順番や拒否設定の関係性について気にしながら運用しなくてはいけません。運用が少し複雑になるデメリットはありますが、細かい設定ができるところはメリットになります。

セキュリティグループとネットワークACLに共通する部分があり、どのルールにも評価されなかった通信は拒否されるということです。暗黙のDenyとか言ったりもします。

 最後に設定効果についてですが、セキュリティグループはステートフルで、ネットワークACLはステートレスです。

 ステートフルは往復を評価、ステートレスは片道のみ評価します。
往復?片道?にピンとこない人がいるかもしれませんが、通信というのは基本的に往復するものがほとんどです。

例えば、インターネットでホームページを見るときは、

閲覧者のパソコン:「あなたのホームページ見せて」

該当のサーバ:「いいよ」

ってな感じで、通信が発生しています。

 セキュリティグループは、ステートフルなので、上図で赤い矢印の通信を許可した場合、自動的に戻りの通信である青い矢印も許可してくれます。

 ネットワークACLは、ステートレスなので、上図で赤い矢印の通信を許可しただけでは、戻りの通信である青い矢印を許可してくれません。そのため、手動で青い矢印を許可する設定も必要になります。

 そのため、セキュリティグループでは戻りの通信を意識しなくてよい一方で、ネットワークACLは戻りの通信の送信元と宛先がどうなるかを意識しつつそれぞれ(赤い矢印と青い矢印)を設定する必要があります。

AWS運用 セキュリティグループの設定方法

 最後に実際のマネジメントコンソールでのセキュリティグループ設定画面を簡単に見ていって終わりにしたいと思います。

 マネジメントコンソールでのセキュリティグループの設定ですが、VPCの画面からもできますが、セキュリティグループはEC2インスタンスとセットで使うことが多いので、EC2の画面から設定していきます。

マネジメントコンソールからEC2のサービスを選択してEC2画面のメニューからセキュリティグループを選択します。そうするとセキュリティグループを作成というボタンがあるのでクリックします。そうするとセキュリティグループ作成画面に遷移します。

今回は「John」という名前のセキュリティグループを作成し、全ての入ってくるHTTPとHTTPS通信の許可設定をします。

上図にように設定し、セキュリティグループを作成ボタンをクリックするだけで作成完了です。作成後は、該当のインスタンスに紐付けるのを忘れないようにしましょう。

また、同じVPCの中でのインスタンス同士の通信を許可する場合もありますのでそちらの設定方法についても触れていきます。

先ほどは「John」を作成したので、今度は「Michael」というセキュリティグループを作りながら説明します。

このように送信元の設定で、先ほど作った「John」のセキュリティグループを選択します。この設定によって、セキュリティグループ「John」を紐付けているインスタンスからの通信を許可します。

このように送信元をセキュリティグループに設定することによって、VPC内の通信許可を簡単に設定することができます。

 いかがだったでしょうか? セキュリティグループは、使用頻度も高く簡潔な設定のため、AWS初学者が勉強するにはうってつけかと思います。

 冒頭でも記載しましたが、実際に利用して色々試してもらえると理解度も興味も持ってもらえるかと思いますので、ぜひお試しください。

元記事発行日: 2021年10月04日、最終更新日: 2022年04月01日