変更要約: 生成 AI セキュリティ節 s4 に図 aws-genai-security(OWASP LLM リスク→AWS 緩和策)を追加。クローン基底章は SCS-C02 の図を継承済みで、図欠落は本 s4 のみだったため補完。
3.1ネットワーク境界の保護
VPC のセキュリティ——セキュリティグループ/NACL、サブネット分離、NAT/IGW、VPC エンドポイント(Gateway/Interface)、PrivateLink——を理解します。多層防御でネットワークを守ります。
インフラ防御の基本はネットワーク境界です。多層(SG/NACL/サブネット)で防御し、不要な公開を避けます。
3.1.1ネットワークの多層防御
- セキュリティグループ:インスタンス単位・ステートフル・許可のみ(拒否ルールなし)。
- NACL:サブネット単位・ステートレス・許可/拒否。明示的な拒否ができる。
- サブネット分離/NAT:公開はパブリック、内部はプライベート。外向きのみは NAT ゲートウェイ。
- VPC エンドポイント:AWS サービスへインターネットを経由せず接続(S3/DDB=ゲートウェイ、他=インターフェイス/PrivateLink)。
「インスタンス単位・ステートフル・許可のみ=セキュリティグループ」「サブネット単位・ステートレス・拒否可=NACL」「外向きのみ=NAT ゲートウェイ」「AWS サービスへ私的接続=VPC エンドポイント(S3/DDB=ゲートウェイ型)」 は SCS-C02 で頻出です。明示的に拒否したい IP は NACL、通常の許可は SG で行います。
セキュリティグループは戻りトラフィックを自動許可(ステートフル)。NACL はステートレスなので、戻り用のエフェメラルポートも明示的に許可する必要があります。
SCS-C02 のネットワーク防御は「SG と NACL の違いを正確に使い分け、多層で攻撃面を縮小する」ことを問います。セキュリティグループ(SG)はインスタンス(ENI)単位のステートフルな仮想ファイアウォールで、許可ルールのみ(暗黙の拒否、明示的拒否は不可)。SG のソースに別の SG を指定でき(例: ALB の SG からのみ Web 層を許可)、ティア間の通信をきれいに表現できます。NACL はサブネット単位のステートレスな制御で、許可と拒否を番号順に評価——特定 IP のブロックや、戻り通信のためのエフェメラルポート許可が必要です。設計はサブネットをパブリック(IGW 経由で公開)/プライベート(外向きは NAT、内部のみ)に分離し、データ層はインターネット到達不可のプライベートサブネットに置きます。AWS サービスへの接続は VPC エンドポイントでインターネットを経由させず、ゲートウェイ型(S3/DynamoDB・無料・ルートテーブル)とインターフェイス型(ENI・PrivateLink・多くのサービス)を使い分け、エンドポイントポリシーでアクセスを絞ります。さらに VPC ピアリング/Transit Gateway で接続し、フローログで通信を可視化。設計の要は、「ステートフル・許可のみ・インスタンス単位=SG/ステートレス・拒否可・サブネット単位=NACL」を取り違えず、プライベート接続と最小公開で多層防御することです。
| 観点 | セキュリティグループ | NACL |
|---|---|---|
| 適用範囲 | インスタンス(ENI)単位 | サブネット単位 |
| 状態 | ステートフル(戻り自動許可) | ステートレス(戻りも明示) |
| ルール | 許可のみ | 許可/拒否(番号順) |
| 代表用途 | ティア間許可・SG をソースに指定 | 特定 IP の明示的拒否 |
シナリオ:3 層(Web/App/DB)構成で、Web は ALB からのみ、App は Web からのみ、DB は App からのみ通信させ、特定の攻撃元 IP レンジは完全に遮断したい。→ 各層の SG のソースに前段の SG を指定してティア間を最小許可(DB の SG は App の SG からの DB ポートのみ)。DB はインターネット到達不可のプライベートサブネットへ。攻撃元 IP レンジはサブネットの NACL で明示的に拒否(SG では拒否できないため)。AWS サービスへは VPC エンドポイントで接続します。
FAQ:特定の IP をブロックしたいとき SG か NACL か? NACL です。SG は許可ルールのみで明示的な拒否ができません(拒否=許可しないこと)。特定の悪意ある IP/レンジを明示的にブロックしたいなら、サブネット単位の NACL の Deny ルールを使います。通常のティア間の許可は SG(SG をソースに指定)で行い、両者を組み合わせて多層防御します。
ひっかけ:SG で「特定 IP を拒否する」ルールを作ろうとするのは誤り——SG は許可のみで拒否ルールは作れません。明示的拒否は NACL。また NACL はステートレスなので、インバウンドを許可しても戻り(アウトバウンドのエフェメラルポート)を別途許可しないと通信が成立しません(SG はステートフルで自動許可)。
3.1.2この節のまとめ
- 多層防御=SG(インスタンス/許可のみ)+NACL(サブネット/拒否可)
- 私的接続=VPC エンドポイント/PrivateLink/外向き=NAT
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 特定の悪意ある IP レンジからの通信をサブネットレベルで明示的に拒否したい。何を使いますか?
Q2. EC2 から S3 へ、インターネットを経由せずプライベートに接続したい。何を使いますか?
Q3. セキュリティグループの性質として正しいものはどれですか?

