AWS Certified Solutions Architect - Associate (SAA-C03) #4 Domain 1-3 安全なアーキテクチャ — VPC セキュリティ

読了 6分

#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 EndpointS3, 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 の比較までまとめます。

X