▪️目的

AWSでEC2などのリソースを構築していると、「Security Group(セキュリティグループ)」という設定が登場します。

Security Groupは、簡単にいうと、

AWSのリソースに対する通信を許可・制御するための仮想ファイアウォール

です。

例えば、

  • WebサーバーへのHTTPS通信だけ許可する
  • SSH接続を特定のIPアドレスからだけ許可する
  • データベースへの通信をアプリケーションサーバーからだけ許可する

といった通信制御を行うことができます。

この記事では、Security Groupとは何なのか、Inbound・Outboundとは何なのか、Security Groupがどのように通信を制御しているのかを、AWS初心者向けに解説します。


▪️Security Groupとは?

Security Groupとは、EC2などのAWSリソースに対して設定できる仮想ファイアウォールです。

例えばEC2に、

Security Group
       │
       ├─ HTTP  : 80  許可
       ├─ HTTPS : 443 許可
       └─ SSH   : 22  許可

のようなルールを設定できます。

このルールによって、

「どの通信を許可するのか」

を制御します。

例えばWebサーバーとして利用するEC2でHTTPS通信を受け付けたい場合、

Protocol : TCP
Port     : 443
Source   : 0.0.0.0/0

のようなInboundルールを設定します。

これによって、インターネット上のクライアントからEC2へのHTTPS通信を許可できます。


▪️ファイアウォールとは?

Security Groupを理解するために、まずファイアウォールについて簡単に確認しておきましょう。

ファイアウォールとは、ネットワーク通信を監視し、

許可する通信と拒否する通信を判断する仕組み

です。

例えば、

インターネット
      │
      │ HTTPS
      ↓
  ファイアウォール
      │
      ↓
    サーバー

という構成があった場合、

HTTPS → 許可
SSH   → 拒否

のように通信を制御できます。

AWSでは、このような役割をSecurity Groupが担います。


▪️InboundとOutbound

Security Groupを理解するうえで重要なのが、

  • Inbound
  • Outbound

の2つです。

♦︎Inbound

Inboundは、リソースの外部から内部へ入ってくる通信です。

例えば、

Internet
   ↓
EC2

という通信であれば、EC2から見てInbound通信になります。

Webサーバーの場合、

Internet
   ↓
TCP 443
   ↓
EC2

というHTTPS通信を許可するルールを設定できます。


♦︎Outbound

Outboundは、リソースから外部へ出ていく通信です。

例えば、

EC2
 ↓
Internet

という通信です。

EC2から外部APIへHTTPS通信を行う場合などが該当します。

つまり、

Inbound
外 → EC2

Outbound
EC2 → 外

と考えると分かりやすいでしょう。


▪️Security Groupのルール

Security Groupでは、通信を許可するためのルールを設定します。

例えば、

Type       Protocol   Port   Source
HTTPS      TCP        443    0.0.0.0/0

とした場合、

どこからでもHTTPS(TCP 443)でEC2へアクセスすることを許可する

という意味になります。

一方、

Type       Protocol   Port   Source
SSH        TCP        22     203.0.113.10/32

とした場合、

203.0.113.10というIPアドレスからのSSH接続だけを許可する

という意味になります。


▪️ポート番号とは?

Security Groupでは、ポート番号を指定して通信を制御することができます。

代表的なポートには以下のようなものがあります。

サービスプロトコルポート
HTTPTCP80
HTTPSTCP443
SSHTCP22
DNSUDP/TCP53
RDPTCP3389

例えば、

TCP 443

を許可すると、HTTPS通信を受け付けるためのルールを作れます。

ただし、ポート番号を許可しただけで、そのサービスが必ず動作するわけではありません。

例えば、

Security Group
TCP 443 → 許可

でも、EC2上でHTTPSを待ち受けるアプリケーションが動作していなければ通信は成立しません。


▪️Security Groupはどのように通信を判断する?

ここまで学んできたネットワーク構成と合わせて考えてみましょう。

例えば、

Internet
   ↓
Internet Gateway
   ↓
Public Subnet
   ↓
EC2

という構成があるとします。

EC2にはSecurity Groupが設定されています。

EC2
 │
 └─ Security Group
      └─ TCP 443 → 許可

ユーザーがEC2へHTTPSアクセスすると、

Internet
   ↓
Internet Gateway
   ↓
EC2
   ↓
Security Group
   ↓
TCP 443?

というイメージで通信が制御されます。

Security Groupのルールに一致していれば、通信が許可されます。

一致する許可ルールがなければ、通信は許可されません。


▪️Security Groupは「どこからの通信か」も判断する

Security Groupでは、ポート番号だけでなく通信元も指定できます。

例えば、

TCP 443
Source: 0.0.0.0/0

なら、IPv4アドレスからのHTTPS通信を広く許可します。

一方、

TCP 443
Source: 203.0.113.10/32

なら、特定のIPアドレスからのHTTPS通信だけを許可します。

このように、

どのプロトコル?
どのポート?
どこから?

という条件で通信を制御できます。


▪️Security Groupの大きな特徴

Security Groupには、いくつか重要な特徴があります。

1. デフォルトでInboundは許可されない

Security Groupを新しく作成した場合、基本的にInboundルールは許可されていません。

そのため、

Internet
   ↓
EC2

という通信を受け付けたい場合は、必要なInboundルールを追加する必要があります。

例えばWebサーバーなら、

TCP 443
Source: 0.0.0.0/0

などを設定します。


2. Statefulな通信制御

Security Groupはステートフルです。

これは非常に重要な特徴です。

例えば、EC2から外部のWebサーバーへHTTPS通信を開始したとします。

EC2
 ↓
HTTPS
 ↓
Internet

この通信に対するレスポンスが、

Internet
 ↓
HTTPS Response
 ↓
