🎆

Cloud LoggingでFirebase Authenticationのログを収集したい

に公開

やりたいこと

  • Firebase Authenticationを利用してユーザ認証を行うアプリケーションにおいて、ログインやパスワード再設定が行われた際のログを収集したい。
  • スクラッチで作成することも可能だが、できれば組み込みの機能を利用したい。
  • ログはCloud Logging(Google Cloud)で閲覧・解析したい。

結論

さくっと調査した結果、ログを収集する組み込みの機能は用意されていることがわかりました。
ただし、Firebase Authenticationでは利用不可でFirebase Authentication with Identity Platformにアップグレードする必要があります。

Firebase Authenticaition with Identity Platform

ドキュメントに書いてある内容としてはこんな感じです。

  • Firebase Authenticationからアップグレードすることで、Identity Platformで用意されている追加機能(多要素認証、ロギング、マルチテナントなど)が利用できる。
  • アップグレードによる移行や、既存のクライアントSDK、Admin SDKからのコード変更は不要。
  • 料金体系が異なると記載があるものの、従量課金制(Blaze)の料金はFirebase Authenticationから変化なし。

詳しい機能・料金・制限の内容はドキュメントをご確認ください。
https://firebase.google.com/docs/auth?hl=ja#identity-platform
https://cloud.google.com/identity-platform/docs/product-comparison?hl=ja

また、ロギング機能で収集できるオペレーションの種類はこちらです。
https://cloud.google.com/identity-platform/docs/activity-logging?hl=ja#logged_operations

アップグレード手順

プロジェクトを Firebase Authentication with Identity Platform にアップグレードするには、Firebase コンソールの「認証の設定」ページを開きます。

アップグレードされていない状態では、一部の機能(ブロッキング関数やユーザアクティビティのロギング)は利用不可(鍵マーク)になっています。

利用できない機能にカーソルを当てると、アップグレードのポップアップが出るので「アップグレード」をクリックします。

新しいAuthenticationへのアップグレードというページに遷移します。

① Identity Platformの詳細を学ぶ
追加機能の内容を確認できます。確認できたら「次へ」をクリックします。

② プランの変更点を把握する
料金モデルの違いを把握できます。こちらも確認できたら「次へ」をクリックします。

③ 新しいAuthenticationの請求額を予測する
現在の使用状況に基づいた料金の予測を行ってくれます。(すごく親切ですね!)
確認できたら「次へ」をクリックします。

④ Authenticationのアップグレードを完了する
最終確認が出てきます。問題なければ「新しいAuthenticationにアップグレードする」をクリックしアップグレードは完了です。

アップグレードを完了すると、Firebaseコンソール上でロギングなどの機能が利用可能になっています。ユーザーアクティビティ ロギングを有効にするにして「保存」をクリックします。

Cloud Loggingでログを確認

firebaseでログインしたときのログがCloud Loogingで収集できているか確認します。
Google Cloudコンソールから [ログ エクスプローラ] を開きます。
以下のように検索します。

  • 左のタブの [リソースの種類] から [プロジェクト] を選択します。
  • もしくは、クエリにresource.type="identitytoolkit_project"と入力しクエリを実行します。

ログインしたタイミングで以下のようなログが出力されていることが確認できました。

{"@type":"type.googleapis.com/google.cloud.identitytoolkit.logging.RequestLog", "methodName":"google.cloud.identitytoolkit.v1.AuthenticationService.SignInWithPassword", "request":{…}, "requestMetadata":{…}, "response":{…}, "serviceName":"identitytoolkit.googleapis.com", "status":{…}}

methodName:~SignInWithPasswordなのでログイン時のログであることがわかります。
また、このエントリから詳細を確認してみると、ログインしたユーザのメールアドレスも確認することができました。

以上です。

Discussion