監査ロギング

このページでは、Cloud 監査ログの一部として 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.create
cloudsearch.IdentitySourceService.update
cloudsearch.IdentitySourceService.delete
データアクセス: 管理者読み取り 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.session.searchapplications.get
stats.user.search applications.get
debug.identitysources.items.listForunmappedidentity
debug.identitysources.unmappedids.list
debug.datasources.items.unmappedids.list
query.sources.list
query.suggest
query.search
stats.getSearchapplication

監査ログ形式

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

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

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

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

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

ログ名

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

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 ロールを持っている必要があります。

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

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

ログを表示

監査ログを検索して表示するには、監査ロギング情報を表示する対象の 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 のログ エクスプローラを使用して、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 が含まれている場合、指定するプロジェクト識別子は、現在選択されている 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 では、無効にできない監査ログ(すべての管理アクティビティ監査ログを含む)は無料です。明示的にリクエストしたデータアクセス監査ログについては課金されます。

監査ログの料金の詳細については、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 バックエンドに発行され、データ エクスポートに対応する呼び出しは監査されません。