メインコンテンツまでスキップ

第04章:reCAPTCHA Enterprise って何?いつ使う?🏢🔐

この章は「reCAPTCHA v3で始めたけど、運用が本気になってきた」ときに迷いがちな Enterprise を、ちゃんと“判断できる”ようになる回です🙂✨ (ミニアプリ題材:メモ+画像+AI整形📝📷🤖)


1) まず結論:Enterprise は「運用で勝つためのreCAPTCHA」🏁🧠

reCAPTCHA Enterprise は、ユーザー操作のリスクを **0.0〜1.0(0.1刻み)**で評価して、そのスコアが しきい値(app risk threshold)以上ならOK、未満ならNG…という感じで、App Checkが判定します🧿📊 そして デフォルトのしきい値は 0.5 推奨です。(Firebase)

さらに、トークンの **TTL(有効期間)**も運用に合わせて調整できます(30分〜7日、デフォルトは 1時間が妥当と明記)。短くすると安全だけど、再判定が増えて遅延・クォータ・コストに効いてきます⚖️(Firebase)


2) v3 と Enterprise の違い(超ざっくり)🔎✨

v3 vs Enterprise

イメージで掴むと早いです👇

  • v3:まずはこれでOKなことが多い。しきい値0.5推奨。TTLのデフォルトは 1日。(Firebase)
  • Enterpriseより運用前提(設定・監視・スコア段階・課金まわり)。しきい値0.5推奨。TTLのデフォルトは 1時間。(Firebase)

そして大きい差がこれ👇

  • スコア段階(granularity) Essentialsが4段階、Standard/Enterpriseが11段階…みたいに“細かく運用できる度”が違います📈(Google Cloud Documentation)
  • 無料枠と課金 reCAPTCHAは「月10,000 assessmentsまで無料(組織単位)」があり、Enterpriseはそれを超えると 1,000 assessments あたり $1という形が明記されています💸(Google Cloud Documentation)

3) 「いつEnterpriseにする?」判断基準🧭🧿

Decision Compass

✅ Enterpriseが“向いてる”サイン

  • Bot対策を「ちゃんと運用」したい(監視→調整→再監視)👀🔁

  • しきい値を 0.1刻みでチューニングしたい(人間を弾きすぎた/緩すぎたの微調整)🎛️(Firebase)

  • コスト事故が怖い機能がある(とくに AI やアップロード系)😱💸

    • 例:AI整形ボタンは、App Checkで守るのが強く推奨されています。(Firebase)
  • (ちょい上級)「使い回し対策」など強化の流れも見据えたい♻️🚫

    • 例:AI系の本番チェックリストでは replay protection に備えた設定も推奨されています。(Firebase)

❌ v3のままで様子見でいいサイン

  • まだβ〜小規模で、まずは 体験と速度が大事🏃‍♂️💨
  • しきい値はデフォルト0.5で十分そう🙂
  • 余計なコストの芽を増やしたくない🌱

4) 超重要:Billingをつける前の「しきい値の制限」🧯

Billing Unlock

Enterpriseは、請求アカウントを紐付ける前だと、使えるスコア段階が限定されます(例:0.1/0.3/0.7/0.9 など)&App Check側で設定できるしきい値も制限されます。(Firebase)

さらに、Billing追加後には 自動のセキュリティレビューが走るとも書かれています。(Firebase) なので「最初からEnterpriseでガチ運用するつもり」なら、この仕様は早めに知っておくと安心です🙂👍


読む📖(この章で押さえるポイント)

  1. Enterpriseは **スコア(0.0〜1.0)としきい値(推奨0.5)**で判定する🧿(Firebase)
  2. TTLは30分〜7日。短いほど安全だけど、遅延・クォータ・コストに効く⚖️(Firebase)
  3. 無料枠10,000 assessments/月(組織単位)+超過課金の形を把握する💸(Google Cloud Documentation)

手を動かす🛠️(Enterprise導入の最短ルート)

A. Console側(設定)🧰

