Cloud Audit Logs の概要

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このドキュメントでは、Cloud Audit Logs の概要について説明します。

Google Cloud サービスでは、管理アクティビティと Google Cloud リソース内のアクセスを記録する監査ログを書き込みます。監査ログは、Google Cloud リソース内でオンプレミス環境と同じレベルの透明性を確保しながら「いつ誰がどこで何をしたか」という問いに答えるために役立ちます。監査ログを有効にすると、セキュリティ、監査、コンプライアンス エンティティが Google Cloud のデータとシステムをモニタリングして、脆弱性や外部データの不正使用の可能性を確認できます。

監査ログを生成する Google サービス

監査ログを書き込む Google Cloud サービスの一覧については、監査ログ付きの Google サービスをご覧ください。最終的には、すべての Google Cloud サービスが監査ログを提供するようになります。

Google Workspace 監査ログの概要については、Google Workspace の監査ログをご覧ください。

監査ログの種類

Cloud Audit Logs では、Cloud プロジェクト、フォルダ、組織ごとに以下の監査ログが保存されます。

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

管理アクティビティ監査ログには、リソースの構成またはメタデータを変更する API 呼び出しやその他の管理アクションに関するログエントリが含まれます。これらのログは、たとえば、ユーザーが VM インスタンスを作成したときや Identity and Access Management 権限を変更したときに記録されます。

管理アクティビティ監査ログは常に書き込まれます。構成する、除外する、または無効にすることはできません。Cloud Logging API を無効にしても、管理アクティビティ監査ログは生成されます。

データアクセス監査ログ

データアクセス監査ログには、リソースの構成やメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー主導の API 呼び出しが含まれます。

Identity and Access Management ポリシー allAuthenticatedUsers または allUsers を使用する一般公開されたリソースでは、監査ログは生成されません。Google Cloud、Google Workspace、Cloud Identity、Drive Enterprise アカウントにログインせずにアクセスできるリソースでは、監査ログは生成されません。これにより、エンドユーザー ID と情報が保護されます。

監査ログはデータサイズが非常に大きくなる可能性があるため、BigQuery データアクセス監査ログを除き、データアクセス監査ログはデフォルトで無効になっています。BigQuery 以外の Google Cloud サービスのデータアクセス監査ログを書き込むには、明示的に有効にする必要があります。ログを有効にすると、追加のログ使用量についてプロジェクトに対して課金される可能性があります。データアクセス監査ログを有効にして構成する方法については、データアクセス ログを構成するをご覧ください。

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

システム イベント監査ログには、リソースの構成を変更する Google Cloud アクションのログエントリが含まれます。システム イベント監査ログは、直接的なユーザーのアクションによってではなく、Google システムによって有効化されます。

システム イベント監査ログは常に書き込まれます。構成したり、除外したり、無効にしたりすることはできません。

ポリシー拒否監査ログ

セキュリティ ポリシー違反が原因で、Google Cloud サービスがユーザーやサービス アカウントへのアクセスを拒否した場合は、ポリシー拒否監査ログが記録されます。

ポリシー拒否監査ログはデフォルトで生成され、Cloud プロジェクトにはログ ストレージの料金が発生します。ポリシー拒否監査ログを無効にすることはできませんが、除外フィルタを使用して、ポリシー拒否監査ログの取り込みと Cloud Logging への保存を防ぐことができます。

監査ログエントリの構造

Cloud Logging では、監査ログエントリはすべて LogEntry タイプのオブジェクトになります。監査ログエントリと他のログエントリを区別するのは、protoPayload フィールドです。このフィールドには、監査ロギングデータを格納する AuditLog オブジェクトが含まれています。

監査ログエントリの読み取りと解釈の方法と監査ログエントリの例については、監査ログについてをご覧ください。

ログ名

Cloud Audit Logs のログ名には、監査ログを所有する 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

監査ログの呼び出し元 ID

監査ログには、ログに記録されたオペレーションを Google Cloud リソースに対して実行した ID が記録されます。呼び出し元の ID は、AuditLog オブジェクトの AuthenticationInfo フィールドに保持されます。

監査では、成功したアクセスと書き込みオペレーションに対する呼び出し元の主要メールアドレスは秘匿化されません。

「権限が拒否されました」というエラーで失敗した読み取り専用オペレーションの場合、Audit Logging で呼び出し元の主要メールアドレスを秘匿化する必要があります(呼び出し元がサービス アカウントである場合を除く)。

特定の Google Cloud サービスには、上記の条件に加えて以下が適用されます。

  • 以前の App Engine API: ID は収集されません。

  • BigQuery: 特定の条件が満たされない限り、発信者の ID と IP アドレスに加えて、一部のリソース名が監査ログから削除されます。

  • Cloud Storage: Cloud Storage の使用状況ログが有効になっている場合、Cloud Storage は Cloud Storage バケットに使用状況データを書き込みます。これにより、バケットのデータアクセスの監査ログが生成されます。生成されたデータアクセスの監査ログには、呼び出し元の ID が含まれます。

  • Firestore:サードパーティの認証に JSON ウェブトークン(JWT)が使用された場合、thirdPartyPrincipal フィールドにはトークンのヘッダーとペイロードが含まれます。たとえば、Firebase Authentication で認証されたリクエストの監査ログには、そのリクエストの認証トークンが含まれます。

  • VPC Service Controls: ポリシー拒否監査ログの場合、次の削除が行われます。

    • 発信者のメールアドレスの一部が秘匿化されて、3 つのピリオド文字 ... に置き換えられます。

    • ドメイン google.com に属する一部の呼び出し元メールアドレスが秘匿化されて、google-internal に置き換えられます。

