Cloud Audit Logs の概要 (original) (raw)

このドキュメントでは、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)の権限とロールが必要です。

監査ログデータに適用される 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 のログ名は次のとおりです。

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

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

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

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

監査ログの表示

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

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

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

コンソール

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 では、ログのコピー、ログスコープまたは分析ビューの作成、ログ エクスプローラまたはログ分析ページを介して発行されたクエリには課金されません。

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

次のステップ