TL

Cloud Service

Firebase Authentication

認証画面やパスワード管理を自作せず、数行の SDK でアプリにログインを組み込めるエンドユーザー認証サービス。メール・SNS・電話など多様なサインインに対応。AWS Cognito に相当する。

基礎セキュリティ運用上の優秀性
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.アプリのログイン機能を肩代わりする軽量なエンドユーザー認証サービス。
  • 2.メール・Google・電話・匿名など多様なサインインと SDK を標準提供。
  • 3.発行された ID トークンでバックエンドを保護。上位版は Identity Platform。

解決する課題

スマホアプリや Web アプリのログイン機能を、自前で作らずに任せたいときに使います。Cloud IAM が「Google Cloud のリソースに誰がアクセスできるか」を制御するのに対し、Firebase Authentication が扱うのは「あなたのアプリにログインするのは誰か」、つまりエンドユーザーの認証です。

  • パスワードのハッシュ保存・リセットメール・ログイン状態の保持などを自作すると、バグや脆弱性の温床になる → マネージドな認証基盤に任せたい
  • Google・Apple ログインや、メールアドレス・電話番号(SMS)など複数のサインイン方法をまとめて用意したい
  • フロントエンドにすぐ組み込めるログイン UI と SDK(Web・iOS・Android)が欲しい
  • ログイン後にバックエンド API を保護したい → **検証できる ID トークン(JWT)**で認証状態を引き回したい

対応する AWS のサービスは **Amazon Cognito(ユーザープール)**です。Firebase Authentication は Identity Platform と認証基盤を共有しており、SAML/OIDC・多要素認証・マルチテナント・監査ログ・SLA といったエンタープライズ機能が必要になった場合は、上位版の Identity Platform へ移行する形になります。

主要概念と用語

  • エンドユーザー: アプリにサインインする一般利用者。Google Cloud にログインする管理者やサービスアカウントとは別物
  • サインインプロバイダー: 認証の出どころ。メール/パスワード、電話番号(SMS)、Google・Apple・Facebook・GitHub などの OAuth、ゲスト用の匿名認証などから選んで有効化する
  • ID トークン: 認証成功時に発行される署名付き JWTuid・メール・プロバイダー情報などを含み、バックエンドはこれを検証してユーザーを識別する
  • リフレッシュトークン: 期限切れの ID トークンを再発行するための長期トークン。SDK が裏側で使い、ログインを維持する
  • カスタムクレーム: ID トークンに付与できる任意の属性。role などを入れて**認可(権限)**の判断に使う
  • FirebaseUI / Authentication SDK: ログイン画面や認証処理をすぐ実装できる UI ライブラリとクライアント SDK
  • Admin SDK: サーバー側でトークンを検証したり、ユーザーの作成・削除・クレーム付与を行うための管理用ライブラリ
  • セキュリティルール連携: Firestore や Cloud Storage(Firebase)のルールから、ログイン中のユーザー情報を参照してアクセス可否を判定できる

仕様・制限・クォータ

  • グローバルサービスで、ユーザーディレクトリはプロジェクトに紐づく。料金・運用は基本的にリージョンに依存しないが、SMS など一部機能の挙動は地域要因を受ける
  • ID トークンは短命(標準で 1 時間程度)。アプリは SDK 経由でリフレッシュトークンを使い自動更新するのが前提
  • 無料枠が広く、メール/パスワードや OAuth 系プロバイダーは無料の範囲で使えることが多い。一方で**電話認証(SMS)**は送信ごとに外部コストが伴う
  • フェデレーション系プロバイダー(Google・Apple 等)は、各プロバイダー側の設定・審査・ポリシーに従う必要がある
  • SAML/OIDC・多要素認証・マルチテナント・監査ログ・SLA が必要な場合は、Firebase Authentication ではなく上位版の Identity Platform を使う
  • クォータや具体的な料金・トークン有効期限の数値は変動するため、本番設計時は公式ドキュメントで最新値を確認すること
Identity Platform との関係

Firebase Authentication と Identity Platform は認証基盤を共有しています。クライアント SDK や API はほぼ共通で、軽量な利用なら Firebase AuthSAML/OIDC・MFA・マルチテナント・監査ログ・SLA が要るなら Identity Platform、と捉えると整理しやすいです。後から上位版へ切り替えても、クライアント側のコードは大きく変えずに済みます。

内部の仕組み

クライアント(Web・iOS・Android)が SDK でサインインを行うと、Firebase Authentication がサインインプロバイダーとの認証フローを仲介し、成功すると署名付き ID トークン(JWT)とリフレッシュトークンを返します。

  1. クライアントが選んだプロバイダーで認証(パスワード照合、OAuth リダイレクト、SMS コード検証など)
  2. 成功すると Firebase Authentication がユーザーレコードを作成・更新し、uid を確定
  3. **ID トークン(JWT)**を発行。クライアントはこれを API 呼び出しの Authorization ヘッダに載せる
  4. バックエンドは Admin SDK 等でトークンの署名と有効期限を検証し、uid やカスタムクレームから認可を判断
  5. トークンが切れたら SDK がリフレッシュトークンで自動再発行(再ログイン不要)
認証と認可は別物

ID トークンが有効でも、それは「誰か」を保証するだけです。「何をしてよいか」はアプリ側でカスタムクレームやデータベース上のロールに基づいて判断する必要があります。トークンを信じきって認可を省略しないでください。