Google Cloud コンソールの [アクティビティ] ページを使用して監査ログを表示している場合、ID が編集された、または空のログエントリに User (anonymized) が表示されます。

監査ログ内の呼び出し元の IP アドレス

呼び出し元の IP アドレスは、AuditLog オブジェクトの RequestMetadata.caller_ip フィールドに保持されます。

  • インターネットからの呼び出し元の場合、このアドレスはパブリック IPv4 またはパブリック IPv6 アドレスです。
  • Google 内部の本番環境ネットワーク内で 1 つの Google Cloud サービスから他の Google Cloud サービスに対して行われた呼び出しの場合、caller_ip は「private」に秘匿化されます。
  • 外部 IP アドレスを持つ Compute Engine VM からの呼び出し元の場合、caller_ip は VM の外部アドレスです。
  • 外部 IP アドレスのない Compute Engine VM からの呼び出し元の場合、VM がアクセス先のリソースと同じ組織またはプロジェクトにあると、caller_ip は VM の内部 IPv4 アドレスです。それ以外の場合、caller_ip は「gce-internal-ip」に秘匿化されます。詳細については、VPC ネットワークの概要をご覧ください。

監査ログの表示

監査ログのクエリを実行するには、監査ログ名が必要です。この名前には、Cloud プロジェクト、フォルダ、請求先アカウント、または監査ロギング情報を表示する組織のリソース識別子が含まれています。クエリでは、resource.type などの他のインデックス付き LogEntry フィールドをさらに指定できます。クエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。

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

コンソール

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

  1. Google Cloud コンソールで、[ロギング] > [ログ エクスプローラ] ページに移動します。

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

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

  3. [クエリビルダー] ペインで、次の操作を行います。

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

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

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

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

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

    ログ エクスプローラを使用したクエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。

gcloud

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

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 は、現在選択された 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 プロジェクト フォルダまたは Google Cloud コンソールの組織の [アクティビティ] ページで、短縮された監査ログエントリを表示できます。実際の監査ログエントリには、[アクティビティ] ページに表示される情報よりも多くの情報が含まれている場合があります。

Google Cloud コンソールで短縮された監査ログエントリを表示する手順は次のとおりです。

  1. [アクティビティ] ページに移動

    [アクティビティ] ページに移動

  2. プロジェクト セレクタで、表示する監査ログエントリの Cloud プロジェクト フォルダまたは組織を選択します。

  3. [フィルタ] パネルで、表示するエントリを選択します。

[アクティビティ] ページでは、ログに記録された操作を実行している ID が監査ログエントリから編集されて、User (anonymized) として表示されます。詳細については、このページの監査ログの呼び出し元の ID をご覧ください。

監査ログの保存とルーティング

Cloud Logging では、ログデータを保存して整理するためのコンテナとしてログバケットを使用します。Cloud プロジェクト、フォルダ、組織ごとに、Logging によって自動的に _Required_Default という 2 つのログバケットと、対応する名前のシンクが作成されます。

Cloud Logging の _Required バケットは、管理アクティビティ監査ログとシステム イベント監査ログを取り込んで保存します。_Required バケットやバケット内のログデータは構成できません。

_Default バケットは、デフォルトで有効なデータアクセス監査ログとポリシー拒否監査ログを取り込んで保存します。データアクセス監査ログが _Default バケットに保存されないようにするには、ログを無効にします。ポリシー拒否監査ログが _Default バケットに保存されないようにするには、シンクのフィルタを変更してポリシー拒否監査ログを除外します。

監査ログエントリを、Cloud プロジェクト レベルでユーザー定義の Cloud Logging バケットにルーティングしたり、シンクを使用して Logging の外部でサポートされている宛先にルーティングしたりすることもできます。ログの転送手順については、シンクを構成して管理するをご覧ください。

ログシンクのフィルタを構成するときは、ルーティングする監査ログの種類を指定する必要があります。フィルタリング例については、セキュリティ ロギングのクエリをご覧ください。

Google Cloud の組織、フォルダ、請求先アカウントの監査ログエントリをルーティングする場合は、集約シンクを構成するをご覧ください。

監査ログの保持期間

Logging でログエントリが保持される期間の詳細については、割り当てと上限: ログの保持期間で保持情報をご覧ください。

アクセス制御

IAM の権限とロールによって、Logging APIログ エクスプローラGoogle Cloud CLI内の監査ログデータにアクセス可能かどうか判断されます。

必要となる IAM の権限とロールの詳細については、IAM によるアクセス制御をご覧ください。

割り当てと上限

監査ログの最大サイズを含む、ロギングの使用量上限について詳しくは、割り当てと上限をご覧ください。

料金

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

次のステップ