EC2

と戻ってきた場合、戻りの通信について明示的なInboundルールを追加しなくても、Security Groupは通信の状態を認識して戻りの通信を許可します。

つまり、

Security Groupでは、通信の状態を追跡して戻りの通信を許可する

という特徴があります。


▪️Security Groupは許可ルールのみ

Security Groupでは、基本的に許可ルールを設定します。

例えば、

TCP 443 → 許可

というルールは設定できますが、

203.0.113.10 → 拒否

のような明示的なDenyルールをSecurity Groupに設定することはできません。

許可ルールに一致しない通信は、基本的に許可されません。

そのため、

許可ルールに一致
    ↓
通信を許可

一致しない
    ↓
通信を許可しない

という考え方になります。


▪️Security Groupは複数のEC2で利用できる

Security Groupは、複数のEC2などに関連付けて利用できます。

例えば、

Web Server
   │
   └─ Web-SG

Application Server
   │
   └─ App-SG

Database
   │
   └─ DB-SG

のように、役割ごとにSecurity Groupを分けることができます。


▪️Security Groupを使ったWebシステムの構成

例えば、以下のようなWebシステムを考えてみましょう。

Internet
    │
    ↓
   ALB
    │
    ↓
Application Server
    │
    ↓
   RDS

この場合、それぞれの通信をSecurity Groupで制御できます。

例えば、

ALB-SG
    ↓
TCP 443
Internetから許可
App-SG
    ↓
TCP 8080
ALB-SGから許可
DB-SG
    ↓
TCP 3306
App-SGから許可

という構成です。

イメージすると、

Internet
   │
   │ HTTPS 443
   ↓
  ALB
   │
   │ TCP 8080
   ↓
  App
   │
   │ TCP 3306
   ↓
  RDS

となります。

このようにSecurity Groupを利用することで、

必要な通信だけを許可する

という構成を作ることができます。


▪️Security GroupはIPアドレスだけでなくSecurity Groupを指定できる

AWSのSecurity Groupには、もう一つ便利な特徴があります。

通信元として、別のSecurity Groupを指定することができます。

例えば、

App-SG

が付いているEC2から、

DB-SG

が付いているRDSへ通信させたいとします。

この場合、DB側のInboundルールで、

TCP 3306
Source: App-SG

のように設定できます。

つまり、

App-SGが付いているリソースからのMySQL通信だけを許可する

という考え方ができます。

これによって、IPアドレスを個別に指定するよりも、構成を柔軟に管理できます。


▪️Security GroupとNACLの違い

AWSのネットワークセキュリティでは、Security Groupだけでなく**Network ACL(NACL)**も登場します。

両者は似ていますが、役割が異なります。

項目Security GroupNetwork ACL
主な対象ENIなどのリソースSubnet
Stateful○×
Allow○○
Deny×○
ルールの考え方許可する通信を設定許可・拒否をルール化

簡単に考えると、

Security Group
→ リソース単位の通信制御

NACL
→ Subnet単位の通信制御

です。

NACLについては、今後AWSのネットワークをさらに学ぶときに詳しく解説します。


▪️Security Groupを設定するときの考え方

Security Groupを設定するときは、

必要な通信だけを許可する

という考え方が重要です。

例えば、

SSH
TCP 22
Source: 0.0.0.0/0

とすると、インターネット上のどこからでもSSH接続を試行できる状態になります。

必要がなければ、より限定した送信元を設定します。

例えば、

TCP 22
Source: 自分のグローバルIP/32

などです。

また、Webサーバーの場合は、

TCP 443
Source: 0.0.0.0/0

のように、インターネットからのHTTPSアクセスを許可することがあります。

このように、サービスの用途に応じて必要な通信だけを開けることが重要です。


▪️通信できないときはSecurity Groupを確認する

AWSでEC2などに接続できない場合、Security Groupは確認すべき重要なポイントの一つです。

例えば、

ブラウザ
   ↓
EC2

へHTTPS接続できない場合、

① Route Table
② Internet Gateway
③ Public IP
④ Security Group
⑤ Network ACL
⑥ EC2上のアプリケーション

などを確認します。

Security Groupだけを確認して終わりではなく、通信経路全体を見ることが重要です。

これはAWSのトラブルシューティングでも非常に大切な考え方です。


▪️まとめ

今回はSecurity Groupについて解説しました。

Security Groupは、

AWSのリソースに対する通信を制御する仮想ファイアウォール

です。

通信を、

Inbound
外 → リソース

Outbound
リソース → 外

という方向から考え、必要な通信を許可します。

例えばWebサーバーなら、

TCP 443

を許可することでHTTPS通信を受け付けられます。

また、Security Groupには、

  • Statefulである
  • 基本的に許可ルールを設定する
  • 明示的なDenyルールは設定できない
  • 複数のリソースに関連付けられる
  • 通信元として別のSecurity Groupを指定できる

といった特徴があります。

これまで学んできたAWSネットワークと合わせると、

VPC
 ↓
Subnet
 ↓
Route Table
 ↓
Internet Gateway / NAT Gateway
 ↓
Security Group
 ↓
EC2などのリソース

という形で、それぞれの役割がつながってきます。

AWSのネットワークでは、

「どこを通るのか」

をRoute Tableなどで決め、

「その通信を許可するのか」

をSecurity Groupなどで制御します。

この2つを分けて考えることが、AWSネットワークを理解するうえで重要です。

次回は、Security Groupとセットで覚えておきたい**Network ACL(NACL)**について解説します。

次の記事では「ネットワークACL」について解説します。
*「ネットワークACL」の記事はこちら
→「https://lovelabengineer.com/2026/10/08/awsのネットワークacl(nacl)とは?サブネット単位で通/」

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

Latest Comments

表示できるコメントはありません。