AWS Certified Solutions Architect - Associate (SAA-C03) #4 Domain 1-3 安全なアーキテクチャ — VPC セキュリティ
#3 KMS と暗号化 でデータそのものを保護したなら、今回は そのデータが行き交うネットワーク境界 を扱います。VPC セキュリティは SAA でほぼすべてのアーキテクチャ問題に敷かれる土台です。「private サブネットの DB にどうアクセスするか」「インターネットを経由せずに S3 に到達させよ」といった要件はすべてここで分かれます。
セキュリティグループ vs ネットワーク ACL #
VPC には 2 層のファイアウォールがあります。この 2 つの違いは試験にほぼ必ず出ます。
| 項目 | セキュリティグループ (Security Group) | ネットワーク ACL (NACL) |
|---|---|---|
| 動作単位 | インスタンス (ENI) レベル | サブネットレベル |
| 状態 | Stateful (応答を自動許可) | Stateless (応答にもルールが必要) |
| ルールの種類 | 許可 (Allow) のみ | 許可 + 拒否 (Deny) |
| ルール評価 | すべてのルールを総合 | 番号順に、最初に一致したものを適用 |
| デフォルト値 | インバウンド遮断、アウトバウンド許可 | デフォルト NACL はすべて許可 |
Stateful vs Stateless が核心 #
セキュリティグループは stateful です。インバウンドを許可すると、それに対する応答 (アウトバウンド) はルールなしでも自動的に許可されます。逆に NACL は stateless なので、入ってくるトラフィックを許可しても 出ていく応答のためのルールを別途 開ける必要があります。このとき応答はエフェメラルポート (ephemeral port、通常 1024~65535) で出ていくので、NACL でこのポート範囲のアウトバウンドを塞ぐと通信が切れます。
Deny が必要なら NACL #
セキュリティグループは 許可ルールしか 作れません。「特定の IP を一つ遮断せよ」という要件はセキュリティグループでは不可能で、NACL の Deny ルール で処理します。試験で「悪意のある IP の遮断」「特定帯域の拒否」が出たら NACL が答えです。
VPC Endpoint — インターネットを経由しないアクセス #
private サブネットのインスタンスが S3 のような AWS サービスにアクセスするとき、インターネットゲートウェイや NAT を経由するとトラフィックが AWS ネットワークを出て戻ってきます。VPC Endpoint は トラフィックを AWS 内部に留めたまま サービスに到達させます。2 種類あります。
| 種類 | 対象 | 動作 | コスト |
|---|---|---|---|
| Gateway Endpoint | S3, DynamoDB の 2 つだけ | ルートテーブルに経路を追加 | 無料 |
| Interface Endpoint | ほとんどの AWS サービス | サブネットに ENI (プライベート IP) を生成 | 時間あたり + データ料金 |
最もよく間違える箇所は Gateway Endpoint が S3 と DynamoDB 専用 だという点です。SQS・KMS・Systems Manager のような他のサービスにプライベートにアクセスするには Interface Endpoint を使う必要があります。Interface Endpoint は内部的に PrivateLink 技術を使います。
PrivateLink — 自社のサービスをプライベートに公開 #
PrivateLink は VPC ピアリングなしで、インターネットを経由せずに サービスを別の VPC に公開する方法です。構造はこうです。
- サービスプロバイダ (provider) はサービスを Network Load Balancer の後ろに置いて Endpoint Service として登録します。
- コンシューマ (consumer) は自分の VPC に Interface Endpoint を作ってそのサービスに接続します。
- 2 つの VPC の CIDR が重なってもよく、両方のネットワークが直接ルーティングされません。
「SaaS の形で自社のサービスを顧客 VPC に提供しつつ、ピアリングやパブリック公開なしで」という要件が出たら PrivateLink が正解です。VPC ピアリングが 2 つの VPC 全体をルーティングで接続する のとは違い、PrivateLink は 特定のサービス一つだけ を公開します。
VPC ピアリングとの区別 #
| 方法 | 接続範囲 | 特徴 |
|---|---|---|
| VPC ピアリング | VPC 全体 ↔ VPC 全体 | 1:1、非推移的、CIDR の重複不可 |
| PrivateLink | 特定のサービスのみ | CIDR が重なってもよい、片方向の公開 |
| Transit Gateway | 多数の VPC のハブ | 多くの VPC を中央から接続 |
VPC ピアリングは 推移しません。A-B、B-C がピアリングされていても A は C に直接到達できません。多数の VPC をつなぐ必要があれば Transit Gateway が答えです。
private インスタンスにアクセスする — 踏み台 vs Session Manager #
private サブネットのインスタンスに管理者が接続する 2 つの方式があります。
- 踏み台ホスト (Bastion / Jump box) — public サブネットにジャンプサーバーを置き、そこから private インスタンスへ SSH します。踏み台にインバウンド SSH (22) を開ける必要があるため攻撃対象領域が生まれます。
- Systems Manager Session Manager — 踏み台なしで、インバウンドポートをまったく開けずに IAM 権限でシェルに接続します。SSH キーの管理も不要で、接続記録が残ります。
試験で「インバウンドポートを開けずに 安全に private インスタンスへアクセス」という手がかりが出たら Session Manager が現代的な正解です。
VPC Flow Logs #
VPC Flow Logs は ENI を出入りする IP トラフィックのメタデータ (送信元/宛先 IP・ポート、プロトコル、許可/拒否の可否、バイト数) を CloudWatch Logs や S3 へ送ります。セキュリティ監査とトラフィック問題の追跡に使います。
重要な限界: Flow Logs は パケットの内容 (payload) は含みません。 「どんなデータが行き交ったか」ではなく「誰が誰とどのポートで通信し、許可/拒否されたか」だけを見ます。パケットの内容まで見る必要があれば Traffic Mirroring が必要です。
試験の出題パターン #
- 「特定の IP を遮断 せよ。」 → NACL の Deny ルール (セキュリティグループは Deny 不可)
- 「セキュリティグループは stateful か stateless か?」 → Stateful (応答を自動許可)。NACL は stateless
- 「private インスタンスが インターネットなしで S3 にアクセス。」 → Gateway Endpoint (無料)
- 「private インスタンスが SQS/KMS にプライベート にアクセス。」 → Interface Endpoint (PrivateLink)
- 「自社のサービスを 顧客 VPC にピアリングなしで 提供。」 → PrivateLink + NLB
- 「多数の VPC を中央から接続。」 → Transit Gateway
- 「インバウンドポートなしで private インスタンスに接続。」 → Session Manager
- 「ネットワークトラフィックの流れを 監査。」 → VPC Flow Logs
よく出会う落とし穴 #
1) セキュリティグループで Deny を作ろうとする #
セキュリティグループは許可ルールしかありません。遮断は NACL です。
2) NACL を stateful として扱う #
NACL は stateless なので応答トラフィックのエフェメラルポートを別途開ける必要があります。インバウンドだけ開けてアウトバウンドを塞ぐと通信が切れます。
3) Gateway Endpoint ですべてのサービスにアクセスしようとする #
Gateway Endpoint は S3 と DynamoDB 専用 です。それ以外は Interface Endpoint です。
4) VPC ピアリングが推移すると思う #
ピアリングは非推移的です。A-B-C があっても A は C に直接到達できません。
5) Flow Logs でパケットの内容を見る #
Flow Logs はメタデータだけを見ます。内容のキャプチャは Traffic Mirroring です。
まとめ #
この記事で押さえたこと:
- セキュリティグループ — インスタンスレベル、stateful、許可のみ。NACL — サブネットレベル、stateless、許可 + 拒否、順序評価
- 遮断 (Deny) が必要なら NACL。セキュリティグループでは不可
- Gateway Endpoint — S3・DynamoDB 専用・無料。Interface Endpoint — それ以外のサービス、PrivateLink ベース
- PrivateLink — ピアリングなしで特定のサービスだけプライベート公開。ピアリングは非推移的、TGW は多数 VPC のハブ
- private 接続 — 踏み台の代わりに Session Manager (インバウンドポート不要)
- Flow Logs — トラフィックのメタデータ監査 (内容は含まない)
次へ — Domain 1-4 WAF・Shield・Cognito #
ネットワーク境界を押さえたので、セキュリティドメインの最後として アプリケーション層の保護とユーザー認証 を扱います。
#5 Domain 1-4 WAF・Shield・Cognito・Secrets Manager では、WAF の Web ACL とルール、Shield Standard と Advanced の違い、Cognito User Pool と Identity Pool の役割の区別、そして Secrets Manager と Parameter Store の比較までまとめます。