このページでは、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 の監査ログを有効にするには:
(省略可)ログを保存する 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.indexinghttps://www.googleapis.com/auth/cloud_search.settingshttps://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 のログ閲覧者ロール
- カスタムの IAM ロール(
logging.logEntries.listIAM 権限を含む)
データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかのロールを持っている必要があります。
- プロジェクト オーナー
- Logging のプライベート ログ閲覧者ロール
- カスタムの IAM ロール(
logging.privateLogEntries.listIAM 権限を含む)
組織などのプロジェクト以外のエンティティからの監査ログを使用する場合は、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_IDgcloud ツールの使用方法の詳細については、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 バックエンドに発行され、データ エクスポートに対応する呼び出しは監査されません。