Cloud Logging で Gemini Enterprise の使用状況監査ログにアクセスする

このページでは、Gemini Enterprise の使用状況の監査ログを設定してアクセスする方法について説明します。

主なコンセプト

このセクションでは、Gemini Enterprise のオブザーバビリティに関連する主なコンセプトについて説明します。

コンセプト 説明
使用状況の監査ログ 使用状況の監査ログは、 リソース内の管理アクティビティとアクセスを記録したものです。 within your Google Cloud 誰が、いつ、どこからどのような操作を行ったかについての詳細情報が提供されます。 これらのログは セキュリティ監査、コンプライアンス、リソースの使用状況の把握に 不可欠です。

始める前に

監査ログを構成する前に、次のものがあることを確認してください。

ログに記録される情報

次の表に、Gemini Enterprise によって記録される使用状況データをまとめます。 各フィールドには、次のようにラベルが付けられています。

サービスパス ログデータ
SearchService.Search

根拠づけに使用されるソースまたは LLM 入力として使用されるソースのデータを記録します。

リクエスト:
  • query(機密)
  • user_info(部分的に機密)。次のサブフィールドのみが機密です。
    • time_zone
    • precise_location

レスポンス:
  • attribution_token(機密ではない)
  • results.id(機密ではない)
  • results.document.name(機密ではない)
AssistantService.Assist

Gemini Enterprise アシスタントからのリクエストとレスポンスを記録します。

リクエスト:
  • name(機密ではない)
  • query.text(機密)
  • query.parts(機密)

レスポンス:
  • assist_token(機密ではない)
  • answer.name(機密ではない)
  • answer.state(機密ではない)
  • answer.replies.grounded_content.text(機密)
  • answer.replies.grounded_content.text_grounding_metadata.segments(機密)
  • answer.replies.grounded_content.text_grounding_metadata.references(部分的に機密)。document_metadata.document と document_metadata.uri を除くすべてのサブフィールドが機密です。
  • answer.skipped_reasons(機密ではない)
  • agent_info.agent(機密ではない)
  • agent_info.display_name(機密)
  • agent_info.core_assistant(機密ではない)
  • agent_info.agent_kind(機密ではない)
  • agent_info.spiffe_id(機密ではない)
AssistantService.StreamAssist リクエスト:
  • name(機密ではない)
  • query.text(機密)
  • query.parts(機密)
  • agents_spec(部分的に機密)。次のサブフィールドのみが機密です。
    • agent_specs.input_variables
    • agent_specs.node_context.node_input
    • agent_specs.node_context.agent_description
    • agent_specs.node_context.node_instruction
    • agent_specs.artifact_spec.tagged_artifact_content

レスポンス:
  • assist_token(機密ではない)
  • answer.name(機密ではない)
  • answer.state(機密ではない)
  • answer.replies.grounded_content.text(機密)
  • answer.replies.grounded_content.text_grounding_metadata.segments(機密)
  • answer.replies.grounded_content.text_grounding_metadata.references(部分的に機密)。document_metadata.document と document_metadata.uri を除くすべてのサブフィールドが機密です。
  • answer.skipped_reasons(機密ではない)
  • agent_info.agent(機密ではない)
  • agent_info.display_name(機密)
  • agent_info.core_assistant(機密ではない)
  • agent_info.agent_kind(機密ではない)
  • agent_info.spiffe_id(機密ではない)
  • model_info.model(機密ではない)
  • model_info.requested_model(機密ではない)
  • model_info.model_selection_mode(機密ではない)

model_info.model は、アシスタントがターンで実行したモデルです。リクエストでモデルが固定されていない場合、model_selection_mode はMODEL_SELECTION_MODE_AUTO で、requested_model は空です。リクエストでモデルが固定されている場合、model_selection_mode はMODEL_SELECTION_MODE_EXPLICIT で、requested_model にはリクエストされたモデルが保持されます。

ターンは、別のモデルを実行する専門のエージェントに引き継ぐことができます。model_info.model は、そのエージェントのモデルを報告しません。このようなエージェントですべての作業を行うターンでは、model_info.model は空になります。

