awsで理解するセキュリティグループとは基礎と特徴の徹底解説

目次

はじめに

本記事の目的

本記事は、AWSの「セキュリティグループ」について基本から実践までやさしく解説します。セキュリティグループを仮想ファイアウォールとして捉え、その役割や設定方法、運用時のポイントをわかりやすく伝えます。

誰に向けた記事か

  • これからAWSを学ぶ方
  • サーバー運用やインフラ担当の方
  • 実際のルール設定に不安がある開発者
    専門的な前提知識は多く必要ありません。EC2やVPCの基本が分かれば読み進めやすいです。

本記事の構成(読み方の目安)

各章で1つのテーマを丁寧に扱います。第2章で概要を把握し、第3〜5章で具体的な要素や設定例を確認します。第6章では似た機能との違いを説明し、第7章で日常運用のコツを紹介します。料金やまとめも最後にあります。必要な章だけ読んでも理解できます。

注意点

実際の運用では、まずテスト環境で設定を確認してください。誤ったルールはサービス停止やセキュリティリスクにつながります。

セキュリティグループとは何か

概要

セキュリティグループは、AWSのVPC内で動くリソース(例:EC2、RDS)に適用する仮想的な防護ルールの集まりです。ネットワークの入出力を絞り込み、「誰がアクセスできるか」「どこへ通信できるか」を決めます。門番のように不正な通信を防ぎます。

なぜ必要か

外部や別のサーバからの不要な接続を防ぐために使います。例えば、管理用のSSHは特定のIPからだけ許可し、データベースはアプリサーバからのみ接続可能にできます。これにより攻撃面を小さくします。

簡単な例

  • Webサーバ:HTTP(80)とHTTPS(443)を世界に許可、SSH(22)は自分のIPだけ許可
  • DBサーバ:ポート3306をアプリサーバのセキュリティグループだけ許可

主なポイント

  • ルールは「許可」のみで構成します。明示的な拒否ルールは使いません。
  • ステートフルです。ある方向を許可すると、その対向の応答は自動で許可されます。
  • 複数のインスタンスに適用できます。IDで管理し、柔軟に変更できます。

この章ではまず役割と使い方のイメージを掴んでください。次章で内部の構成要素を丁寧に説明します。

セキュリティグループの主な構成要素

AWSリソース

セキュリティグループはEC2インスタンスやRDS、ロードバランサーなどVPC内のリソースに割り当てます。1つのリソースに対して最大5つまでセキュリティグループを適用できます。複数のグループを付ければ、役割ごとにルールを分けて管理できます。

グループ本体

セキュリティグループは「名前」「説明」「ルールの集合」として定義します。各グループは特定のVPCに属します。名前や説明を分かりやすく付けると、あとで管理しやすくなります。

ルール

1グループあたり最大60ルールまで設定できます。ルールは「インバウンド(受信)」と「アウトバウンド(送信)」の2種類です。各ルールで次を指定します:
– プロトコル(例:TCP/UDP/ICMP)
– ポート番号(例:HTTPは80、SSHは22)
– 通信元または通信先(IPアドレスやCIDR、ほかのセキュリティグループ)

例えば、SSHを管理者の固定IPだけ許可する、Webは全世界から許可する、データベースはアプリサーバのセキュリティグループからのみ許可する、といった設定が可能です。ルールは明確にし、不要な開放を避けると安全です。

セキュリティグループの動作と特徴

ステートフル(Stateful)な動作

セキュリティグループは状態を覚えます。たとえば、サーバーに対してポート80の受信(インバウンド)を許可すると、その通信に対する応答(アウトバウンド)は自動で許可されます。応答を個別に設定する必要がないため、設定がシンプルになります。

デフォルトで拒否する設計

明示的に許可したトラフィックだけ通します。何も設定しなければ全て遮断されるので、必要最小限の通信だけ許可する方針を自然に実現できます。たとえば管理用のSSHだけ開けて、他は閉じるといった運用が容易です。

IPアドレスの変動に強い

セキュリティグループはインスタンスやリソースに紐づきます。IPアドレスが変わってもルールを変える必要がありません。スケールアウトでサーバーを増やしたり、再起動でIPが変わっても同じセキュリティポリシーを維持できます。

複数リソースへの割り当てと一元管理

同じセキュリティグループを複数のサーバーに割り当てられます。ルールを一度変更すれば、割り当て先すべてに反映されます。大規模な環境でも設定の再利用と管理が楽になります。

具体的なルール設定例

以下では、よく使うルールを具体例で示します。各例はインバウンド(着信)ルールが中心です。

  • インターネット全体からWebサーバーへHTTPを許可
  • 目的: 公開Webサイトの閲覧を可能にします。
  • ルール: インバウンド TCP ポート80、送信元 0.0.0.0/0
  • 補足: HTTPS(ポート443)も必要なら同様に設定します。不要なポートは閉じます。

  • 社内ネットワークからのみSSHで管理アクセスを許可

  • 目的: 管理者だけが安全にサーバーに接続できます。
  • ルール: インバウンド TCP ポート22、送信元 社内IPのCIDR(例: 10.0.0.0/24)
  • 補足: 公開SSHは避け、ポート変更や鍵認証も併用すると安全性が高まります。

  • 特定のアプリケーション間通信のみ許可(セキュリティグループ指定)

  • 目的: アプリ層で通信を限定して、不要なアクセスを防ぎます。
  • ルール: インバウンド TCP ポート(例: 3306 for MySQL)、送信元に別のセキュリティグループIDを指定
  • 補足: セキュリティグループ参照を使うと、IPを意識せずインスタンス単位で通信を制御できます。

