2.4 ネットワーク
AWS Networking
VPC(Virtual Private Cloud)はAWSリソースを論理的に隔離したネットワーク環境を提供する。サブネット、ルートテーブル、セキュリティグループを適切に設計することで、セキュアなネットワーク構成を実現する。
VPCの基本構成
@startuml
skinparam backgroundColor #FEFEFE
cloud "インターネット" as Internet
rectangle "VPC (10.0.0.0/16)" as VPC #F3F4F6 {
rectangle "インターネット\nゲートウェイ" as IGW #FEF3C7
rectangle "AZ-a" as AZ1 #E5E7EB {
rectangle "パブリックサブネット\n10.0.1.0/24" as PubSub1 #DBEAFE {
rectangle "EC2\n(Web)" as Web1 #93C5FD
rectangle "NAT GW" as NAT #FDE68A
}
rectangle "プライベートサブネット\n10.0.11.0/24" as PriSub1 #D1FAE5 {
rectangle "EC2\n(App)" as App1 #6EE7B7
rectangle "RDS" as RDS1 #6EE7B7
}
}
rectangle "AZ-c" as AZ2 #E5E7EB {
rectangle "パブリックサブネット\n10.0.2.0/24" as PubSub2 #DBEAFE {
rectangle "EC2\n(Web)" as Web2 #93C5FD
}
rectangle "プライベートサブネット\n10.0.12.0/24" as PriSub2 #D1FAE5 {
rectangle "EC2\n(App)" as App2 #6EE7B7
rectangle "RDS\n(Standby)" as RDS2 #6EE7B7
}
}
}
Internet <--> IGW
IGW <--> PubSub1
IGW <--> PubSub2
PriSub1 --> NAT : アウトバウンド
NAT --> IGW
@enduml
図1: 典型的なVPC構成(2AZ、パブリック/プライベートサブネット)
| コンポーネント | 役割 | 設定ポイント |
|---|---|---|
| VPC | 論理的なネットワーク境界 | CIDRブロック(例: 10.0.0.0/16) |
| サブネット | VPC内のIPアドレス範囲 | AZごとに作成、/24推奨 |
| インターネットGW | VPCとインターネットの接続点 | VPCに1つ |
| NAT Gateway | プライベートサブネットからの外部通信 | AZごとに配置推奨 |
セキュリティグループとNACL
@startuml
skinparam backgroundColor #FEFEFE
rectangle "トラフィックフロー" as Flow {
actor "クライアント" as Client
rectangle "NACL\n(サブネットレベル)" as NACL #FEF3C7 {
note right
ステートレス
インバウンド/アウトバウンド個別設定
許可/拒否ルール
番号順に評価
end note
}
rectangle "セキュリティグループ\n(インスタンスレベル)" as SG #DBEAFE {
note right
ステートフル
許可ルールのみ
他のSGを参照可能
戻りトラフィック自動許可
end note
}
rectangle "EC2インスタンス" as EC2 #D1FAE5
Client --> NACL
NACL --> SG
SG --> EC2
}
@enduml
図2: NACLとセキュリティグループの違い
| 特性 | セキュリティグループ | NACL |
|---|---|---|
| 適用レベル | インスタンス(ENI) | サブネット |
| ステート | ステートフル | ステートレス |
| ルール | 許可のみ | 許可と拒否 |
| 評価順序 | すべてのルールを評価 | 番号順に評価 |
関連サービス
@startmindmap skinparam backgroundColor #FEFEFE * AWSネットワークサービス ** 負荷分散 *** ALB (Application LB) **** HTTP/HTTPS **** パスベースルーティング *** NLB (Network LB) **** TCP/UDP **** 超低レイテンシ *** CLB (Classic LB) **** レガシー ** DNS *** Route 53 **** ドメイン登録 **** ルーティングポリシー **** ヘルスチェック ** コンテンツ配信 *** CloudFront **** CDN **** エッジロケーション **** キャッシュ left side ** 接続 *** VPC Peering **** VPC間接続 **** 推移的でない *** Transit Gateway **** ハブ&スポーク **** 大規模接続 *** Direct Connect **** 専用線接続 **** 低レイテンシ *** VPN **** サイト間VPN **** クライアントVPN @endmindmap
図3: AWS関連ネットワークサービス
設計のベストプラクティス
1. マルチAZ構成で可用性確保
2. パブリック/プライベートサブネットの分離
3. 最小権限の原則でセキュリティグループ設定
4. VPCフローログで通信監視
1. マルチAZ構成で可用性確保
2. パブリック/プライベートサブネットの分離
3. 最小権限の原則でセキュリティグループ設定
4. VPCフローログで通信監視
出典
[1] AWS. Amazon VPC Documentation. https://docs.aws.amazon.com/vpc/
[2] AWS. Security Groups for Your VPC. https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html
[2] AWS. Security Groups for Your VPC. https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html
発展学習
→ VPC Peering vs Transit Gateway
→ AWS Network Firewall
→ VPC Peering vs Transit Gateway
→ AWS Network Firewall