Bigtable 監査ロギングの情報

このドキュメントでは、Cloud Audit Logs の一部として Bigtable によって作成される監査ログについて説明します。

概要

Google Cloud サービスにより監査ログが書き込まれ、Google Cloud リソース内で「誰が、いつ、どこで、何をしたか」を確認できます。

Google Cloud プロジェクトで記録されるのは、その Google Cloud プロジェクト内に直接存在するリソースの監査ログのみです。フォルダ、組織、請求先アカウントなど、その他の Google Cloud リソースには、そのエンティティ自体の監査ログが記録されます。

Cloud Audit Logs の概要については、Cloud Audit Logs の概要をご覧ください。監査ログ形式の詳細については、監査ログについてをご覧ください。

利用可能な監査ログ

Bigtable では、次の種類の監査ログを使用できます。

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

    メタデータまたは構成情報を書き込む「管理書き込み」オペレーションが含まれます。

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

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

    メタデータまたは構成情報を読み取る「管理読み取り」オペレーションが含まれます。ユーザー提供データの読み取りまたは書き込みを行う「データ読み取り」オペレーションと「データ書き込み」オペレーションも含まれます。

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

  • システム イベント監査ログ

    リソースの構成を変更する自動化された Google Cloud アクションを特定します。

    システム イベント監査ログは無効にできません。

監査ログタイプの詳細については、監査ログのタイプをご覧ください。

監査対象のオペレーション

以下の表に、Bigtable の各監査ログタイプに対応する API オペレーションを示します。

管理アクティビティ監査ロギング

リソースの種類 Bigtable オペレーション ログタイプ
AppProfile CreateAppProfile ADMIN_WRITE
UpdateAppProfile ADMIN_WRITE
EnableAppProfile ADMIN_WRITE
DisableAppProfile ADMIN_WRITE
DeleteAppProfile ADMIN_WRITE
バックアップ CreateBackup ADMIN_WRITE
UpdateBackup ADMIN_WRITE
DeleteBackup ADMIN_WRITE
RestoreTable ADMIN_WRITE
SetIamPolicy ADMIN_WRITE
クラスタ CreateCluster ADMIN_WRITE
UpdateCluster ADMIN_WRITE
PartialUpdateCluster ADMIN_WRITE
DeleteCluster ADMIN_WRITE
インスタンス CreateInstance ADMIN_WRITE
UpdateInstance ADMIN_WRITE
PartialUpdateInstance ADMIN_WRITE
DeleteInstance ADMIN_WRITE
SetIamPolicy ADMIN_WRITE
テーブル CreateTable ADMIN_WRITE
DeleteTable ADMIN_WRITE
ModifyColumnFamilies ADMIN_WRITE
SetIamPolicy ADMIN_WRITE
CheckAndMutateRow ADMIN_WRITE

データアクセス監査ロギング

リソースの種類 Bigtable オペレーション ログタイプ
AppProfile
GetAppProfile ADMIN_READ
ListAppProfiles ADMIN_READ
バックアップ CreateBackup DATA_READ
GetBackup ADMIN_READ
ListBackups ADMIN_READ
GetIamPolicy ADMIN_READ
クラスタ GetCluster ADMIN_READ
ListClusters ADMIN_READ
インスタンス GetInstance ADMIN_READ
ListInstances ADMIN_READ
GetIamPolicy ADMIN_READ
テーブル ListTables ADMIN_READ
GetTable ADMIN_READ
GenerateConsistencyToken ADMIN_READ
CheckConsistency ADMIN_READ
GetIamPolicy ADMIN_READ
ReadRows DATA_READ
SampleRowKeys DATA_READ
MutateRow DATA_WRITE
MutateRows DATA_WRITE
CheckAndMutateRow DATA_READ
ReadModifyWriteRow DATA_WRITE または
DATA_READ
DropRowRange DATA_WRITE

以前に Cloud Audit Logs のデフォルト構成ですべての Google Cloud サービスのデータアクセス監査ログを有効にしている場合、Bigtable のデータアクセス監査ロギングを有効にする追加の手順が必要になる場合があります。影響を受けるユーザーには、Google Cloud コンソールの Bigtable ページの上部に通知が表示されます。

データアクセス監査ロギングに記録されるフィールドの詳細については、監査ログフィールドをご覧ください。

システム イベント監査ロギング

リソースの種類 Bigtable オペレーション
監査対象リソース AutoscaleCluster

