EC2のセキュリティグループとは?Inbound/Outboundルールを初心者向けに徹底解説!
生徒
「EC2にセキュリティグループっていうのがあるんですが、これは一体何をするものなんですか?」
先生
「セキュリティグループは、EC2インスタンスに対してどの通信を許可するか、または拒否するかを設定できるAWSのファイアウォールのようなものです。」
生徒
「なるほど……じゃあ、どんなルールがあるんですか?」
先生
「それでは、セキュリティグループのInboundルール(受信)とOutboundルール(送信)の違いや使い方について詳しく説明していきましょう。」
1. セキュリティグループとは?
AWS EC2におけるセキュリティグループ(Security Group)は、仮想的なファイアウォールの役割を果たします。インスタンスごとに割り当てられ、どの通信を許可するかをインバウンド(受信)とアウトバウンド(送信)のルールで制御します。
セキュリティグループのルールでは、許可する通信だけを指定します。拒否ルールは存在しません。つまり、指定がなければ通信は自動的に拒否されます。
2. インバウンドルールとは?
インバウンドルール(Inbound Rule)は、外部からEC2インスタンスへの接続を制御する設定です。
たとえば、EC2でWebサーバー(ApacheやNginx)を立てた場合、HTTPポートである80番を開けなければ、インターネットからのアクセスができません。
以下はよく使われるインバウンドルールの例です。
- TCP ポート 22(SSH): 管理者がターミナルからアクセス
- TCP ポート 80(HTTP): Web サイトを公開
- TCP ポート 443(HTTPS): SSL通信で安全にWebサイトを公開
3. アウトバウンドルールとは?
アウトバウンドルール(Outbound Rule)は、EC2インスタンスから外部に向けて送信する通信を制御する設定です。
デフォルトでは、すべてのアウトバウンド通信が許可されています。たとえば、EC2インスタンス内からインターネットに接続して、外部APIを叩いたり、アップデートしたりする通信は通常許可されています。
セキュリティを高めたい場合は、必要なアウトバウンド通信だけを許可して、他はブロックする設定にすることも可能です。
4. セキュリティグループのルール設定画面の見方
EC2インスタンス作成時や後からでも、AWSマネジメントコンソール上でセキュリティグループを設定できます。ルールの追加や削除も簡単です。
ルールを追加するときには、以下の情報を指定します。
- タイプ(Type): SSH, HTTP, HTTPS などの用途
- プロトコル(Protocol): TCP, UDP など
- ポート範囲(Port Range): 通信に使用するポート番号
- 送信元/宛先(Source/Destination): 許可するIPアドレスやセキュリティグループ
5. セキュリティグループの設定例
たとえば、次のような設定が一般的です。
- SSH(TCP 22): 自分の固定IPのみ許可
- HTTP(TCP 80): 0.0.0.0/0(すべてのIPアドレス)からのアクセスを許可
- HTTPS(TCP 443): 0.0.0.0/0 からのアクセスを許可
これにより、Webサイトは公開されつつも、SSH接続は安全なIPのみに制限できます。
6. セキュリティグループとネットワークACLの違い
AWSにはネットワークACL(アクセスコントロールリスト)というもう1つの通信制御機能がありますが、セキュリティグループとは以下の点で異なります。
- セキュリティグループ: インスタンス単位で設定 / ステートフル(戻りの通信は自動で許可)
- ネットワークACL: サブネット単位で設定 / ステートレス(戻りの通信も明示的に許可が必要)
初心者はまずセキュリティグループの理解を優先するのがオススメです。
7. セキュリティグループのベストプラクティス
セキュリティグループを設定する際は、以下のようなベストプラクティスを意識しましょう。
- 必要最小限のポートだけを開放する
- 0.0.0.0/0(全世界)へのSSH許可は避ける
- 説明欄(Description)に用途を記載しておく
- ルールが多くなったら不要なものを整理する
- 複数のインスタンスで共通ルールがあれば、セキュリティグループを再利用する
8. セキュリティグループに関するよくある質問
Q. セキュリティグループを後から変更しても反映されますか?
A. はい、リアルタイムで反映されます。EC2を再起動する必要はありません。
Q. セキュリティグループは複数のインスタンスで共有できますか?
A. はい、同じセキュリティグループを複数のインスタンスに割り当てることができます。
Q. セキュリティグループのログは確認できますか?
A. セキュリティグループ自体にログ機能はありません。ログを取りたい場合はVPC Flow Logsを活用しましょう。
9. まとめ
今回の記事では、AWS EC2のセキュリティグループについて、初心者の方にも理解しやすいように、基礎から実践的な内容までを丁寧に解説しました。セキュリティグループは、EC2インスタンスを守る仮想ファイアウォールとしての役割を持ち、通信を制御する重要な機能です。
セキュリティグループにはインバウンドルール(受信)とアウトバウンドルール(送信)があり、AWSでは「許可する通信だけを明示的に設定」することが基本となります。特にインバウンドルールは、サーバーへの外部アクセスの安全性に直結するため、非常に重要です。
例えば、Webサーバーを構築するなら、HTTP(ポート80)やHTTPS(ポート443)を開放し、SSH(ポート22)は信頼できるIPアドレスからのみアクセスを許可することで、セキュリティを高めることができます。
また、セキュリティグループはEC2インスタンスだけでなく、RDS(データベース)やELB(ロードバランサー)などにも利用できるため、AWS全体のセキュリティ設計に直結する基礎知識といえます。
以下に、よくあるセキュリティグループ設定例を文章で再確認してみましょう。
- SSH (TCP 22): 管理者がターミナルからアクセスするために使用。信頼できる固定IPアドレス(例: 203.0.113.1/32)からのみ許可する。
- HTTP (TCP 80): Webサーバーでサイトを公開するために使用。全世界からアクセスを受け付ける場合は「0.0.0.0/0」を指定。
- HTTPS (TCP 443): SSL化された安全な通信を行うWebサイト用。HTTPと同様、世界中からアクセスを受け付けるには「0.0.0.0/0」。
ルールの編集はAWSマネジメントコンソールからリアルタイムに行うことができ、反映も即時です。設定ミスによる接続トラブルを避けるためにも、説明欄に用途や変更理由を記載するなど、わかりやすい運用が重要です。
最後にもう一度確認しましょう。セキュリティグループは、
- 通信の「許可のみ」を設定する(拒否ルールはない)
- インスタンス単位で適用される
- ステートフル(応答の通信は自動的に許可)
- 複数インスタンスで共通のグループが使える
- 設定変更は即時に反映される
生徒
「セキュリティグループの使い方がよくわかりました!AWS EC2では必須なんですね。」
先生
「そうですね。特にインバウンドルールはアクセス制御の要になりますから、意識して設定しましょう。」
生徒
「SSHを0.0.0.0/0にしちゃうと危険だから、自分のIPだけに制限するんですね。」
先生
「その通り。アクセス元を制限するだけで、セキュリティはぐっと向上します。」
生徒
「ネットワークACLとの違いも整理できました。セキュリティグループはステートフル、ACLはステートレスですね!」
先生
「よく覚えていましたね。これからVPCやRDSの構成をするときにも、今日の知識が役立ちますよ。」