security
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
CloudFront + WAF + Shield — エッジでのセキュリティ多層防御
CloudFrontにWAFを適用してSQLインジェクション・XSSをブロックし、AWS ShieldでDDoSを防御する多層エッジセキュリティの設計、WAFルールグループの組み合わせ、Shield Advancedの自動DDoS軽減を解説。
一言結論
CloudFrontにWAFとShieldを組み合わせたエッジ多層防御では、WAF WebACLをus-east-1で作成する制約が落とし穴になりやすく、マネージドルールグループの優先度設計がブロック精度を左右する。
エッジセキュリティの構成
インターネット
↓
AWS Shield(DDoS保護)← 自動でCloudFrontに適用(Standard)
↓
Amazon CloudFront(CDN + エッジロケーション)
↓
AWS WAF(L7フィルタリング)← CloudFrontに直接アタッチ
↓
オリジン(ALB / S3 / API Gateway)
↓
オリジン側WAF(オプション)
AWS WAF のCloudFront 統合
CloudFrontに関連付けるWAF WebACLは us-east-1(バージニア) で作成する必要がある。
# us-east-1 で WAF WebACL を作成
aws wafv2 create-web-acl \
--region us-east-1 \
--name "cloudfront-waf" \
--scope CLOUDFRONT \
--default-action Allow={} \
--rules '[
{
"Name": "AWSManagedRulesCommonRuleSet",
"Priority": 1,
"OverrideAction": {"None": {}},
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CommonRuleSetMetric"
}
}
]' \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=cloudfront-waf
WAF マネージドルールグループの組み合わせ
基本構成(推奨):
AWSManagedRulesCommonRuleSet:
→ OWASP Top 10 の一般的な脅威
→ SQLインジェクション、XSS、ディレクトリトラバーサル等
AWSManagedRulesKnownBadInputsRuleSet:
→ 既知の悪意のある入力パターン
→ Log4Shell等の脆弱性エクスプロイト試行
AWSManagedRulesAmazonIpReputationList:
→ AWSが収集した悪意のあるIPリスト
→ ボット、スキャナー、TorノードのIPをブロック
AWSManagedRulesBotControlRuleSet:
→ ボットトラフィックの検出・制御
→ スクレイパー、クローラー等をブロック
追加検討(ユースケースにより):
AWSManagedRulesSQLiRuleSet: SQLインジェクション特化
AWSManagedRulesLinuxRuleSet: Linuxシステムへの攻撃パターン
AWS-AWSManagedRulesAnonymousIpList: Proxy/VPN/Torからのアクセス制御
カスタムルール設定例
# レートベースルール(IPごとの分あたりリクエスト制限)
aws wafv2 create-web-acl \
--region us-east-1 \
--name "rate-limit-waf" \
--scope CLOUDFRONT \
--rules '[
{
"Name": "RateLimitRule",
"Priority": 1,
"Action": {"Block": {}},
"Statement": {
"RateBasedStatement": {
"Limit": 1000,
"AggregateKeyType": "IP"
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "RateLimitMetric"
}
}
]'
# 地理的制限ルール(特定国からのアクセスをブロック)
{
"Name": "GeoBlockRule",
"Priority": 2,
"Action": {"Block": {}},
"Statement": {
"GeoMatchStatement": {
"CountryCodes": ["CN", "RU", "KP"]
}
}
}
AWS Shield Standard vs Advanced
Shield Standard(無料・自動適用):
→ CloudFront, Route53 に自動適用
→ L3/L4 DDoS攻撃を軽減(SYN/UDPフラッド等)
→ 24/7の自動防御
Shield Advanced(月$3,000):
→ ALB, ELB, EC2, Global Acceleratorにも対応
→ L7 DDoS攻撃の軽減(WAFと統合)
→ AWS DDoS Response Team(SRT)への24/7アクセス
→ DDoS攻撃によるAWS料金の増加分を補償(コスト保護)
→ リアルタイムの攻撃可視性
→ 自動アプリケーション層(L7)DDoS軽減
CloudFront の追加セキュリティ設定
# HTTPS強制(HTTP → HTTPS リダイレクト)
aws cloudfront create-distribution \
--distribution-config '{
"DefaultCacheBehavior": {
"ViewerProtocolPolicy": "redirect-to-https",
"MinTTL": 0
}
}'
# セキュリティヘッダーの追加(Response Headers Policy)
aws cloudfront create-response-headers-policy \
--response-headers-policy-config '{
"Name": "security-headers-policy",
"SecurityHeadersConfig": {
"StrictTransportSecurity": {
"Override": true,
"IncludeSubdomains": true,
"Preload": true,
"AccessControlMaxAgeSec": 31536000
},
"ContentTypeOptions": {"Override": true},
"XSSProtection": {
"Override": true,
"Protection": true,
"ModeBlock": true
},
"FrameOptions": {
"Override": true,
"FrameOption": "DENY"
}
}
}'
WAF ログの分析
# WAF ログをS3に保存
aws wafv2 put-logging-configuration \
--logging-configuration '{
"ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:global/webacl/cloudfront-waf/xxx",
"LogDestinationConfigs": ["arn:aws:s3:::my-waf-logs-bucket"],
"RedactedFields": [
{"SingleHeader": {"Name": "Authorization"}},
{"SingleHeader": {"Name": "Cookie"}}
]
}'
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| CloudFront用WAF WebACLのリージョン | us-east-1(バージニア)必須 |
| DDoS攻撃のコスト保護 | Shield Advanced |
| SQLインジェクション・XSSを自動ブロック | AWSManagedRulesCommonRuleSet |
| 特定IPの大量リクエストをブロック | WAFレートベースルール |
| L3/L4 DDoS保護(無料) | Shield Standard(自動適用) |
まとめ
CloudFront + WAF + ShieldのエッジセキュリティはL3〜L7の脅威を多層で防御する。WAFのマネージドルールグループを活用してSQLi/XSS等の一般的な攻撃を、ShieldでDDoSを防ぐ。CloudFront用WAFはus-east-1で作成することを忘れずに。