ConversationSearchService.AnswerQuery リクエスト:
  • serving_config(機密ではない)
  • query.query_id(機密ではない)
  • query.text(機密)
  • session(機密ではない)
  • user_pseudo_id(機密ではない)
  • end_user_spec(部分的に機密)。次のサブフィールドのみが機密です。
    • end_user_metadata.chunk_info.content
    • end_user_metadata.chunk_info.document_metadata.title
  • answer_generation_spec.model_spec.model_version(機密ではない)
  • answer_generation_spec.prompt_spec.preamble(機密)
  • answer_generation_spec.include_citations(機密ではない)
  • answer_generation_spec.answer_language_code(機密)
  • answer_generation_spec.ignore_adversarial_query(機密ではない)
  • answer_generation_spec.ignore_non_answer_seeking_query(機密ではない)
  • answer_generation_spec.ignore_jail_breaking_query(機密ではない)

レスポンス:
  • answer(部分的に機密)。次のサブフィールドのみが機密です。
    • answer_text
    • grounding_supports
    • references
    • blob_attachments
    • steps.actions
  • answer_query_token(機密ではない)
EngineService.CreateEngine リクエスト:
  • engine_id(機密ではない)
  • engine.name(機密ではない)
  • engine.create_time(機密ではない)
  • engine.display_name(機密ではない)
  • engine.update_time(機密ではない)
  • engine.data_store_ids(機密ではない)
  • engine.data_stores(機密ではない)

レスポンス:
  • engine_id(機密ではない)
  • engine.name(機密ではない)
  • engine.create_time(機密ではない)
  • engine.display_name(機密ではない)
  • engine.update_time(機密ではない)
  • engine.data_store_ids(機密ではない)
  • engine.data_stores(機密ではない)
EngineService.UpdateEngine リクエスト:
  • engine.name(機密ではない)
  • engine.create_time(機密ではない)
  • engine.display_name(機密ではない)
  • engine.update_time(機密ではない)
  • engine.data_store_ids(機密ではない)
  • engine.data_stores(機密ではない)
  • update_mask(機密ではない)

レスポンス:
  • engine.name(機密ではない)
  • engine.create_time(機密ではない)
  • engine.display_name(機密ではない)
  • engine.update_time(機密ではない)
  • engine.data_store_ids(機密ではない)
  • engine.data_stores(機密ではない)
AgentService.SetIamPolicy リクエスト:
  • policy.bindings.roles(機密ではない)
  • policy.bindings.members(機密ではない)

レスポンス:
  • policy.bindings.roles(機密ではない)
  • policy.bindings.members(機密ではない)
AgentService.CreateAgent リクエスト:
  • parent(機密ではない)
  • agent_id(機密ではない)
  • agent.name(機密ではない)
  • agent.display_name(機密)
  • agent.create_time(機密ではない)
  • agent.update_time(機密ではない)
  • agent.definition_case(機密ではない)

レスポンス:
  • agent.name(機密ではない)
  • agent.display_name(機密)
  • agent.create_time(機密ではない)
  • agent.update_time(機密ではない)
  • agent.definition_case(機密ではない)
AgentService.UpdateAgent リクエスト:
  • agent.name(機密ではない)
  • agent.display_name(機密)
  • agent.create_time(機密ではない)
  • agent.update_time(機密ではない)
  • agent.definition_case(機密ではない)
  • update_mask(機密ではない)

レスポンス:
  • agent.name(機密ではない)
  • agent.display_name(機密)
  • agent.create_time(機密ではない)
  • agent.update_time(機密ではない)
  • agent.definition_case(機密ではない)
AgentService.DeleteAgent リクエスト:
  • name(機密ではない)

レスポンス:
  • フィールドは記録されません
GroundedGenerationService.GenerateGroundedContent リクエスト:
  • contents(機密)
  • location(機密ではない)
  • generation_spec(部分的に機密)。次のサブフィールドのみが機密です。
    • language_code
  • system_instruction(機密)
  • safety_settings(機密ではない)
  • user_labels(機密)
  • grounding_spec.explicit_search_queries(機密)
  • grounding_spec.grounding_sources(部分的に機密)。次のサブフィールドのみが機密です。
    • inline_source
    • search_source.filter
    • api_source.manifest.api_spec.open_api_yaml
    • elastic_source.search_template
    • elastic_source.num_hits
    • parallel_ai_source.custom_configs
    • exa_ai_source.custom_configs

