SAA 03 ネットワーク(VPC・ELB・Route 53・CloudFront)
更新日:
← SAA_02_IAMとセキュリティ(IAM・KMS・Organizations・WAF) / 次 → SAA_04_コンピューティング(EC2・Auto Scaling・Lambda・コンテナ)
SAA で一番つまずきやすく、一番よく出る分野。図で覚える。
VPC の基本形(これを描けるようにする)
図を表示しています…
VPC 10.0.0.0/16(リージョン内)
│
├─ インターネットゲートウェイ(IGW) ── インターネット
│
├─ AZ-a
│ ├─ パブリックサブネット 10.0.1.0/24 ルート: 0.0.0.0/0 → IGW
│ │ ├─ ALB
│ │ └─ NAT ゲートウェイ(Elastic IP 付き)
│ └─ プライベートサブネット 10.0.11.0/24 ルート: 0.0.0.0/0 → NAT GW(AZ-a)
│ ├─ EC2(アプリ)
│ └─ RDS
│
└─ AZ-c(同じ形をもう1組) ← 高可用性のためAWS 公式アイコンで描いた構成図(draw.io で開くと編集できる):
| 部品 | 役割 |
|---|---|
| サブネット | VPC を区切った範囲。1つの AZ に属する |
| ルートテーブル | サブネットごとの「どこへ送るか」の表 |
| パブリックサブネット | ルートに IGW 行きがある。ここだけでインターネットと直接通信できる |
| プライベートサブネット | IGW 行きがない。外へ出るときは NAT ゲートウェイ経由 |
| NAT ゲートウェイ | プライベート → インターネットの片道だけ通す。AZ ごとに置く(1つだけだとその AZ が落ちたら全滅) |
| Elastic IP | 固定のパブリック IP |
| 踏み台(Bastion) | プライベートの EC2 に SSH するための中継。今は Systems Manager Session Manager で不要にできる |
セキュリティグループ と ネットワーク ACL
| セキュリティグループ(SG) | ネットワーク ACL(NACL) | |
|---|---|---|
| 付ける場所 | インスタンス(ENI)単位 | サブネット単位 |
| ルール | 許可だけ | 許可と拒否 |
| 状態 | ステートフル(戻りの通信は自動で許可) | ステートレス(戻りも明示的に許可。エフェメラルポート 1024-65535) |
| 評価 | 全ルールを評価 | 番号の小さい順に評価し、最初に一致したもの |
| 典型的な使い方 | 「ALB の SG からだけ 80 番を許可」(SG を参照元に指定できる) | 「特定 IP からの攻撃をサブネットでブロック」 |
通るのは「NACL も SG も許可」のときだけ
外から EC2 に届くまでに、NACL(サブネットの門)→ SG(インスタンスの門) の2つを順に通る。どちらか一方でも許可がなければ届かない(AND)。
クライアント ─▶ [NACL:サブネットの門] ─▶ [SG:インスタンスの門] ─▶ EC2
拒否なら ✕ ここで止まる 許可がなければ ✕ ここで止まる
→ 両方で許可されたときだけ ○ 届く| NACL | SG | 結果 |
|---|---|---|
| 許可 | 許可 | ○ 通る |
| 許可 | 許可なし | ✕ |
| 拒否 | 許可 | ✕ |
| 拒否 | 許可なし | ✕ |
戻りの通信で詰まりやすい:SG はステートフルなので戻りは自動で通るが、NACL はステートレスなので アウトバウンド側にもエフェメラルポート(1024-65535)の許可 が要る。
→ 「SG は正しいのに通らない」問題は、だいたい NACL の戻りのルール が原因。
行き: クライアント ──443──▶ NACL インバウンド(443 を許可)──▶ SG インバウンド(443 を許可)──▶ EC2
戻り: クライアント ◀─1024-65535── NACL アウトバウンド(これも許可が必要!)◀── SG(自動で通る)◀── EC2同じ種類のルールが複数あるとき
| 場面 | どう決まるか | 覚え方 |
|---|---|---|
| NACL と SG(層が違う) | 両方で許可 が必要 | AND |
| 1つのインスタンスに SG を複数 付けた | どれか1つでも許可 があれば通る(全部の SG のルールを合わせて評価) | OR |
| NACL の中に複数ルール | 番号の小さい順 に見て、最初に一致したルールで決まる。どれにも一致しなければ最後の * で拒否 | 早い者勝ち |
NACL の例(番号の小さい順に見る):
| ルール番号 | 送信元 | 許可/拒否 |
|---|---|---|
| 100 | 0.0.0.0/0(全部) | 許可 |
| 200 | 203.0.113.5 | 拒否 |
| * | 0.0.0.0/0 | 拒否 |
→ 203.0.113.5 からの通信は ルール100で先に一致するので許可される(200 の拒否は効かない)。止めたいなら 拒否のルールを 100 より小さい番号(例: 90)にする。
VPC の外とつなぐ
AWS のサービスへ(インターネットを通らずに)
| ゲートウェイエンドポイント | インターフェイスエンドポイント(PrivateLink) | |
|---|---|---|
| 対象 | S3 と DynamoDB だけ | ほとんどのサービス(SQS、KMS、Secrets Manager…) |
| 仕組み | ルートテーブルに行を追加 | サブネットに ENI(プライベート IP)を置く |
| 料金 | 無料 | 時間+データ量の課金 |
→ 「プライベートサブネットの EC2 から S3 へ、NAT の料金を減らしたい / インターネットを経由させたくない」= S3 ゲートウェイエンドポイント。
VPC 同士
| 方式 | 特徴 |
|---|---|
| VPC ピアリング | 1対1 の接続。推移しない(A-B、B-C があっても A-C は通らない)。CIDR が重なると不可 |
| Transit Gateway | ハブ&スポーク。多数の VPC・オンプレを1か所でつなぐ |
| PrivateLink | 自分のサービスを他の VPC に「1つの窓口だけ」公開する(VPC 全体はつながない) |
オンプレミスと
| 方式 | 特徴 | キーワード |
|---|---|---|
| Site-to-Site VPN | インターネット上に暗号化トンネル。すぐ使える・安い | 「すぐに」「低コスト」 |
| Direct Connect(DX) | 専用線。帯域が安定・大容量。開通まで数週間かかる | 「安定した帯域」「大量データ」 |
| DX + VPN | DX の上で暗号化(DX 自体は暗号化されない) | 「専用線で暗号化も」 |
| DX を2本 / DX + VPN をバックアップ | 冗長化 | 「DX の障害に備える」 |
| Client VPN | 個人の PC から VPC へ | 「リモートワークの社員」 |
通信を調べる
- VPC フローログ:どの IP からどの IP に通信したか(許可/拒否)を記録。中身(パケット)は見られない
- Reachability Analyzer:到達できない原因を調べる
ロードバランサー(ELB)
| 種類 | 層 | 得意なこと | キーワード |
|---|---|---|---|
| ALB(Application) | L7(HTTP/HTTPS) | パス・ホスト名でルーティング(/api → A、/img → B)、Lambda をターゲットに、認証(Cognito) | 「URL パスで振り分け」「マイクロサービス」 |
| NLB(Network) | L4(TCP/UDP/TLS) | 超低遅延・大量接続、固定 IP(Elastic IP) を持てる | 「静的 IP」「数百万リクエスト/秒」「TCP/UDP」 |
| GWLB(Gateway) | L3 | ファイアウォール等の仮想アプライアンスに通信を通す | 「サードパーティのセキュリティ機器」 |
- ヘルスチェックで異常なターゲットに送らない
- クロスゾーン負荷分散:AZ をまたいで均等に分散(ALB は常に有効)
- スティッキーセッション:同じユーザーを同じサーバーへ(本当はセッションを ElastiCache・DynamoDB に外出しするのが正解のことが多い)
- SSL/TLS 終端:ELB で HTTPS を受けて復号(証明書は ACM)
Route 53(DNS)
ルーティングポリシー
| ポリシー | 動き | 使いどころ |
|---|---|---|
| シンプル | 1つの宛先を返す | 普通の Web サイト |
| 加重(Weighted) | 割合で振り分け(90:10) | 新バージョンを少しだけ試す(カナリア) |
| レイテンシー | 一番遅延の小さいリージョンへ | 「世界中のユーザーに最速で」 |
| フェイルオーバー | プライマリがダメならセカンダリへ | DR(アクティブ・パッシブ) |
| 位置情報(Geolocation) | ユーザーの国・地域で決める | 「国ごとに別の言語のサイト」「配信制限」 |
| 地理的近接性(Geoproximity) | 距離+バイアスで調整 | 「あるリージョンに多めに流したい」 |
| 複数値回答(Multivalue) | 正常な IP を最大8つ返す | 簡易的な負荷分散 |
| IP ベース | 送信元 IP の範囲で決める | 「特定 ISP からはこちらへ」 |
- エイリアスレコード:ELB・CloudFront・S3 静的サイトを指せる。ゾーンの頂点(example.com)にも使える(CNAME は不可)。AWS リソース向けの問い合わせは無料
- ヘルスチェックと組み合わせてフェイルオーバーする
コンテンツ配信と高速化
| サービス | 仕組み | 使いどころ |
|---|---|---|
| CloudFront | エッジでキャッシュして配信(CDN)。HTTP/HTTPS | 静的・動的コンテンツの配信、S3 の前に置く |
| Global Accelerator | 固定のエニーキャスト IP 2つで AWS の高速網に乗せる。キャッシュはしない | TCP/UDP(ゲーム・VoIP)、固定 IP が必要、リージョン間の高速フェイルオーバー |
CloudFront のよく出る設定
- OAC(オリジンアクセスコントロール):S3 を CloudFront 経由でしか見られないようにする(旧 OAI)
- 署名付き URL / 署名付き Cookie:有料会員だけに動画を見せる
- 地理的制限:特定の国からのアクセスを拒否
- WAF と Shield を前に付けられる
- Lambda@Edge / CloudFront Functions:エッジでリクエストを書き換える
よく出るひっかけ
- NAT ゲートウェイはパブリックサブネットに置く(プライベートに置くと外に出られない)
- IPv6 で外向きだけ許可したい → Egress-only インターネットゲートウェイ
- VPC ピアリングは推移しない → 多数をつなぐなら Transit Gateway
- 「固定 IP を顧客のファイアウォールに登録したい」→ NLB(Elastic IP)か Global Accelerator(ALB は IP が変わる)
確認ポイント
- パブリック/プライベートサブネットの違いをルートテーブルで説明できる
- SG と NACL の違い(ステートフル・許可だけ)を言える
- S3 へプライベートに行く方法(ゲートウェイエンドポイント)を言える
- VPN と Direct Connect の使い分けを言える
- ALB と NLB、CloudFront と Global Accelerator の使い分けを言える
- Route 53 の加重・レイテンシー・フェイルオーバー・位置情報を区別できる
関連ノート
- IPアドレス・サブネット ― CIDR の読み方
- ルーティング・NAT
- DNS
- OSI参照モデル ― L4 と L7 の違い
- TCP・UDP