Cloud Audit Logs

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

Cloud 監査ログは、セキュリティ、監査、コンプライアンス エンティティが Google Cloud の監査証跡を維持するのに役立ちます。Cloud 監査ログを利用すると、企業は Google Cloud のデータに対する管理アクティビティとアクセスに、オンプレミス環境と同レベルの透明性を与えることができます。 監査ログは、Google Cloud サポートチームがアカウントの問題をトラブルシューティングするのに役立ちます。

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

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

監査ログの種類

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 Logging に提供する VPC Service Controls によって決定されます。

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

監査ログエントリの構造

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

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

監査ログの呼び出し元 ID

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

オペレーションが読み取り専用で「アクセスが拒否されました」というエラーで失敗した場合、呼び出し元の主要メールアドレスは監査ログから削除されます。唯一の例外は、呼び出し元がリソースに関連付けられた Google Cloud 組織のメンバーであるサービス アカウントである場合、メールアドレスは削除されないことです。

特定の Google Cloud プロダクトには、上記の条件に加えて以下が適用されます。

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

監査ログの表示

監査ログを検索して表示するには、監査ログ情報を表示する対象の Cloud プロジェクト、フォルダ、または組織の識別子を把握している必要があります。resource.type などの他のインデックス付き LogEntry フィールドをさらに指定できます。詳しくは、ログエントリの迅速な検索をご覧ください。

監査ログ名は次のようになります。名前には、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

   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

監査ログエントリを表示する方法はいくつかあります。

Console

Cloud Console のログ エクスプローラを使用して、監査ログエントリを取得できます。

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

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

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

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

    • [リソースタイプ] で、監査ログを表示する対象の Google Cloud リソースを選択します。

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

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

    これらのオプションが表示されない場合、Cloud プロジェクトにそのタイプの監査ログが存在しないことを意味します。

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

gcloud

gcloud コマンドライン ツールは、Cloud Logging API へのコマンドライン インターフェースを提供します。それぞれのログ名の中で有効な PROJECT_IDFOLDER_ID または ORGANIZATION_ID を指定します。

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

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

API

クエリを作成する場合は、変数を有効な値に置き換え、適切なプロジェクトレベル、フォルダレベル、または監査ログ名に表示されている組織レベルの監査ログ名か ID を代わりに使用します。たとえば、クエリに 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. [実行] をクリックします。

クエリの詳細については、Logging のクエリ言語をご覧ください。

監査ログエントリの例と、その中に記録されている最も重要な情報を見つける方法については、監査ログエントリの例をご覧ください。

アクティビティ ページを使用する

Google Cloud プロジェクトまたは組織の Cloud Console の [アクティビティ] ページで、短縮された監査ログエントリを表示できます。実際の監査ログエントリには、[アクティビティ] ページに表示される情報よりも多くの情報が含まれている場合があります。

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

  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ログ エクスプローラgcloud コマンドライン ツールでログデータにアクセス可能かどうか判断されます。

リソース メンバーの監査ログのユースケースに適用する権限とロールを決定するときは、次の点を考慮してください。

  • roles/logging.viewer(ログビューア)は、プライベート ログエントリであるアクセスの透明性ログとデータアクセス監査ログ以外のすべての Logging 機能に対する読み取り専用権限を付与します。

  • roles/logging.privateLogViewer(プライベート ログビューア)には、roles/logging.viewer に加え、プライベート ログエントリ(アクセスの透明性ログとデータアクセス監査ログ)の読み取り権限があります。

プライベート ログエントリがユーザー定義のバケットにルーティングされた場合、そのバケットの読み取り権限を持つリソース メンバーはログエントリを表示できます。

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

割り当てと上限

監査ログに使用できる最大サイズは下表のとおりです。これらの値は、ルーティング先に必要な容量を見積もるのに役立ちます。

監査ログ 最大サイズ
管理アクティビティ 512 KiB
データアクセス 512 KiB
システム イベント 512 KiB
ポリシー拒否 512 KiB

その他のロギングの使用量上限について詳しくは、割り当てと上限をご覧ください。

料金

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

データアクセス監査ログとポリシー拒否監査ログは課金対象です。

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

次のステップ