Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Firebaseアプリチェックのログを監査する

このページでは、クラウド監査ログの一部としてFirebaseによって作成された監査ログについて説明します。

概要

Firebaseサービスは、「誰が、何を、どこで、いつ行ったか」という質問に答えるのに役立つ監査ログを書き込みます。これらは、Firebaseプロジェクトに接続されたGoogleCloudプロジェクトの一部として提供されるクラウド監査ログです。

Firebaseプロジェクトにはそれぞれ、プロジェクト内に直接あるリソースの監査ログのみが含まれています。

クラウド監査ログの一般的な概要については、クラウド監査ログの概要を参照してください。監査ログの形式の詳細については、 「監査ログについて」を参照してください。

利用可能な監査ログ

Firebase App Checkでは、次の種類の監査ログを利用できます。

  • 管理アクティビティ監査ログ

    メタデータまたは構成情報を書き込む「管理者書き込み」操作が含まれます。

    管理アクティビティ監査ログを無効にすることはできません。

  • データアクセス監査ログ

    メタデータまたは構成情報を読み取る「管理者読み取り」操作が含まれます。また、ユーザー提供のデータを読み書きする「データ読み取り」および「データ書き込み」操作も含まれます。

    データアクセス監査ログを受信するには、それらを明示的に有効にする必要があります。

監査ログの種類の詳細については、「監査ログの種類」を参照してください。

監査された操作

以下は、FirebaseAppCheckの各監査ログタイプに対応するAPI操作をまとめたものです。

監査ログカテゴリFirebaseアプリのチェック操作
プロジェクト運営
管理アクティビティUpdateService
BatchUpdateServices
データアクセス(ADMIN_READ) GetService
ListServices
アプリの操作
管理アクティビティUpdateAppAttestConfig
UpdateDeviceCheckConfig
UpdatePlayIntegrityConfig
UpdateRecaptchaEnterpriseConfig
UpdateRecaptchaV3Config
UpdateSafetyNetConfig
CreateDebugToken
UpdateDebugToken
DeleteDebugToken
データアクセス(ADMIN_READ) GetAppAttestConfig
BatchGetAppAttestConfigs
GetDeviceCheckConfig
BatchGetDeviceCheckConfigs
GetPlayIntegrityConfig
BatchGetPlayIntegrityConfigs
GetRecaptchaEnterpriseConfig
BatchGetRecaptchaEnterpriseConfigs
GetRecaptchaV3Config
BatchGetRecaptchaV3Configs
GetSafetyNetConfig
BatchGetSafetyNetConfigs
GetDebugToken
ListDebugTokens

監査ログ形式

監査ログエントリには、次のオブジェクトが含まれます。

  • LogEntryタイプのオブジェクトであるログエントリ自体。便利なフィールドは次のとおりです。

    • logNameには、リソースIDと監査ログタイプが含まれます。
    • resourceには、監査された操作のターゲットが含まれています。
    • timeStampには、監査された操作の時刻が含まれています。
    • protoPayloadには、監査された情報が含まれています。
  • ログエントリのprotoPayloadフィールドに保持されているAuditLogオブジェクトである監査ログデータ。

  • オプションのサービス固有の監査情報。これは、サービス固有のオブジェクトです。古い統合の場合、このオブジェクトはAuditLogオブジェクトのserviceDataフィールドに保持されます。新しい統合では、 metadataフィールドが使用されます。

これらのオブジェクトの他のフィールド、およびそれらの解釈方法については、 「監査ログを理解する」を確認してください。

ログ名

Cloud Audit Logsリソース名は、監査ログを所有するFirebaseプロジェクトまたはその他のGoogle Cloudエンティティと、ログに管理アクティビティ、データアクセス、ポリシー拒否、またはシステムイベント監査ログデータが含まれているかどうかを示します。たとえば、以下に、プロジェクトレベルの管理アクティビティ監査ログと組織のデータアクセス監査ログのログ名を示します。変数は、Firebaseプロジェクトと組織の識別子を示します。

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

サービス名

Firebase App Checkの監査ログでは、サービス名firebaseappcheck.googleapis.comを使用します。

すべてのCloudLoggingAPIサービス名とそれに対応する監視対象リソースタイプの完全なリストについては、「サービスをリソースにマップする」を参照してください。

リソースタイプ

Firebase App Checkの監査ログは、すべての監査ログにリソースタイプaudited_resourceを使用します。

すべてのCloudLoggingの監視対象リソースタイプと説明情報のリストについては、監視対象リソースタイプを参照してください。

監査ログを有効にする

管理アクティビティ監査ログは常に有効になっています。それらを無効にすることはできません。

データアクセス監査ログはデフォルトで無効になっており、明示的に有効にしない限り書き込まれません(例外は、BigQueryのデータアクセス監査ログであり、無効にすることはできません)。

データアクセス監査ログの一部またはすべてを有効にする手順については、データアクセスログの構成を参照してください。

権限と役割

Cloud IAMの権限と役割によって、GoogleCloudリソースの監査ログデータにアクセスする機能が決まります。