Console Setup Steps

  1. reCAPTCHA Enterprise API を有効化(促されたらON)✅(Firebase)
  2. Website-type key を作成し、ドメインを登録🌐
  3. 「Use checkbox challenge」を選ばない(ここハマりがち!)🚫☑️(Firebase)
  4. Firebase Console の App Check で、対象Webアプリに site key を登録🧿(Firebase)
  5. (任意)TTLを確認:最初はデフォルト1時間でOK、短くしすぎ注意⏳(Firebase)
  6. (任意)しきい値:まずは 0.5で開始🎛️(Firebase)

B. アプリ側(コード)⚛️

Code Structure

services/firebase.ts みたいな“1箇所”に寄せるのがコツです📦✨

// services/firebase.ts
import { initializeApp } from "firebase/app";
import {
initializeAppCheck,
ReCaptchaEnterpriseProvider,
} from "firebase/app-check";

const firebaseConfig = {
// いつものやつ(省略)
};

export const app = initializeApp(firebaseConfig);

// ✅ App Check は「Firestore/Storage/AI Logic を触る前」に初期化!
export const appCheck = initializeAppCheck(app, {
provider: new ReCaptchaEnterpriseProvider(import.meta.env.VITE_RECAPTCHA_SITE_KEY),
isTokenAutoRefreshEnabled: true, // ← これONにしないと更新されないので要注意
});

ポイント👇

  • site key は公開キー(フロントに置く前提のやつ)です🔑
  • isTokenAutoRefreshEnabled: true は、公式のv3手順でも「自動更新は明示的にON」って強調されています🧠(Firebase)
  • 先にメトリクス監視→あとで強制、の順が安全です👀(いきなり強制はUX事故りがち😇)(Firebase)

ミニ課題📝(判断基準づくり)

あなたのアプリ(メモ+画像+AI整形)を想定して、次を1枚メモに書いてください✍️✨

  1. Enterpriseにしたい理由を2つ(例:AIコスト、Bot被害、運用でしきい値調整したい…)
  2. しきい値0.5から動かす条件を1つ(例:正規ユーザーが弾かれたら下げる…等)
  3. TTLを短くする条件を1つ(例:攻撃が来たときだけ短縮…等)(Firebase)

チェック✅(この章を抜ける条件)

  • 「Enterpriseは 運用前提」って、自分の言葉で説明できる🙂
  • TTLを短くすると **安全↑ / 遅延・クォータ・コスト↑**になり得るのが腹落ちしてる⚖️(Firebase)
  • Billingなしだと しきい値やスコア段階が制限されるのを理解した🧯(Firebase)
  • AI整形ボタンは App Checkで守るのが強く推奨される理由がわかる🤖🧿(Firebase)

つまずきポイント集(先回りで潰す😎🧯)

  • ドメイン登録ミスlocalhost や本番ドメイン入れ忘れでハマる🌐💥
  • checkbox challenge を選んでしまう:Enterpriseキー作成時に要注意🚫☑️(Firebase)
  • しきい値を上げすぎる:Botは減るけど、ユーザーも消える😇(まず0.5)(Firebase)
  • TTL短すぎ:安全だけど、再判定が増えて遅延・クォータ・コストに刺さる⏳💸

おまけ:AIで判断と実装を速くする🚀🤖

AI & Remote Config

  • 「Enterpriseにするか」迷ったら、AIに 判断材料の洗い出しをさせるのが強いです🧠✨
  • さらにAI機能側は、**Remote Configで“モデル名などをアプリ更新なしで変えられる”**のが推奨されていて、運用と相性が良いです🎛️(Firebase)
  • そしてAI Logicには **ユーザー単位のリクエスト制限(デフォルト100 RPM)**があるので、App Checkとセットで「破産しない設計」に寄せられます💸🧯(Firebase)

次の章(第5章)で、いよいよReact側に App Check を組み込む流れに入ると「守りが効いてる感」が一気に出て楽しいです😆🧿🔥