このページでは、Cloud 監査ログの一部として Cloud Search によって作成される監査ログについて説明します。
概要
Google Cloud サービスは、リソース内で「誰がいつどこで何をしたか」の確認に役立つ監査ログを記録します。Cloud プロジェクトで記録されるのは、そのプロジェクト内に直接存在するリソースの監査ログのみです。フォルダ、組織、Cloud 請求先アカウントなどの他のエンティティでは、そのエンティティ自体の監査ログが記録されます。
Cloud Audit Logs の概要については、Cloud Audit Logs をご覧ください。Cloud Audit Logs の詳細については、監査ログについてをご覧ください。
Cloud Audit Logs では、Cloud プロジェクト、フォルダ、組織ごとに以下の監査ログが保存されます。
- 管理書き込みオペレーションを実行するメソッドに対応するエントリを含む管理アクティビティ監査ログ。Admin Activity:Admin 書き込みオペレーションに対応するメソッドについては、後述の監査対象のオペレーションのセクションで説明します。
- 管理読み取り、データ書き込み、データ読み取りオペレーションを実行するメソッドに対応するエントリを含むデータアクセス監査ログ。Data Access:Admin read、Data Access:Data write、Data Access:Data read オペレーションに対応するメソッドについては、後述の監査対象のオペレーションのセクションで説明します。
- システム イベント監査ログ
- ポリシー拒否監査ログ
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 の監査ロギングを有効にするには:
(省略可)ログを保存する Google Cloud Platform プロジェクトを作成していない場合は、Google Cloud Search API へのアクセスを構成するをご覧ください。
ログを保存する Google Cloud のプロジェクト ID を取得します。プロジェクト ID を取得する方法については、プロジェクトの識別をご覧ください。
特定の API の監査ロギングを有効にするには、有効にするログカテゴリを決定する必要があります。API とその対応するカテゴリについては、このドキュメントの前半の監査対象のオペレーションをご覧ください。
updateCustomer()
REST API メソッドを使用して、有効にするログカテゴリで auditLogSettings を更新します。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
次の 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 です。CATEGORY1
、CATEGORY2
、…
は、手順 3 で有効に選択したカテゴリです。有効な値はlogAdminReadActions
、logDataWriteActions
、logDataReadActions
です。管理者の書き込みアクションはデフォルトで有効になっており、無効にすることはできません。クエリ メソッドの監査ロギングを有効にするには、データ読み取りカテゴリを有効にする必要があります。
AuditLoggingSettings
を更新すると、Cloud Search API への以降のリクエストで、AuditLoggingSettings
で指定されたプロジェクト ID に監査ログが生成されます。クエリメソッドの監査ロギングでは、データ読み取りカテゴリを有効にする必要があります(手順 4 で実施)。クエリ方法(
query.sources.list
、query.suggest
、query.search
)の監査ロギングを有効にするには、次の追加手順を行います。監査ロギングを有効にする検索アプリケーションごとに、名前を取得します。名前は
searchapplications/<search_application_id>
の形式にする必要があります。名前を使用して、
enableAuditLog
をtrue
に設定してsettings.searchapplications.update
を呼び出します。
cloudsearch.google.com
からの呼び出しの監査ロギングを有効にするには、データ読み取りカテゴリが有効になっていることを確認します(ステップ 4)。また、name
をsearchapplications/default
にしてステップ 5b を実行します。
有効にすると、ログは Google Cloud コンソールの [ログ エクスプローラ] セクションで確認できます。次のフィルタを使用して、Cloud Search の監査ログのみを表示します。
protoPayload.serviceName="cloudsearch.googleapis.com"
ログの表示方法については、ログ エクスプローラの概要をご覧ください。
監査ログに関する権限
どの監査ログを表示またはエクスポートできるかは、Identity and Access Management の権限とロールによって決まります。ログは、Cloud プロジェクトの中、および組織、フォルダ、Cloud 請求先アカウントなど他のいくつかのエンティティの中に存在します。詳しくは、ロールについてをご覧ください。
管理アクティビティ監査ログを表示するには、その監査ログが存在するプロジェクト内で次のいずれかの IAM ロールを持っている必要があります。
- プロジェクト オーナー、プロジェクト編集者、またはプロジェクト閲覧者
- Logging のログ閲覧者ロール
logging.logEntries.list
IAM 権限を持つカスタム IAM ロール
データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかのロールを持っている必要があります。
- プロジェクト オーナー
- Logging のプライベート ログ閲覧者ロール
logging.privateLogEntries.list
IAM 権限を持つカスタム 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 プロジェクトの監査ログエントリを取得できます。
Cloud Console で、[ロギング] > [ログ エクスプローラ] ページに移動します。
[ログ エクスプローラ] ページで、既存の Cloud プロジェクトを選択します。
[クエリビルダー] ペインで、次の操作を行います。
[リソース] で、監査ログを表示する対象の Google Cloud リソースタイプを選択します。
[ログ名] で、表示する監査ログタイプを選択します。
- 管理アクティビティ監査ログの場合は、[activity] を選択します。
- データアクセス監査ログの場合は、[data_access] を選択します。
- システム イベント監査ログの場合は、[system_event] を選択します。
- ポリシー拒否監査ログの場合は、[policy] を選択します。
これらのオプションが表示されない場合、Cloud プロジェクトにそのタイプの監査ログが存在しないことを意味します。
新しいログ エクスプローラを使用したクエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。
gcloud
gcloud は、Logging API へのコマンドライン インターフェースを提供します。それぞれのログ名の中で有効な PROJECT_ID
、FOLDER_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 を使用して監査ログエントリを確認する手順は次のとおりです。
entries.list
メソッドのドキュメント内の [Try this API] セクションに移動します。[Try this API] フォームのリクエストの本文に、次のコードを入力します。この事前入力されたフォームをクリックすると、リクエストの本文が自動的に入力されますが、それぞれのログ名に有効な
PROJECT_ID
を指定する必要があります。{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
[実行] をクリックします。
クエリの詳細については、ロギングクエリ言語をご覧ください。
監査ログエントリのサンプルと、その中にある特に重要な情報を見つける方法については、監査ログについてをご覧ください。
監査ログのエクスポート
監査ログは、他の種類のログをエクスポートする場合と同じ方法でエクスポートできます。ログのエクスポート方法の詳細については、ログのエクスポートをご覧ください。監査ログのエクスポートに関する応用例の一部を以下に示します。
監査ログを長期間保持する、またはより強力な検索機能を使用するには、監査ログのコピーを 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()
呼び出しの場合、リクエストに記録されるのはQuery
、RequestOptions
、DataSourceRestriction
のみです。レスポンスでは、各SearchResult
の URL とメタデータ(ソースとobjectType
)のみが監査されます。Cloud Search バックエンドに対して発行され、データ エクスポートに対応する呼び出しは監査されません。