Firebase App Check
App Check は、未承認のクライアントがバックエンド リソースにアクセスするのを防ぐことで、API リソースを不正使用から保護します。Firebase サービス、Google Cloud サービス、およびお客様の API を連携して、リソースを安全に保ちます。
App Check を使用すると、アプリを実行しているデバイスでアプリまたはデバイスの証明書プロバイダを使用して、次のいずれか、または両方であることを証明できます。
- 正規のアプリから送信されたリクエストであること
- 正規の未改造のデバイスから送信されたリクエストであること
この証明書は、アプリが指定した API に送信するすべてのリクエストに添付されます。App Check の適用を有効にすると、承認していないアプリまたはプラットフォームからのリクエストと同様に、有効な証明書がないクライアントからのリクエストは拒否されます。
App Check には、証明書プロバイダとして次のサービスを使用するためのサポートが組み込まれています。
- DeviceCheck または App Attest(Apple プラットフォーム)
- Play Integrity または SafetyNet(非推奨)(Android)
- reCAPTCHA Enterprise(ウェブアプリ)
これらのサービスでは要件を満たすことができない場合は、サードパーティの証明書プロバイダを使用できます。また、独自の証明手法を使用する独自のサービスを実装することもできます。
現在、App Check は次の Firebase プロダクトに対応しています。
サポートされている Firebase プロダクト |
---|
Realtime Database |
Cloud Firestore |
Cloud Storage |
Cloud Functions(呼び出し可能関数) |
認証(ベータ版。Identity Platform を使用する Firebase Authentication へのアップグレードが必要) |
App Check では、Firebase 以外のバックエンド リソースを保護することもできます。
準備ができたら
仕組み
サービスで App Check を有効にして、アプリにクライアント SDK を組み込むと、次の処理が定期的に行われます。
- アプリが、選択したプロバイダとやり取りして、アプリまたはデバイスの真正性の証明書(プロバイダによっては両方の証明書)を取得します。
- 証明書が App Check サーバーに送信されます。ここで、アプリに登録されているパラメータを使用して証明書の有効性を検証します。有効な証明書であれば、有効期限が設定された App Check トークンをアプリに返します。このトークンには、検証された証明書に関する情報が含まれている場合があります。
- App Check クライアントの SDK がトークンをアプリ内のキャッシュに保存します。これにより、アプリは、保護されたサービスに対するリクエストと一緒にトークンを送信できるようになります。
App Check で保護されたサービスは、最新の有効な App Check トークンを含むリクエストのみを受け入れます。
App Check によるセキュリティの強度
App Check では、アプリやデバイスの真正性を判断するために証明書プロバイダを利用します。すべてではないものの、バックエンドに対する不正行為を防止できます。App Check によってすべての不正行為を阻止できるわけではありませんが、App Check を統合することで、バックエンド リソースの不正使用を防ぐという重要なステップを組み込むことができます。
App Check と Firebase Authentication の関係
App Check と Firebase Authentication は、アプリのセキュリティを相互に補完する関係にあります。Firebase Authentication はユーザー認証によってユーザーを保護しますが、App Check は、アプリまたはデバイスの真正性を証明することでデベロッパーを保護します。App Check は、API 呼び出しで有効な Firebase App Check トークンを要求することで、Firebase リソースとカスタム バックエンドへのアクセスを保護しています。この 2 つのコンセプトを連携させることで、アプリの保護を強化できます。
割り当てと上限
App Check の使用には、使用する証明書プロバイダの割り当てと上限が適用されます。
DeviceCheck と App Attest へのアクセスには、Apple によって設定された割り当てまたは制限が適用されます。
Play Integrity には、Standard API の使用枠に対して「1 日あたり 10,000 回の呼び出し」という割り当てがあります。使用枠の引き上げに関して詳しくは、Play Integrity のドキュメントをご覧ください。
SafetyNet には「1 日あたり 10,000 回の呼び出し」という割り当てがあります。割り当ての引き上げをリクエストする方法については、SafetyNet のドキュメントをご覧ください。
reCAPTCHA Enterprise では、1 か月あたり 100 万回までの呼び出しは無料ですが、それを超えると費用が発生します。reCAPTCHA Enterprise の料金をご覧ください。
始める
では始めてみましょう。
Apple プラットフォーム
Android
ウェブ
Flutter
C++
Unity
カスタム App Check プロバイダの実装方法:
App Check を使用して Firebase 以外のバックエンド リソースを保護する方法: