🏢 マンションのセキュリティで例えると超わかりやすい!
AWSには「二重のセキュリティ」があります
マンションを想像してください。入口には
オートロック
があり、
各部屋には
個別の鍵
がありますよね?
ネットワークACL
= マンション入口のオートロック(フロア全体を守る)
セキュリティグループ
= 各部屋のドアロック(部屋ごとに守る)
この2つを組み合わせることで、強固なセキュリティを実現します✨
🏠 マンションのセキュリティシステムで理解しよう!
インスタンス
データベース
関数
🔒 = セキュリティグループ(各部屋のドアロック)
サブネット全体への出入りをチェック
🔒 セキュリティグループ = 部屋のドアロック
各部屋(インスタンス)についている鍵です
• 部屋ごとに「誰を入れるか」を決められる
• 一度入った人は、出るときチェックなし(ステートフル)
• 「この人は入れる」という許可リストのみ
• 複数の部屋で同じ鍵を共有可能
💡 例:
Web開発者の鈴木さんは101号室に入れる
🚪 ネットワークACL = フロア入口のオートロック
フロア(サブネット)全体を守るゲートです
• フロア全体への出入りをチェック
• 入るときも出るときも毎回チェック(ステートレス)
• 「入れる」「入れない」の両方を設定可能
• ルールは番号順に評価される
💡 例:
営業時間外は全員フロアに入れない
EC2、RDS、Lambda など各リソースに直接アタッチ
インバウンドを許可すれば、その応答は自動で通る
明示的な「拒否」は設定できない。許可されていないものは自動的に拒否
全ルールを確認して、1つでも許可があれば通信OK
アウトバウンド:全許可
新規作成時のデフォルト設定
サブネット内のすべてのリソースに一括適用
インバウンドとアウトバウンド両方のルール設定が必要
特定のIPを明示的にブロックすることが可能
最初にマッチしたルールが適用され、残りは無視
カスタムNACL:全拒否
VPC作成時のデフォルトNACLは全通信許可
🔄 ステートフル vs ステートレス - 最重要ポイント!
🔒 セキュリティグループ(ステートフル)
インバウンドで許可 → 戻りは自動OK
一度許可した通信の「お返事」は自動的にOK!
アウトバウンドルールを別途設定する必要なし
🚪 ネットワークACL(ステートレス)
インバウンドもアウトバウンドも個別に設定
戻りの通信も別途許可が必要!
エフェメラルポート(1024-65535)の許可を忘れずに
📋 ルール評価の違い
🔒 セキュリティグループの評価
すべてのルールを確認して判断
全ルールを確認し、 1つでもマッチすれば許可
どれにもマッチしなければ拒否(暗黙の拒否)
🚪 ネットワークACLの評価
番号順に評価、最初のマッチで決定
番号の小さい順 に評価
最初にマッチしたルールで決定、残りは無視
📊 完全比較表
| 項目 | 🔒 セキュリティグループ | 🚪 ネットワークACL |
|---|---|---|
| 適用レベル | インスタンス(ENI)レベル | サブネットレベル |
| 状態 | ステートフル(戻り自動許可) | ステートレス(両方設定必要) |
| ルールタイプ | 許可のみ | 許可と拒否の両方 |
| ルール評価 | 全ルールを評価 | 番号順(小→大) |
| デフォルト(新規) | イン:全拒否 / アウト:全許可 |
デフォルトNACL:全許可
カスタムNACL:全拒否 |
| 関連付け | 複数インスタンスに同一SG可 | 1サブネットに1NACL |
| 主な用途 | 個別リソースの細かい制御 | サブネット全体の広範囲制御 |
| IPブロック | ❌ 不可(許可のみ) | ✅ 可能(拒否ルールあり) |
💼 どう使い分ける?実践ユースケース
Webサーバーの公開
ポート80, 443をインバウンド許可
特定のEC2にのみ適用
特定IPのブロック
拒否ルールで特定IPをブロック
番号を小さくして優先適用
データベースの保護
WebサーバーのSGをソースに指定
SG同士の参照で柔軟に制御
サブネット全体の制御
インターネットからの直接アクセスを拒否
VPC内CIDRのみ許可
管理者SSHアクセス
ポート22を特定IPのみ許可
必要なインスタンスにのみ適用
多層防御(Defense in Depth)
NACLで広範囲のフィルタリング
SGで詳細なアクセス制御
ほとんどのケースでセキュリティグループだけで十分。ステートフルで管理が楽!
2. NACLはサブネット全体に影響:
設定ミスするとサブネット内の全リソースに影響。慎重に設定しよう。
3. NACLのエフェメラルポートを忘れずに:
戻りトラフィック用にポート1024-65535のアウトバウンドを許可しないと通信できない。
4. 特定IPブロックはNACLで:
セキュリティグループでは「拒否」ができないので、明示的なブロックはNACLで。
5. SG同士の参照を活用:
「WebサーバーのSGからDBへのアクセスを許可」のように、IP指定より柔軟で安全。
6. デフォルトNACLは全許可:
VPC作成時のデフォルトNACLはすべて許可。カスタムNACLは全拒否がデフォルト。
✨ ベストプラクティス
最小権限の原則
必要なポート・IPのみ許可
デフォルトは全拒否で、必要なものだけ開ける
定期的に不要なルールを見直す
わかりやすい命名
SG: web-server-sg, db-sg など
用途がすぐわかる名前をつける
説明文も必ず記載する
ログの活用
VPCフローログを有効化
通信の許可/拒否を記録
トラブルシューティングに活用
多層防御
NACLとSGの両方を活用
NACLで大きくフィルタ
SGで細かく制御する
🎓 まとめ
🏢 マンションのセキュリティ = AWSのセキュリティ
ネットワークACLとセキュリティグループは
二重の防御壁
として機能します
各部屋のドアロック
ステートフル
許可のみ設定可能
基本はこれ!
フロア入口のオートロック
ステートレス
許可と拒否が設定可能
広範囲制御に
🎯
迷ったら:
まず
セキュリティグループ
で制御
特定IPブロックやサブネット全体制御が必要なら
ネットワークACL
を追加!🎉