Cloud Audit Logs の概要

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

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

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

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

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

必要なロール

監査ログを表示するには、適切な Identity and Access Management(IAM)の権限とロールが必要です。

  • 管理者アクティビティ、ポリシー拒否、システム イベントの監査ログへの読み取り専用アクセスに必要な権限を取得するには、プロジェクトに対するログ閲覧者roles/logging.viewer)の IAM ロール付与するように管理者に依頼してください。

    ログ閲覧者のロール (roles/logging.viewer) しか持っていない場合、_Default バケット内のデータアクセス監査ログを閲覧することはできません。

  • データアクセス ログを含む、_Required バケットと _Default バケットのすべてのログへのアクセス権を取得するために必要な権限を取得するには、プロジェクトに対するプライベート ログ閲覧者roles/logging.privateLogViewer)の IAM ロール付与するように管理者に依頼してください。

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

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

監査ログの種類

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

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

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

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

管理アクティビティ監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。

データアクセス監査ログ

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

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

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

データアクセス監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。

データアクセス監査ログは、別の場所に転送しない限り _Default ログバケットに保存されます。詳細については、このページの監査ログの保存とルーティングをご覧ください。

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

システム イベント監査ログには、リソースの構成を変更する Google Cloud アクションのログエントリが含まれます。システム イベント監査ログは Google Cloud システムによって生成されます。直接的なユーザーのアクションによって生成されることはありません。

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

システム イベント監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。

ポリシー拒否監査ログ

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

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

ポリシー拒否監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。

監査ログエントリの構造

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

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

ログ名

Cloud Audit Logs のログ名は次のとおりです。

  • 監査ログを所有する Google Cloud プロジェクトまたは他の Google Cloud エンティティを示すリソース識別子。

  • 文字 cloudaudit.googleapis.com

  • ログに管理アクティビティ、データアクセス、ポリシー拒否、システム イベントの監査ロギングデータが含まれているかどうかを示す文字列。

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

   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 サービスには、上記の条件に加えて以下が適用されます。

  • 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 に置き換えられます。

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

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

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

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

監査ログの表示

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

ログ エクスプローラでは、個々のログエントリをフィルタして表示できます。SQL を使用してログエントリのグループを分析する場合は、[ログ分析] ページを使用します。詳しくは以下をご覧ください。

ほとんどの監査ログは、Google Cloud コンソール、Google Cloud CLI、または Logging API を使用して Cloud Logging で表示できます。ただし、課金に関連する監査ログの場合は、Google Cloud CLI または Logging API のみを使用できます。

Console

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

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

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

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  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 プロジェクト、フォルダ、または組織で利用可能なその種類の監査ログは存在しないことを意味します。

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

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

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 をご覧ください。

REST

クエリを作成するときは、ログ名ごとに有効なリソース識別子を指定します。たとえば、クエリに 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 Logging では、ログデータを保存して整理するためのコンテナとしてログバケットを使用します。請求先アカウント、Google Cloud プロジェクト、フォルダ、組織ごとに、Logging によって自動的に _Required_Default という 2 つのログバケットと、対応する名前のシンクが作成されます。

Cloud Logging の _Required バケットには、管理アクティビティ監査ログとシステム イベント監査ログが保存されます。管理アクティビティまたはシステム イベントの監査ログの保存を防ぐことはできません。また、ログエントリを _Required バケットに転送するシンクを構成することもできません。

管理アクティビティ監査ログとシステム イベント監査ログは常に、ログが生成されたプロジェクトの _Required バケットに保存されます。

管理アクティビティ監査ログとシステム イベント監査ログを別のプロジェクトにルーティングすると、それらのログは、宛先プロジェクトの _Default シンクまたは _Required シンクをパススルーしません。したがって、これらのログは、宛先プロジェクトの _Default ログバケットまたは _Required ログバケットに保存されません。これらのログを保存するには、宛先プロジェクトにログシンクを作成します。詳細については、サポートされている宛先にログをルーティングするをご覧ください。

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

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

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

Google Cloud の組織、フォルダ、請求先アカウントの監査ログエントリをルーティングする場合は、組織レベルのログをサポートされている宛先に照合してルーティングするをご覧ください。

監査ログの保持期間

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

アクセス制御

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

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

割り当てと上限

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

料金

Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。

Cloud Logging では、ログのコピー、ログスコープの定義、またはログ エクスプローラまたは [ログ分析] ページを介して発行されたクエリには課金されません。

詳細については、次のドキュメントをご覧ください。

次のステップ

  • アクセスの透明性について学びます。これは、Google Cloud のスタッフがお客様の Google Cloud コンテンツにアクセスしたときに行ったアクションのログを提供します。