監査ロギング

このページでは、Cloud Audit Logs の一部として Cloud Search によって作成される監査ログについて説明します。

概要

Google Cloud サービスにより監査ログが書き込まれ、リソース内で「誰が、いつ、どこで、何をしたか」の確認に役立ちます。Cloud プロジェクトで記録されるのは、そのプロジェクト内に直接存在するリソースの監査ログのみです。フォルダ、組織、Cloud 請求先アカウントなどの他のエンティティには、そのエンティティ自体の監査ログが記録されます。

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

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

  • 管理アクティビティ監査ログには、管理書き込みオペレーションを実行するメソッドに対応するエントリが含まれます。管理アクティビティ:管理書き込みオペレーションに対応するメソッドについては、この後の監査対象オペレーションで説明します。
  • 管理読み取り、データ書き込み、データ読み取りの各オペレーションを実行するメソッドに対応するエントリを含むデータアクセス監査ログ。データアクセス:管理読み取り、データアクセス:データ書き込み、データアクセス:データ読み取りオペレーションに対応するメソッドについては、この後の監査対象オペレーションで説明します。
  • システム イベント監査ログ
  • ポリシー拒否監査ログ

Cloud Search は管理アクティビティ監査ログを書き込みます。このログには、リソースの構成やメタデータを変更するオペレーションが記録されます。管理アクティビティ監査ログは無効にできません。

Cloud Search では、明示的に有効にした場合に限り、データアクセス監査ログが書き込まれます。データアクセス監査ログには、リソースの構成またはメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー主導の API 呼び出しが含まれます。

Cloud Search では、システム イベント監査ログは書き込まれません。

Cloud Search では、ポリシー拒否監査ログは書き込まれません。

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

次の表は、Cloud Search の各監査ログタイプに対応する API オペレーションをまとめたものです。

監査ログのカテゴリ Cloud Search のオペレーション
管理アクティビティ: 管理書き込み Indexing.datasources.updateSchema
indexing.datasources.deleteSchema
settings.datasources.create
settings.datasources.delete
settings.datasources.update
settings.searchapplications.create
settings.searchapplications.delete
settings.searchapplications.reset
settings.searchapplications.update
settings.updateCustomer
cloudsearch.IdentitySourceService.update
cloudsearch.searchIdentitySourceService.update
データアクセス: 管理読み取り indexing.datasources.getSchema
settings.datasources.get
settings.datasources.list
settings.searchapplications.get
settings.searchapplications.list
settings.getCustomer
cloudsearch.IdentitySourceService.get
cloudsearch.IdentitySourceService.list
データアクセス: データ書き込み indexing.datasources.items.delete
indexing.datasources.items.deleteQueueItems
indexing.datasources.items.index
indexing.datasources.items.poll
indexing.datasources.items.push
indexing.datasources.items.unreserve
indexing.datasources.items.upload
media.upload
データアクセス: データ読み取り Indexing.datasources.items.get
indexing.datasources.items.list
operations.get
operations.list
debug.datasources.items.checkAccess
debug.datasources.items.searchByViewUrl
stats.getIndex
stats.getQuery
stats.getSession
stats.getUser
stats.index.datasources.get
stats.query.searchapplications.get
stats.query.searchapplications.list







監査ログ形式

Cloud Logging でログ エクスプローラ、Cloud Logging API、または gcloud コマンドライン ツールを使用して表示できる監査ログエントリには、次のオブジェクトが含まれます。

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

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

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

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

ログ名

Cloud Audit Logs のリソース名は、監査ログを所有する Cloud プロジェクトまたは他の Google Cloud エンティティを表します。この名前を見ると、ログに管理アクティビティ、データアクセス、ポリシー拒否、システム イベントの監査ロギングデータが含まれているかどうかがわかります。たとえば、次のログ名はプロジェクト レベルの管理アクティビティ監査ログと組織のデータアクセス監査ログを表しています。変数は、プロジェクトと組織の ID を表します。

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

サービス名

Cloud Search の監査ログでは、サービス名 cloudsearch.googleapis.com が使用されます。

リソースタイプ

Cloud Search の監査ログでは、すべての監査ログにリソースタイプ audited_resource が使用されます。

他のリソースタイプの一覧については、モニタリング対象リソースタイプをご覧ください。

監査ロギングの有効化

