【入門編】APIゲートウェイにおけるレート制限とWAFによるDDoS防御 – アプリケーションセキュリティ & 安全な開発防御ガイド

APIを守る「門番」の考え方:レート制限とWAFで泥棒を追い払う方法

こんにちは!セキュリティの世界へようこそ。

皆さんは、自分の家を守るために何をしますか?玄関に鍵をかけるのは当たり前ですよね。でも、もし「1秒間に100回、合鍵を差し込んでガチャガチャやる人」がいたらどうでしょう?たとえ鍵が壊れなくても、あなたは家から一歩も出られなくなり、玄関前は人で溢れかえってしまいます。

実は、皆さんが開発しているAPIも、毎日この「ガチャガチャ」という攻撃(DDoSやブルートフォース)に晒されています。今日は、APIゲートウェイとAWS WAFを使って、この攻撃からシステムを鉄壁に守るための「賢い門番」の作り方を解説します。

—

1. 「スロットリング」は玄関の行列整理

APIにおける「レート制限(スロットリング)」とは、「一度に処理できる人数に制限をかけること」です。

たとえば、人気のラーメン屋さんに100人が一度に押し寄せたら、お店の中はパニックになりますよね。そこで「一度に入店できるのは5人まで。残りの人は外で待っててね」と整理券を配るのがレート制限の役割です。

APIゲートウェイでの設定のコツ

API Gatewayでは、バースト(一時的な急増)を許容しつつ、安定したリクエスト数(レート)を制限するのが定石です。

{
“throttlingBurstLimit”: 100, // 瞬間的に耐えられるリクエスト数
“throttlingRateLimit”: 50 // 1秒間あたりの平均リクエスト数
}

  • 設定のポイント: 最初から厳しすぎると、正当なユーザーまでエラー(429 Too Many Requests)になってしまいます。まずはアクセスログを見て、「普段はこれくらい」という平均値の2〜3倍からスタートし、徐々に絞り込んでいくのが現場の知恵です。

—

2. AWS WAFは「怪しい人」を自動検知する監視カメラ

レート制限が「入店制限」なら、AWS WAF(Web Application Firewall)は、玄関先で怪しい動きをする人を監視する「高性能な監視カメラ」です。

特に「レートベースのルール」は、「特定のIPアドレスから、5分間に2000回以上のアクセスがあったら即座にブロックする」といった自動追放設定が可能です。

WAFのレートベースルールの設定例(Terraformイメージ)

resource “aws_wafv2_web_acl” “api_protection” {
name = “api-security-rule”
scope = “REGIONAL”

rule {
name = “RateLimitRule”
priority = 1
action {
block {} # 閾値を超えたらアクセスを拒否!
}
statement {
rate_based_statement {
limit = 2000 # 5分間で2000回以上ならアウト
aggregate_key_type = “IP” # IPアドレス単位でカウント
}
}
visibility_config {
sampled_requests_enabled = true
cloudwatch_metrics_enabled = true
metric_name = “RateLimitRuleMetric”
}
}
}

—

3. なぜ「ヘッダー」が重要なのか?

APIを守る際、たまに「X-Forwarded-For」という言葉を聞きませんか?これは、マンションのオートロックのように、「どこの誰が来たのか」を中継地点が記録するヘッダーです。

攻撃者は自分の身元を隠すために、プロキシサーバーを複数経由させて「違う人」を装います。しかし、正しく設定されたAPIゲートウェイは、このヘッダーを読み解き、「あ、これは同じ攻撃者だ」と見抜くことができます。

一歩ずつ学びましょう:

  • Rate Limit: 「量」を制限してシステムを守る。
  • WAF: 「悪意ある人」を特定して追い出す。

この2つを組み合わせることで、あなたのAPIは、大量の攻撃リクエストという「騒音」に邪魔されることなく、本当に大切なユーザーの声だけを聞き取ることができるようになります。

—

最後に:完璧な防御なんて存在しない

セキュリティの世界では、「100%安全」はありません。攻撃手法は常に進化しています。今日設定した「5分間で2000回」という数字も、明日の攻撃者は「1999回」に抑えて攻撃してくるかもしれません。

大切なのは、「監視し、調整し、学び続けること」です。

まずはCloudWatchのメトリクスを開いて、自分のAPIにどんなアクセスが来ているか眺めてみることから始めてみてください。それが、世界最高峰のセキュリティエンジニアへの第一歩です。

皆さんのサービスが、今日も安全に、そして元気に稼働し続けますように!

コメント

タイトルとURLをコピーしました