-
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
memoissue started as noteissue started as notespeclanguage or system specificationlanguage or system specification
Description
目的
公開サービス化に伴う DDoS / Billing Attack(課金攻撃)からの防御設計。
前提
- Cloudflare の従量課金プランでは、DDoS でリクエストが増えると請求が爆発する
- 攻撃者の目的はサービス停止だけでなく、運営者の財布を攻撃する「Billing Attack」パターンがある
- webhook エンドポイントの送信元は GitHub のみであるべき
設計メモ
防御の優先度順
| 優先度 | 対策 | 効果 |
|---|---|---|
| 最優先 | GitHub IP レンジのホワイトリスト(WAF ルール) | 外部攻撃の99%をブロック |
| 高 | webhook 署名検証を Worker 入口で即実行 | 偽装リクエストを弾く |
| 高 | 認証なしリクエストは DO に渡さず即返却 | DO 課金を防ぐ |
| 中 | Cloudflare Rate Limiting ルール(IP 単位) | レート制限 |
| 保険 | 使用量アラート設定 | 異常検知 |
GitHub IP ホワイトリスト
api.github.com/metaで GitHub の IP レンジ一覧を取得可能- Cloudflare WAF ルールで webhook エンドポイントへのアクセスを GitHub IP のみに制限
- 無料プランでも設定可能
Worker 層の防御
- Worker の最初の数行で認証チェック → 不正なら即 return
- DO まで到達させなければ DO の課金は発生しない
- Worker のリクエスト処理は軽量なので不正リクエストのコストは極小
テナントごとのクォータ
- DO 内でリクエストカウンターを管理
- 上限超過時は受信停止または通知
- 将来のユーザー課金プランと連動
Cloudflare のインフラ層
- Cloudflare 自体が DDoS 防御を持つ(無料で付属)
- 大規模ネットワーク攻撃はここで吸収
制約
- Workers 有料プランにハード上限(自動停止)機能がない → アラートで対応
- GitHub IP レンジは変更される可能性がある → 定期的な更新が必要
refs
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
memoissue started as noteissue started as notespeclanguage or system specificationlanguage or system specification