デフォルトでは、Cloud Search API の監査ロギングは無効になっています。Google Cloud Search の監査ロギングを有効にするには:

  1. (省略可)ログを保存する Google Cloud Platform プロジェクトを作成していない場合は、Google Cloud Search API へのアクセスを構成するをご覧ください。

  2. ログを保存する Google Cloud のプロジェクト ID を取得します。プロジェクト ID を取得する方法については、プロジェクトの識別をご覧ください。

  3. 特定の API の監査ロギングを有効にするには、有効にするログカテゴリを決定する必要があります。API とそれに対応するカテゴリについては、このドキュメントで前述した監査対象オペレーションをご覧ください。

  4. updateCustomer() REST API メソッドを使用して、監査ログカテゴリで auditLogSettings を更新し、以下の設定を有効にします。

    1. Google 承認サーバーから OAuth 2.0 アクセス トークンを取得します。トークンの取得については、OAuth 2.0 を使用した Google API へのアクセスのステップ 2 をご覧ください。アクセス トークンを取得する際に、次のいずれかの OAuth スコープを使用します。

      • https://www.googleapis.com/auth/cloud_search.settings.indexing
      • https://www.googleapis.com/auth/cloud_search.settings
      • https://www.googleapis.com/auth/cloud_search
    2. 次の curl コマンドを実行します。

    curl --request PATCH \
    'https://cloudsearch.googleapis.com/v1/settings/customer?updateMask=auditLoggingSettings&key=[YOUR_API_KEY]' \
    --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
    --header 'Content-Type: application/json' \
    --data '{"auditLoggingSettings": { "project": "projects/PROJECT_ID", "CATEGORY1": "true", "CATEGORY2": "true" } }'
    

    ここで

    • YOUR_ACCESS_TOKEN は、手順 4a で取得した OAuth 2.0 アクセス トークンです。
    • PROJECT_ID は、手順 2 で取得したプロジェクト ID です。
    • CATEGORY1CATEGORY2 は、手順 3 で有効にしたカテゴリです。有効な値は logAdminReadActionslogDataWriteActionslogDataReadActions です。管理者書き込みアクションはデフォルトで有効になっており、無効にすることはできません。クエリメソッドの監査ロギングが必要な場合は、データ読み取りカテゴリを有効にする必要があります。

    AuditLoggingSettings を更新した後、Cloud Search API にさらにリクエストを行うと、AuditLoggingSettings で指定されたプロジェクト ID の監査ログが生成されます。

  5. クエリメソッドの監査ロギングでは、データ読み取りカテゴリを有効にする必要があります(ステップ 4 で)。クエリメソッド(query.sources.listquery.suggestquery.search)の監査ロギングを有効にするには、次の操作を行います。

    1. 監査ロギングを有効にする検索アプリケーションごとに、名前を取得します。名前は searchapplications/<search_application_id> の形式にする必要があります。

    2. 名前を使用して、enableAuditLogtrue に設定し、settings.searchapplications.update を呼び出します。

  6. cloudsearch.google.com からの呼び出しの監査ロギングを有効にするには、データ読み取りカテゴリが有効になっていることを確認します(ステップ 4)。さらに、namesearchapplications/default にしてステップ 5b を実行します。

有効にすると、Google Cloud コンソールの [ログ エクスプローラ] セクションでログを表示できます。次のフィルタを使用して、Cloud Search の監査ログのみを表示します。

protoPayload.serviceName="cloudsearch.googleapis.com"

ログの表示方法については、ログ エクスプローラの概要をご覧ください。

監査ログに関する権限

Identity and Access Management の権限とロールにより、表示またはエクスポートできる監査ログが決まります。ログは、Cloud プロジェクトの中、および組織、フォルダ、Cloud 請求先アカウントなど他のいくつかのエンティティの中に存在します。詳細については、ロールについてをご覧ください。

管理アクティビティ監査ログを表示するには、その監査ログが存在するプロジェクト内に次のいずれかの IAM ロールが必要です。

  • プロジェクト オーナー、プロジェクト編集者、またはプロジェクト閲覧者
  • Logging ログ閲覧者ロール
  • logging.logEntries.list IAM 権限を持つカスタム IAM ロール

データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかのロールを持っている必要があります。

組織などのプロジェクト以外のエンティティからの監査ログを使用する場合は、Cloud プロジェクト ロールを適切な組織ロールに変更します。

ログの表示

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

監査ログ名は次のとおりです。名前には、Cloud プロジェクト、フォルダ、または組織の ID の変数が含まれています。

   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

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

コンソール

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

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

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

  2. [ログ エクスプローラ] ページで、既存の Cloud プロジェクトを選択します。

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

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

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

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

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

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

gcloud

gcloud は、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 ツールの使用方法の詳細については、gcloud logging read をご覧ください。

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. [実行] をクリックします。

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

監査ログエントリのサンプルと、その中にある特に重要な情報を見つける方法については、監査ログについてをご覧ください。

監査ログのエクスポート

監査ログは、他の種類のログをエクスポートする場合と同じ方法でエクスポートできます。ログをエクスポートする方法の詳細については、ログのエクスポートをご覧ください。監査ログのエクスポートに関する応用例の一部を以下に示します。

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

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

  • 有効にしたデータアクセス監査ログが原因で Cloud プロジェクト数がログ割り当てを超過している場合は、データアクセス監査ログをエクスポートして Logging から除外できます。詳細については、ログの除外をご覧ください。

料金と維持

Cloud Logging では、無効にできない監査ログ(すべての管理アクティビティ監査ログを含む)は無料です。明示的にリクエストしたデータアクセス監査ログについては、Cloud Logging の料金が発生します。

監査ログの料金の詳細については、Google Cloud のオペレーション スイートの料金をご覧ください。

Cloud Search の監査ログに関連する保存期間は次のとおりです。

  • 管理アクティビティ ログ(管理書き込み)- 400 日間保持されます。
  • データアクセス ログ(管理読み取り、データ書き込み、データ読み取り)- これらのログは 30 日間保持されます。

保存期間の詳細については、ログの保持期間をご覧ください。

現在の制限事項

Cloud Search の監査ロギングには、現在のところ次のような制限があります。

  • ログエントリのサイズは 512 KB 未満である必要があります。サイズが 512 KB を超えると、レスポンスはログエントリから削除されます。それでもサイズが 512 KB 以下に減らなければ、リクエストは破棄されます。最後に、サイズが 512 KB を超えると、ログエントリは破棄されます。

  • list()get()suggest() メソッドのレスポンス本文はログに記録されません。ただし、レスポンスのステータスは表示されます。

  • cloudsearch.google.com(有効な場合)からの Query API 呼び出しと顧客の検索アプリケーションのみがログに記録されます。

  • search() 呼び出しの場合、QueryRequestOptionsDataSourceRestriction のみがリクエストに記録されます。レスポンスでは、各 SearchResult の URL とメタデータ(ソースと objectType)のみが監査されます。

  • Cloud Search バックエンドに対して発行され、データ エクスポートに対応する呼び出しは監査されません。