監査ログ形式

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

  • ログエントリ自体。LogEntry タイプのオブジェクトです。よく使用されるフィールドは次のとおりです。

    • logName には、リソース ID と監査ログの種類が含まれます。
    • resource には、監査対象オペレーションのターゲットが含まれます。
    • timeStamp には、監査対象オペレーションの時間が含まれます。
    • protoPayload には、監査対象の情報が含まれます。
  • 監査ロギングデータ。ログエントリの protoPayload フィールドに保持される AuditLog オブジェクトです。

  • 任意のサービス固有の監査情報。サービス固有のオブジェクトです。前のインテグレーションでは、このオブジェクトは AuditLog オブジェクトの serviceData フィールドに保持されています。後のインテグレーションでは、metadata フィールドを使用します。

これらのオブジェクトのその他のフィールドと、その解釈方法については、監査ログについてをご覧ください。

ログ名

Cloud Audit Logs のログ名には、監査ログを所有する Google Cloud プロジェクトまたは他の Google Cloud エンティティ、およびログに管理アクティビティ、データアクセス、ポリシーの拒否、システム イベントの監査ログデータが含まれているかどうかを示すリソース識別子が含まれます。

リソース識別子の変数を含む監査ログ名は次のとおりです。

   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

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   billingAccounts/BILLING_ACCOUNT_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

サービス名

Bigtable の監査ログでは、管理オペレーションにサービス名 bigtableadmin.googleapis.com が、データ オペレーションに bigtable.googleapis.com が使用されます。

すべての Cloud Logging API サービス名とそれに対応するモニタリング対象リソースタイプの一覧については、サービスとリソースのマッピングをご覧ください。

リソースタイプ

Bigtable の監査ログでは、次のリソースタイプが使用されます。

  • bigtable_instance
  • bigtable_cluster
  • bigtable_table
  • bigtable_backup

また、IAM オペレーションの場合は、監査ログでリソースタイプ audited_resource が使用されます。

Cloud Logging でモニタリングされるすべてのリソースタイプのリストと記述情報については、モニタリング対象リソースタイプをご覧ください。

呼び出し元の ID

呼び出し元の IP アドレスは、AuditLog オブジェクトの RequestMetadata.caller_ip フィールドに保持されます。Logging は、特定の呼び出し元の ID と IP アドレスを秘匿化する場合があります。

監査ログで秘匿化される情報については、監査ログの呼び出し元の ID をご覧ください。

監査ロギングの有効化

システム イベント監査ログは常に有効になっています。無効にすることはできません。

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

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

データアクセス監査ログの一部またはすべてを有効にする方法については、データアクセス監査ログを有効にするをご覧ください。

権限とロール

IAM の権限とロールにより、Google Cloud リソース内の監査ログデータにアクセス可能かどうか判断されます。

