AWSセキュリティグループの“HTTPプロトコル”は実体何?
TCP指定と何が違うのか調べてみた
はじめに
AWSでセキュリティグループを設定する際、「HTTP」や「HTTPS」といったプロトコル名を指定できます。ネットワークに慣れている方なら「これってTCP:80とか443ってことでは?」と気づくでしょう。
今回は、ふと「HTTPプロトコルを指定する意味って何?TCPでよくない?」と思ったので、動作を検証しつつ整理してみました。
セキュリティグループで選べる「プロトコル」
セキュリティグループのルール作成画面で表示されるプロトコルの一例:
- HTTP
- HTTPS
- SSH
- RDP
- カスタムTCP / UDP / ICMP
たとえば「HTTP」を選ぶと、以下の設定が自動で適用されます:
項目 | 値 |
---|---|
プロトコル | TCP |
ポート範囲 | 80 |
実体は単なるショートカット
実際には、HTTPというラベルは TCP:80 を示すテンプレート にすぎません。AWS CLIなどで確認しても、内部では以下のように扱われています。
{
"IpProtocol": "tcp",
"FromPort": 80,
"ToPort": 80,
"IpRanges": [{ "CidrIp": "0.0.0.0/0" }]
}
TCP指定との違いは?
マネジメントコンソールで「HTTP」を選んだときと「カスタムTCP」でポート80を入力した場合の比較です:
項目 | HTTP指定 | カスタムTCP指定(ポート80) |
---|---|---|
プロトコル | TCP | TCP |
ポート範囲 | 80 | 80 |
挙動 | 同じ | 同じ |
UI表示 | HTTP | カスタムTCP |
なぜ“HTTP”という選択肢があるのか?
- 初心者でも目的のポートを選びやすくする
- TerraformやCloudFormationで読みやすくなる
- 意図が明示でき、設定の共有・保守に優れる
まとめ
セキュリティグループの「HTTP」や「HTTPS」といったプロトコル指定は、実際には単なるTCPポート番号のテンプレートにすぎません。
挙動に差はなく、TCP:80 と明示するのと完全に同じです。
おまけ:個人的な考察
HTTPってアプリケーション層(L7)のプロトコルですよね。セキュリティグループはL4制御。なのに“HTTP”っていう選択肢が出てくるのって、よく考えると面白い仕様です(笑)
UIの親切設計と実装のシンプルさが、絶妙にバランスしてる好例かもしれません。
UIの親切設計と実装のシンプルさが、絶妙にバランスしてる好例かもしれません。