どのロギング固有の権限と役割をユースケースに適用するかを決定するときは、次のことを考慮してください。

  • Logs Viewerロール( roles/logging.viewer )を使用すると、管理アクティビティ、ポリシー拒否、およびシステムイベント監査ログへの読み取り専用アクセスが可能になります。この役割だけを持っている場合、 _Defaultバケットにあるデータアクセス監査ログを表示することはできません。

  • プライベートログビューアの役割(roles/logging.privateLogViewer )には、 roles/logging.viewerに含まれる権限に加えて、 _Defaultバケットのデータアクセス監査ログを読み取る機能が含まれています。

    これらのプライベートログがユーザー定義のバケットに保存されている場合、これらのバケットのログを読み取る権限を持つすべてのユーザーがプライベートログを読み取ることができることに注意してください。ログバケットの詳細については、ルーティングとストレージの概要を参照してください。

監査ログデータに適用されるCloudIAMのアクセス許可とロールの詳細については、「アクセス制御」を参照してください。

ログを表示する

監査ログを検索して表示するには、監査ログ情報を表示するFirebaseプロジェクト、フォルダ、または組織の識別子を知っている必要があります。 resource.typeなど、他のインデックス付きLogEntryフィールドをさらに指定できます。詳細については、 [ログエントリをすばやく検索する]を確認してください。

監査ログの名前は次のとおりです。これらには、Firebaseプロジェクト、フォルダ、または組織の識別子の変数が含まれています。

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

GCPコンソール、 gcloudコマンドラインツール、またはLogging APIを使用して、CloudLoggingで監査ログを表示できます。

コンソール

GCPコンソールのログエクスプローラーを使用して、Firebaseプロジェクト、フォルダー、または組織の監査ログエントリを取得できます。

  1. GCPコンソールで、 [Logging]>[LogsExplorer]ページに移動します。

    ログエクスプローラーページに移動します

  2. [ログエクスプローラー]ページで、既存のFirebaseプロジェクト、フォルダー、または組織を選択します。

  3. クエリビルダーペインで、次の手順を実行します。

    • [リソースの種類]で、監査ログを表示するGoogleCloudリソースを選択します。

    • [ログ名]で、表示する監査ログの種類を選択します。

      • 管理アクティビティ監査ログで、アクティビティを選択します。
      • データアクセス監査ログの場合は、 data_accessを選択します。
      • システムイベント監査ログの場合は、 system_eventを選択します。
      • [ポリシーが拒否された監査ログ]で、[ポリシー]を選択します。

    これらのオプションが表示されない場合は、Firebaseプロジェクト、フォルダ、または組織で利用できるそのタイプの監査ログはありません。

    ログエクスプローラを使用したクエリの詳細については、「ログクエリの作成」を参照してください。

gcloud

gcloudコマンドラインツールは、CloudLoggingAPIへのコマンドラインインターフェースを提供します。各ログ名に有効なPROJECT_IDFOLDER_ID 、またはORGANIZATION_IDを指定します。

Firebaseプロジェクトレベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

フォルダレベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

組織レベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

gcloudツールの使用の詳細については、「ログエントリの読み取り」を参照してください。

API

クエリを作成するときは、変数を有効な値に置き換え、適切なプロジェクトレベル、フォルダレベル、または組織レベルの監査ログ名または監査ログ名にリストされている識別子に置き換えます。たとえば、クエリにPROJECT_IDが含まれている場合、指定するプロジェクトIDは、現在選択されているFirebaseプロジェクトを参照する必要があります。

Logging APIを使用して監査ログエントリを確認するには、次の手順を実行します。

  1. entries.listメソッドのドキュメントの「このAPIを試す」セクションに移動します。

  2. [このAPIを試す]フォームのリクエスト本文の部分に以下を入力します。この事前入力されたフォームをクリックすると、リクエストの本文が自動的に入力されますが、各ログ名に有効なPROJECT_IDを指定する必要があります。

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. [実行]をクリックします。

クエリの詳細については、「クエリ言語のログ記録」を参照してください。

監査ログエントリの例とその中の最も重要な情報を見つける方法については、サンプル監査ログエントリを参照してください。

ルート監査ログ

他の種類のログをルーティングするのと同じ方法で、サポートされている宛先に監査ログをルーティングできます。監査ログをルーティングする理由は次のとおりです。

  • 監査ログを長期間保持したり、より強力な検索機能を使用したりするために、監査ログのコピーをGoogle Cloud Storage、BigQuery、またはGoogle Cloud Pub/Subにルーティングできます。 Cloud Pub / Subを使用すると、他のアプリケーション、他のリポジトリ、およびサードパーティにルーティングできます。

  • 組織全体で監査ログを管理するために、組織内の一部またはすべてのFirebaseプロジェクトからのログをルーティングできる集約シンクを作成できます。

  • 有効にしたデータアクセス監査ログがFirebaseプロジェクトをログ割り当てにプッシュしている場合は、データアクセス監査ログをログから除外するシンクを作成できます。

ログのルーティング手順については、シンクの構成を参照してください。

価格設定

管理アクティビティ監査ログシステムイベント監査ログは無料です。

データアクセス監査ログポリシー拒否監査ログは有料です。

Cloud Loggingの料金について詳しくは、 Google Cloudのオペレーションスイートの料金:CloudLoggingをご覧ください。