ユースケースに適用する Logging 固有の権限とロールを決定する際は、次の点を考慮してください。

  • ログ閲覧者のロール(roles/logging.viewer)は、管理アクティビティ、ポリシー拒否、システム イベントの監査ログに対する読み取り専用権限を付与します。このロールしかない場合は、_Default バケット内のデータアクセス監査ログを閲覧できません。

  • プライベート ログ閲覧者のロール((roles/logging.privateLogViewer)には、roles/logging.viewer に含まれる権限に加えて、_Default バケット内のデータアクセス監査ログの読み取り権限が含まれます。

    これらのプライベート ログがユーザー定義バケットに保存されている場合、それらのバケット内のログを読み取る権限を持つユーザーは、プライベート ログを読み取ることができます。ログバケットの詳細については、転送とストレージの概要をご覧ください。

監査ログデータに適用される IAM の権限とロールの詳細については、IAM を使用したアクセス制御をご覧ください。

ログを表示

すべての監査ログに対してクエリを実行することも、監査ログ名でログをクエリすることもできます。監査ログ名には、Google Cloud プロジェクト、フォルダ、請求先アカウント、または監査ロギング情報を表示する組織のリソース識別子が含まれています。クエリでは、インデックス付きの LogEntry フィールドを指定できます。SQL クエリをサポートする [ログ分析] ページを使用する場合は、クエリ結果をグラフとして表示できます。

ログのクエリの詳細については、次のページをご覧ください。

Google Cloud コンソール、Google Cloud CLI、または Logging API を使用して、Cloud Logging で監査ログを表示できます。

コンソール

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

  1. Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

    [ログ エクスプローラ] に移動

  2. 既存の Google Cloud プロジェクト、フォルダ、または組織を選択します。

  3. すべての監査ログを表示するには、次のいずれかのクエリを [クエリエディタ] フィールドに入力し、[クエリを実行] をクリックします。

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. 特定のリソースと監査ログタイプの監査ログを表示するには、[クエリビルダー] ペインで次の操作を行います。

    • リソースタイプに、表示する監査ログを含む Google Cloud リソースを選択します。

    • [ログ名] で、表示する監査ログタイプを選択します。

      • 管理アクティビティ監査ログの場合は、[activity] を選択します。
      • データアクセス監査ログの場合は、[data_access] を選択します。
      • システム イベント監査ログの場合は、[system_event] を選択します。
      • ポリシー拒否監査ログの場合は、[policy] を選択します。
    • [クエリを実行] をクリックします。

    これらのオプションが表示されない場合、Google Cloud プロジェクト、フォルダ、または組織で利用可能なその種類の監査ログは存在しないことを意味します。

    ログ エクスプローラでログを表示する際に問題が発生した場合は、トラブルシューティングの情報をご覧ください。

    ログ エクスプローラを使用したクエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。 ログ エクスプローラで Gemini を使用してログエントリを要約する方法については、Gemini のアシスト機能を使用してログエントリを要約するをご覧ください。

gcloud

Google Cloud CLI は、Logging API へのコマンドライン インターフェースを提供します。ログ名ごとに有効なリソース識別子を指定します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト ID は、現在選択された Google Cloud プロジェクトを参照している必要があります。

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

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

Cloud 請求先アカウント レベルの監査ログエントリを読み取るには、次のコマンドを実行します。

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

1 日以上経過したログを読み取るには、コマンドに --freshness フラグを追加します。

gcloud CLI の使用方法に関する詳細については、gcloud logging read をご覧ください。

API

クエリを作成するときは、ログ名ごとに有効なリソース識別子を指定します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト ID は、現在選択された Google Cloud プロジェクトを参照している必要があります。

たとえば、Logging API を使用してプロジェクト レベルの監査ログエントリを表示する手順は次のとおりです。

  1. entries.list メソッドのドキュメント内の [Try this API] セクションに移動します。

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

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

監査ログの転送

他の種類のログと同様に、サポートされている宛先に監査ログを転送できます。監査ログを転送する理由を以下に示します。

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

  • 組織全体の監査ログを管理するには、組織内の一部またはすべての Google Cloud プロジェクトからログを転送できる集約シンクを作成します。

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

ログの転送手順については、サポートされている宛先にログを転送するをご覧ください。

料金

料金の詳細については、Cloud Logging の料金概要をご覧ください。

監査ログエントリの分割

ログエントリがサイズの上限を超えると、Cloud Logging がそのエントリを分割し、データを複数のエントリに分散します。分割された監査ログを特定して再構成する方法については、監査ログエントリの分割をご覧ください。

費用の管理

Bigtable は通常、大規模で大量のワークロードに使用されます。このため、ログのボリュームを管理しないと、Bigtable は過剰な量の DATA_READ ログと DATA_WRITE ログを生成し、ログストレージの費用が予期せず高額になることがあります。データアクセス監査ロギングを使用する場合は、ログボリュームを管理する必要があります。

Bigtable 認証のベスト プラクティスに従うと、ほとんどのデータアクセス監査ログ アクティビティはサービス アカウントによって生成されます。サービス アカウントは、アプリケーションが Bigtable などの Google Cloud サービスを認証して API 呼び出しを行うために使用するアカウントです。ログのボリュームを減らす最も重要なステップは、サービス アカウント ログの管理です。他の基準でログを制限することもできます。

Bigtable のデータアクセス監査ロギングは次の方法で有効にできます。

監査ロギングを有効にした後に、ログボリュームを制限する手順は次のとおりです。

サービス アカウントを特定する

まず、ログを必要としないサービス アカウントを特定します。有効でなく、ログに記録する必要のないサービス アカウントは、アプリケーションやビジネスの要件によって異なります。Cloud Bigtable API (Data API)の権限を持つサービス アカウントのリストを取得するには、組織の IAM ポリシーを検索します。これは、Google Cloud コンソールの [IAM 権限] ページの [プリンシパル] タブでも確認できます。

ログの制限を設定する

次に、ログの制限を設定します。サービス アカウントのログを制限して Bigtable のログボリュームを管理するには、次の 2 つの方法があります。監査構成を使用してサービス アカウントを除外するか、ログ除外フィルタを使用してサービス アカウント ログを除外できます。それぞれの方法で、Cloud Logging API または Google Cloud Console を使用できます。

監査構成を使用してサービス アカウントを除外する

監査構成を使用してサービス アカウントを除外すると、特定のログの生成を防止できるので、これは推奨のアプローチとなります。詳細な手順については、以下をご覧ください。

除外フィルタを使用してサービス アカウントを除外する

除外フィルタを使用すると、ログバケットへの取り込みから除外するログを指定できます。このアプローチでは、ログは作成後に破棄されるため、データを処理する Bigtable サービス コンポーネントに負荷がかかります。この負荷のため、監査構成を使用することをおすすめします。Google Cloud コンソールと API を使用したフィルタ設定の詳細については、シンクの作成をご覧ください。