設計パターン / ベストプラクティス

  • トークンはサーバー側で必ず検証する: クライアントから来た JWT は Admin SDK で署名・期限・発行者を検証してから信頼する
  • 認可はカスタムクレームで: ロールなどをカスタムクレームに入れ、API 側はクレームを見て権限を判定する。クレーム付与は信頼できるサーバー側で行う
  • クライアント直結 DB はセキュリティルールで守る: Firestore や Cloud Storage に直接アクセスする構成では、ルールからログインユーザーの uid を参照して所有者チェックを書く
  • メール確認を必須にする: 未確認アドレスのまま重要操作を許さないよう、確認状態を条件に組み込む
  • 匿名認証からの昇格: まず匿名で使い始め、後からメールや SNS アカウントへリンクしてデータを引き継ぐ導線を設ける
  • 企業要件が出たら Identity Platform へ: SAML/OIDC・MFA・マルチテナント・監査ログが必要になったら上位版へ切り替える

運用・監視

  • Firebase コンソールのユーザー管理画面でユーザーの一覧・無効化・削除、サインイン方法やメールテンプレート(確認・リセット)の設定を行う
  • 登録ユーザー数やサインインの推移を監視し、急増(攻撃や bot 登録)やコスト増を早期に検知する
  • SMS 送信は到達性・コストの観点で監視対象。電話認証は乱用(課金狙いの大量送信)に注意する
  • ユーザーデータのエクスポート / インポート機能で、移行やバックアップ、他環境への複製を行う
  • 監査ログや MFA・マルチテナントなどより厳密な運用が必要になったら Identity Platform へアップグレードする

コスト

メール/パスワードや Google・Apple などの OAuth 系プロバイダーは無料枠が広く、多くの小〜中規模アプリは無料の範囲で運用できます。コストが発生しやすいのは主に**電話認証(SMS)**で、送信ごとに料金がかかり、地域差や乱用対策の影響を受けます。エンタープライズ機能を使う場合は Identity Platform 側の従量課金(月間アクティブユーザー基準)になります。

項目課金の考え方備考
メール・OAuth 認証広い無料枠の範囲で利用可小〜中規模なら無料が中心
電話認証(SMS)送信ごとにコストが発生地域差・乱用対策に注意
エンタープライズ機能Identity Platform の従量課金MFA・SAML/OIDC など
数値は都度確認

無料枠の範囲や SMS 単価は変動します。設計時は公式の料金ページで最新値を確認し、特に電話認証を使う場合は送信コストを見積もってください。

セキュリティ

  • メール確認を必須化し、未確認アドレスでの重要操作を制限する
  • 乱用対策: 電話認証の悪用(課金狙いの大量 SMS)や bot による大量サインアップに備え、reCAPTCHA などの保護を組み合わせる
  • トークンの取り扱い: ID トークンとリフレッシュトークンを安全に保管し、ログアウト時や侵害時はトークンを失効させる
  • 最小権限: カスタムクレームに過剰な権限を埋め込まず、認可の最終判断はサーバー側のロジックで行う
  • より強い保護が必要なら Identity Platform: 多要素認証(MFA)やリスクベースの保護、監査ログが要件なら上位版を選ぶ
アンチパターン

クライアントから渡された ID トークンを検証せずに信頼したり、認可判断をフロントエンドだけで完結させるのは危険です。JWT はサーバーで必ず検証し、権限チェックは必ずバックエンドで行ってください。

関連サービス・比較

観点Firebase AuthenticationIdentity Platform
位置づけアプリの軽量なエンドユーザー認証エンタープライズ向け上位版(CIAM)
対応プロバイダーメール・電話・SNS・匿名上記に加え SAML/OIDC
多要素認証原則なしSMS・TOTP などに対応
マルチテナントなしテナントで論理分割が可能
監査ログ・SLA限定的Cloud Audit Logs と SLA を提供
主な用途個人開発・小〜中規模アプリ企業向け・SaaS・規制要件
Cloud IAM との違い

名前や役割が似て見えますが、Cloud IAM はクラウドリソースへのアクセス制御Firebase Authentication はアプリ利用者の認証で対象がまったく異なります。両者を併用し、エンドユーザーの認証と、バックエンドが使うサービスアカウントの権限とを分けて設計します。

ハンズオン / CLI例

# Firebase CLI でログインし、プロジェクトを確認
firebase login
firebase projects:list

# 既存の Google Cloud プロジェクトに Firebase を追加
firebase projects:addfirebase my-project

# Identity Toolkit API を有効化(認証基盤の API)
gcloud services enable identitytoolkit.googleapis.com --project=my-project

# Admin SDK でサーバー側からトークン検証やユーザー管理を行うため、
# サービスアカウントキーの代わりにアプリケーションのデフォルト認証情報を設定
gcloud auth application-default login

Google Cloud Service

Firebase Authenticationを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

エンドユーザー / VDI

比較で見る軸

クラウド: Google Cloud / カテゴリ: エンドユーザー / VDI / 難易度: basic

導入後に効く点

メール・Google・電話・匿名など多様なサインインと SDK を標準提供。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
エンドユーザー / VDI
難易度
basic
関連資格
設計柱
security / operational

判断チェックリスト

  • 自社の用途が「エンドユーザー / VDI / security」に近いか確認する。
  • 強みである「アプリのログイン機能を肩代わりする軽量なエンドユーザー認証サービス。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

エンドユーザー / VDIsecurityoperational