レスポンス:
  • content(機密)
  • grounding_metadata(部分的に機密)。次のサブフィールドのみが機密です。
    • support_chunks(source と index を除く)
    • google_maps_support_chunks(source と index を除く)
    • api_calls.request_payload
    • api_calls.response_body
    • api_calls.uri
  • grounding_score(機密ではない)
DataConnectorService.UpdateDataConnector リクエスト:
  • data_connector.name(機密ではない)
  • data_connector.create_time(機密ではない)
  • data_connector.update_time(機密ではない)
  • data_connector.data_source(機密ではない)
  • data_connector.refresh_interval(機密ではない)
  • data_connector.bap_config(機密ではない)

レスポンス:
  • data_connector.name(機密ではない)
  • data_connector.create_time(機密ではない)
  • data_connector.update_time(機密ではない)
  • data_connector.data_source(機密ではない)
  • data_connector.refresh_interval(機密ではない)
  • data_connector.bap_config(機密ではない)
AssistantService.AddContextFile リクエスト:
  • name(機密ではない)
  • file_name(機密)

レスポンス:
  • session(機密ではない)
  • file_id(機密ではない)
AssistantService.UploadSessionFile リクエスト:
  • name(機密ではない)
  • blob.filename(機密)

レスポンス:
  • file_id(機密ではない)
UserEventService.WriteUserEvent リクエスト:
  • リクエスト本文のすべてのフィールド(部分的に機密)。次のサブフィールドのみが機密です。
    • user_event.user_info.time_zone
    • user_event.user_info.precise_location
    • user_event.filter
    • user_event.attributes
    • user_event.panel.documents
    • user_event.panels.documents
    • user_event.search_info.search_query
    • user_event.completion_info.selected_suggestion
    • user_event.feedback.comment
    • user_event.feedback.conversation_info.query

レスポンス:
  • フィールドは記録されません

使用状況の監査ログにアクセスする

Gemini Enterprise の使用状況の監査ログにアクセスして表示する手順は次のとおりです。

  1. コンソール Google Cloud で、[**ログ エクスプローラ**] ページに移動します。

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

  2. 監査ロギングを有効にした Google Cloud プロジェクトを選択します。

  3. Gemini Enterprise のログのみを表示するには、クエリ エディタ フィールドに次のクエリを入力して、[クエリを実行] をクリックします。

      logName="projects/PROJECT_ID/logs/discoveryengine.googleapis.com%2Fgemini_enterprise_user_activity" OR logName=~"projects/PROJECT_ID/logs/discoveryengine.googleapis.com%2Fgen_ai.*"
    

    次のように置き換えます。

    • PROJECT_ID: 実際のプロジェクトの ID。

ログへのアクセスを制御する

Cloud Logging のログへのアクセスを制御できます。IAM 条件を使用して きめ細かいアクセスを行うなど、アクセス制御方法の詳細については、 IAM によるアクセス制御をご覧ください。

デフォルトのアクセス制御

デフォルトでは、Gemini Enterprise は Cloud Logging データを _Default バケットに送信します。このバケットへのアクセスは、次の IAM ロールによって制御されます。

きめ細かいアクセス制御

プロジェクトに機密レベルが異なるログが含まれている場合は、 いくつかの Google Cloud ツールと Cloud Logging ツールを使用して、より きめ細かいアクセス制御を構成できます。

次のオプションを使用して、きめ細かいアクセス制御を構成できます。

オプション 説明
IAM 条件 IAM 条件を使用して、きめ細かいアクセス制御を設定します。詳細については、ロギングのロールをご覧ください。
ログビュー ログビューを使用して、ログバケット内の ログのサブセットへのユーザー アクセスを制限します。詳細については、 ログバケットでログビューを構成するをご覧ください。
ログシンク ログシンクを使用して、機密ログを、より 制限の厳しい IAM アクセス権を持つ別のプロジェクトにルーティングします。詳細については、 サポートされている宛先にログをルーティングするをご覧ください。
タグ タグを使用して、プロジェクト内の個々のログバケットへの IAM アクセスを管理します。 詳細については、 タグを使用してログバケットへのアクセスを管理するをご覧ください。
フィールド レベルのアクセス制御 フィールド レベルのアクセス制御を使用して、ログエントリ内の特定のフィールド へのアクセスを非表示にするか、制限します。詳細については、 フィールド レベルのアクセスを構成するをご覧ください。

次のステップ