運用のコツ: 最小権限を心がけ、不要なポートは開けません。テスト用に緩める場合は、作業後すぐに元に戻す習慣をつけてください。

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

概要

セキュリティグループ(SG)はインスタンス単位で使います。ネットワークACL(NACL)はサブネット単位で適用します。用途と挙動が違うので、両方を役割分担して使うと安全性が高まります。

ステートフルとステートレス

SGはステートフルです。つまり、インバウンドで許可した通信の応答は自動で許可されます。例:80番ポートで許可すると、その応答パケットは戻ってきます。NACLはステートレスです。入ってきた通信の応答も明示的に許可する必要があります。

方向と適用範囲

どちらもインバウンドとアウトバウンドのルールを持ちますが、SGは個々のインスタンスに細かく設定できます。NACLはサブネット全体に対して広く制限をかけます。

主な使い分け例

  • SG:Webサーバーへ特定ポート(例:80/443)だけ許可し、管理者のIPだけSSHを許可します。複数のSGを組み合わせて柔軟に設定します。
  • NACL:サブネット全体で不正なIPレンジをブロックしたり、外部からの大量接続を粗く制限したりします。

設定のポイント

SGは細かなアクセス制御に向きます。NACLは全体のガードレール役です。両方を組み合わせて使い、まずNACLで大まかに制限し、SGで個別に調整すると効果的です。

セキュリティグループのベストプラクティス

1. 最小権限の原則

必要な通信だけを許可します。例えばSSHは管理者の固定IPだけ(例:203.0.113.12/32)に限定し、0.0.0.0/0は避けます。アプリごとにポートを絞り、不要なポートは閉じます。

2. 役割ごとに分離する

Web、アプリ、DBなど役割ごとにセキュリティグループを分けます。例えば「app-web-prod」「app-db-prod」のように命名し、相互アクセスは最小限のルールで許可します。これにより変更の影響範囲を小さくできます。

3. ルールの整理とドキュメント化

各ルールに目的、作成者、作成日を残します。なぜそのポートを開けたのか、いつ見直すのかを明記すると運用が楽になります。変更履歴を残して定期的にレビューします。

4. 監査と自動化を組み合わせる

定期スキャンで全開放(0.0.0.0/0)や不要ルールを検出し、アラートを出す仕組みを持ちます。IaC(Infrastructure as Code)で設定を管理し、変更はコードレビューと自動テストを通します。

5. 一元管理と再利用性の意識

共通ルールはテンプレート化して共有セキュリティグループにまとめます。これにより設定の重複を減らし運用コストを下げます。

6. 運用時の注意点

変更時は影響範囲を確認し、ロールバック手順を用意します。本番変更は時間帯を工夫して影響を最小化し、テスト環境で検証してから適用します。

料金について

概要

セキュリティグループ自体の利用は無料です。ルールを作成してインスタンスやデータベースに適用しても、セキュリティグループそのものに対する直接の課金は発生しません。ただし、セキュリティグループを適用するEC2、RDS、ロードバランサーなどのサービス利用料は別途かかります。

料金のポイント

  • セキュリティグループ:無料(作成数やルール数で課金されない)
  • 対象サービス:EC2はインスタンスの稼働時間、RDSはDBの稼働時間、ELBは利用時間とデータ転送量で課金されます
  • データ転送:インターネットやリージョン間の転送は別途料金が発生する場合があります

具体例

  • EC2にSGを適用しても追加料金は発生しません。EC2の稼働による料金が課金されます。
  • ロードバランサー経由の通信ではELBの料金やデータ転送料金が発生するため、トラフィック量に注意が必要です。

コスト管理のヒント

  • 使っていないインスタンスや未使用のロードバランサーは停止・削除して無駄を減らす
  • データ転送を抑えるためにリソースを同一リージョン・同一アベイラビリティーゾーンに配置する
  • 請求アラートやコストレポートを設定し、予期せぬ増加を早めに検知する

注意点

セキュリティグループ自体は無料でも、誤った設定で不要なサービスが稼働するとコストが増えます。運用時は定期的に設定とリソース状況を確認してください。

まとめ

AWSのセキュリティグループは、VPC内のリソースごとに適用する「仮想ファイアウォール」です。インバウンド(受信)とアウトバウンド(送信)をルールで許可する仕組みで、許可していない通信は基本的に遮断されます。

状態を保持するため、受信を許可するとその応答トラフィックは自動で許可されます。この性質により、個別の通信ごとに応答ルールを追加する必要がありません。

ルールはポート・プロトコル・送信元(または送信先)で指定します。送信元に特定のIPや別のセキュリティグループを指定でき、たとえば「WebはTCP 80を全世界に開く」「管理用SSHは特定IPのみに限定する」といった運用が可能です。

利点は、柔軟で扱いやすくスケールしやすい点です。設計では最小権限の原則に従い、役割ごとにセキュリティグループを分け、タグで管理すると運用が楽になります。運用面では定期的な見直し、VPCフローログなどでの監査、ルール変更時のテストを習慣にしてください。

料金面では、セキュリティグループ自体に追加料金は発生しません。ただし、ログや監視など別サービスの利用には費用がかかる点にご注意ください。

正しく設計・運用すれば、セキュリティグループはAWS環境の重要な防御層になります。具体的な環境や要件があれば、例を交えて一緒に考えていけますのでご相談ください。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次