このページでは、クラウド監査ログの一部として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プロジェクト、フォルダー、または組織の監査ログエントリを取得できます。
GCPコンソールで、 [Logging]>[LogsExplorer]ページに移動します。
[ログエクスプローラー]ページで、既存のFirebaseプロジェクト、フォルダー、または組織を選択します。
クエリビルダーペインで、次の手順を実行します。
[リソースの種類]で、監査ログを表示するGoogleCloudリソースを選択します。
[ログ名]で、表示する監査ログの種類を選択します。
- 管理アクティビティ監査ログで、アクティビティを選択します。
- データアクセス監査ログの場合は、 data_accessを選択します。
- システムイベント監査ログの場合は、 system_eventを選択します。
- [ポリシーが拒否された監査ログ]で、[ポリシー]を選択します。
これらのオプションが表示されない場合は、Firebaseプロジェクト、フォルダ、または組織で利用できるそのタイプの監査ログはありません。
ログエクスプローラを使用したクエリの詳細については、「ログクエリの作成」を参照してください。
gcloud
gcloud
コマンドラインツールは、CloudLoggingAPIへのコマンドラインインターフェースを提供します。各ログ名に有効なPROJECT_ID
、 FOLDER_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を使用して監査ログエントリを確認するには、次の手順を実行します。
entries.list
メソッドのドキュメントの「このAPIを試す」セクションに移動します。[このAPIを試す]フォームのリクエスト本文の部分に以下を入力します。この事前入力されたフォームをクリックすると、リクエストの本文が自動的に入力されますが、各ログ名に有効な
PROJECT_ID
を指定する必要があります。{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
[実行]をクリックします。
クエリの詳細については、「クエリ言語のログ記録」を参照してください。
監査ログエントリの例とその中の最も重要な情報を見つける方法については、サンプル監査ログエントリを参照してください。
ルート監査ログ
他の種類のログをルーティングするのと同じ方法で、サポートされている宛先に監査ログをルーティングできます。監査ログをルーティングする理由は次のとおりです。
監査ログを長期間保持したり、より強力な検索機能を使用したりするために、監査ログのコピーをGoogle Cloud Storage、BigQuery、またはGoogle Cloud Pub/Subにルーティングできます。 Cloud Pub / Subを使用すると、他のアプリケーション、他のリポジトリ、およびサードパーティにルーティングできます。
組織全体で監査ログを管理するために、組織内の一部またはすべてのFirebaseプロジェクトからのログをルーティングできる集約シンクを作成できます。
- 有効にしたデータアクセス監査ログがFirebaseプロジェクトをログ割り当てにプッシュしている場合は、データアクセス監査ログをログから除外するシンクを作成できます。
ログのルーティング手順については、シンクの構成を参照してください。
価格設定
管理アクティビティ監査ログとシステムイベント監査ログは無料です。
データアクセス監査ログとポリシー拒否監査ログは有料です。
Cloud Loggingの料金について詳しくは、 Google Cloudのオペレーションスイートの料金:CloudLoggingをご覧ください。