はじめに
本章の目的
この章では、本記事の狙いと読む際のポイントをやさしく説明します。AWSのセキュリティグループを初めて扱う方でも、全体像をつかめるように構成しています。
なぜセキュリティグループが重要か
セキュリティグループは、クラウド上のサーバーに対する『出入り口のルール』です。家の玄関の鍵のように、どの通信を許可するかを決めます。正しく設定すれば不要な接続を防げますし、誤ると外部からのアクセスを受けやすくなります。
対象読者
- これからAWSを使う方
- 基本的なネットワークの仕組みを学びたい方
- 運用でセキュリティを見直したい方
本記事で学べること(全体構成)
- セキュリティグループの概要
- 実際の設定方法
- ルールの要素と意味
- 活用例と運用のポイント
- 関連するベストプラクティス
読み方と注意点
例は分かりやすくしていますが、そのまま本番環境で適用せず、まずはテスト環境で動作を確認してください。続きを順に読むと理解が深まります。
AWS セキュリティグループの概要
セキュリティグループとは
AWSのセキュリティグループは、VPC内のリソースに適用する“仮想ファイアウォール”です。EC2やデータベースなどに設定して、受け取る通信(インバウンド)と送る通信(アウトバウンド)を制御します。例えば、WebサーバーはHTTPだけ許可し、それ以外は遮断できます。
仕組みのポイント
- ステートフル:一度許可した通信の応答は自動で戻ります。つまり、アウトバウンドで接続した先からの返答を別途許可する必要がありません。
- アタッチ方式:インスタンスのネットワークインターフェースに紐づけます。複数のセキュリティグループを同時に適用できます。
デフォルト動作
新しいセキュリティグループはインバウンドを全て拒否、アウトバウンドは全て許可する設定が多いです。用途に合わせてルールを追加していきます。
簡単な具体例
- Webサーバー:インバウンドでTCP 80(HTTP)を0.0.0.0/0に許可、管理用のSSHは自宅や会社の固定IPからのみTCP 22を許可します。
- データベース:外部から直接アクセスさせず、アプリケーションサーバーからの接続のみ許可します。
利点
細かく通信を制御できるため、不必要なアクセスを減らし攻撃面を狭められます。設定はGUIとコード(IaC)どちらからも行えます。
設定方法
手順(コンソール)
- AWS マネジメントコンソールにログインし、EC2 ダッシュボードを開きます。
- 左メニューで「セキュリティグループ」を選び、「セキュリティグループの作成」をクリックします。
- 名前と説明を入力し、所属する VPC を選びます(例: my-web-sg)。
- インバウンドとアウトバウンドのルールを追加します。種類(例: SSH、HTTP)、プロトコル、ポートレンジ、送信元/送信先(IP または別のセキュリティグループ)を指定します。
- 作成を押すと、設定は即時に適用されます。
具体例
- SSH: TCP 22、送信元 203.0.113.5/32(特定の管理者のみ許可)
- HTTP: TCP 80、送信元 0.0.0.0/0(全世界からのアクセスを許可)
- DB: TCP 3306、送信元をアプリ用セキュリティグループに指定(アプリからのみ接続可)
CLI での設定例
aws ec2 authorize-security-group-ingress –group-id sg-01234567 –protocol tcp –port 22 –cidr 203.0.113.5/32
注意点
- インスタンスではなく、ネットワークインターフェイスに紐づきます。
- インバウンドは明示的に許可しない限り拒否されます。
- ルール変更は即時反映されますので、運用時はテストを行ってください。
ルールの構成要素
方向(インバウンド/アウトバウンド)
ルールは通信の向きを指定します。インバウンドは外からインスタンスへ入るトラフィック、アウトバウンドはインスタンスから外へ出るトラフィックです。例:SSHは通常インバウンドでTCP 22を許可します。
プロトコル
TCP、UDP、ICMPなどを指定します。TCPはWebやSSH、UDPはDNSや一部のアプリ、ICMPはpingなどに使います。プロトコルを正しく選ぶと不要な通信を防げます。
ポート番号
特定のポート(例:80、443、22)やポート範囲(例:1024-65535)を指定します。サービス単位で最小限のポートだけ開けると安全です。ポート範囲は効率的ですが幅を広げすぎないでください。
通信相手(ピア)の指定
相手は単一IP(例:203.0.113.5/32)、CIDRブロック(例:203.0.113.0/24)、プレフィックスリスト、または別のセキュリティグループIDで指定します。他のセキュリティグループを指定すると、VPC内のリソース間で簡潔にルールを管理できます。
補足(重要な性質)
セキュリティグループは「許可」ルールのみで、明示的な拒否はできません。さらにステートフルなので、許可した通信の応答は自動で戻ります。設定は最小権限を心がけ、必要な相手・ポートだけを許可してください。
セキュリティグループの活用法
基本的な活用例
- IP 制限でアクセスを絞る:社内からの接続だけ許可する場合は、社内ネットワークのIPレンジを指定します。例:開発用サーバーは会社の固定IPのみ許可する。
- ポートごとの制御:SSH(ポート22)やHTTP(80)/HTTPS(443)など、必要なポートだけ開けます。例:データベースは内部からの3306のみ許可する。
複数インスタンスでの一元管理
- 同じセキュリティ要件のサーバー群に同一のセキュリティグループを適用すると、設定変更を一箇所で反映できます。スケールアウト時も新しいインスタンスに同じグループを割り当てれば簡単です。
運用時の注意点とヒント
- 最小権限の原則で必要最小限のアクセスだけ許可してください。不要な全開放(0.0.0.0/0)は避けます。
- 変更は段階的に行い、接続確認を忘れずに。変更前に現在のルールをバックアップすると安全です。
- ログや監査を有効にし、不審なアクセスがないか定期的に確認しましょう。
よくある間違いと対処
- ポートを開けすぎる:不要なポートを閉じる。テストのまま放置しない。
- 誤ったCIDRの設定:範囲を確認して最小にする。
関連するベストプラクティス
はじめに
セキュリティグループを安全かつ管理しやすく保つための実践的なコツを紹介します。日常の運用で取り入れやすいものに絞っています。
名前付けルール
わかりやすい名前を付けます。例:「web-frontend-allow-80」や「db-internal-3306-only」。用途・環境(prod/stg/dev)・ポートを含めると後で見分けやすくなります。
最小権限の原則
不要なポートや広範囲のIPは開けないでください。必要な通信だけを許可します。例えば管理画面は特定のIPからのみアクセス許可にします。
ルールの定期的な見直し
使われなくなったルールは削除します。定期的にレビューして冗長な開放を減らすと事故を防げます。
ログと監視
ネットワークログ(フロー記録など)を有効にして、異常なアクセスを検出します。アラートを設定すると速やかに対応できます。
テンプレート化と自動化
同じ設定を手作業で繰り返さないよう、テンプレート(例: Terraformのモジュール)を使います。変更履歴が残り復元もしやすくなります。
テストとアクセスレビュー
新しいルールはまずステージングで動作確認します。定期的にアクセス権の見直しを行い、誰が何にアクセスできるかを把握してください。












