Accedere ai log di controllo dell'utilizzo di Gemini Enterprise con Cloud Logging

Questa pagina descrive come configurare e accedere agli audit log sull'utilizzo per Gemini Enterprise.

Concetti fondamentali

Questa sezione introduce i concetti chiave relativi all'osservabilità in Gemini Enterprise.

Concetto Descrizione
Audit log sull'utilizzo Gli audit log sull'utilizzo sono record delle attività amministrative e degli accessi all'interno delle tue risorse Google Cloud . Forniscono informazioni dettagliate su chi ha eseguito un'azione, quando e da dove. Questi log sono essenziali per l'audit della sicurezza, la conformità e la comprensione di come vengono utilizzate le tue risorse.

Prima di iniziare

Prima di configurare gli audit log, assicurati di disporre di quanto segue:

Informazioni registrate

La seguente tabella riassume i dati di utilizzo registrati da Gemini Enterprise. Ogni campo è etichettato come segue:

  • Sensibile: il campo può contenere prompt, risposte o altri contenuti dei clienti. Viene registrato solo quando l'impostazione Abilita il logging degli input dei prompt e degli output delle risposte è attiva. Quando l'impostazione è disattivata, i valori di testo vengono sostituiti con <elided> e gli altri valori vengono omessi. Per maggiori informazioni, vedi Attivare le impostazioni di osservabilità.
  • Non sensibile: il campo viene registrato indipendentemente dall'attivazione dell'impostazione.
  • Parzialmente sensibile: solo i campi secondari elencati sono sensibili. Tutti gli altri campi secondari non sono sensibili.
Percorso del servizio Dati registrati
SearchService.Search

Registra i dati sulle fonti utilizzate per il grounding o come input LLM.

Richiesta:
  • query (sensibile)
  • user_info (parzialmente sensibile). Sono sensibili solo i seguenti campi secondari:
    • time_zone
    • precise_location

Risposta:
  • attribution_token (non sensibile)
  • results.id (non sensibile)
  • results.document.name (non sensibile)
AssistantService.Assist

Registra la richiesta e la risposta dell'assistente Gemini Enterprise.

Richiesta:
  • name (non sensibile)
  • query.text (sensibile)
  • query.parts (sensibile)

Risposta:
  • assist_token (non sensibile)
  • answer.name (non sensibile)
  • answer.state (non sensibile)
  • answer.replies.grounded_content.text (sensibile)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensibile)
  • answer.replies.grounded_content.text_grounding_metadata.references (parzialmente sensibile). Tutti i campi secondari sono sensibili, tranne document_metadata.document e document_metadata.uri.
  • answer.skipped_reasons (non sensibile)
  • agent_info.agent (non sensibile)
  • agent_info.display_name (sensibile)
  • agent_info.core_assistant (non sensibile)
  • agent_info.agent_kind (non sensibile)
  • agent_info.spiffe_id (non sensibile)
AssistantService.StreamAssist Richiesta:
  • name (non sensibile)
  • query.text (sensibile)
  • query.parts (sensibile)
  • agents_spec (parzialmente sensibile). Sono sensibili solo i seguenti campi secondari:
    • 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

Risposta:
  • assist_token (non sensibile)
  • answer.name (non sensibile)
  • answer.state (non sensibile)
  • answer.replies.grounded_content.text (sensibile)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensibile)
  • answer.replies.grounded_content.text_grounding_metadata.references (parzialmente sensibile). Tutti i campi secondari sono sensibili, tranne document_metadata.document e document_metadata.uri.
  • answer.skipped_reasons (non sensibile)
  • agent_info.agent (non sensibile)
  • agent_info.display_name (sensibile)
  • agent_info.core_assistant (non sensibile)
  • agent_info.agent_kind (non sensibile)
  • agent_info.spiffe_id (non sensibile)
  • model_info.model (non sensibile)
  • model_info.requested_model (non sensibile)
  • model_info.model_selection_mode (non sensibile)

model_info.model è il modello eseguito dall'assistente per il turno. Quando la richiesta non blocca un modello, model_selection_mode è MODEL_SELECTION_MODE_AUTO e requested_model è vuoto; quando la richiesta blocca un modello, model_selection_mode è MODEL_SELECTION_MODE_EXPLICIT e requested_model contiene il modello richiesto.

Un turno può essere trasferito a un agente specializzato che esegue un modello diverso. model_info.model non segnala il modello di quell'agente e un turno che svolge tutto il suo lavoro in un agente di questo tipo lascia model_info.model vuoto.

ConversationSearchService.AnswerQuery Richiesta:
  • serving_config (non sensibile)
  • query.query_id (non sensibile)
  • query.text (sensibile)
  • session (non sensibile)
  • user_pseudo_id (non sensibile)
  • end_user_spec (parzialmente sensibile). Solo i seguenti campi secondari sono sensibili:
    • end_user_metadata.chunk_info.content
    • end_user_metadata.chunk_info.document_metadata.title
  • answer_generation_spec.model_spec.model_version (non sensibile)
  • answer_generation_spec.prompt_spec.preamble (sensibile)
  • answer_generation_spec.include_citations (non sensibile)
  • answer_generation_spec.answer_language_code (sensibile)
  • answer_generation_spec.ignore_adversarial_query (non sensibile)
  • answer_generation_spec.ignore_non_answer_seeking_query (non sensibile)
  • answer_generation_spec.ignore_jail_breaking_query (non sensibile)

Risposta:
  • answer (parzialmente sensibile). Sono sensibili solo i seguenti campi secondari:
    • answer_text
    • grounding_supports
    • references
    • blob_attachments
    • steps.actions
  • answer_query_token (non sensibile)
EngineService.CreateEngine Richiesta:
  • engine_id (non sensibile)
  • engine.name (non sensibile)
  • engine.create_time (non sensibile)
  • engine.display_name (non sensibile)
  • engine.update_time (non sensibile)
  • engine.data_store_ids (non sensibile)
  • engine.data_stores (non sensibile)

Risposta:
  • engine_id (non sensibile)
  • engine.name (non sensibile)
  • engine.create_time (non sensibile)
  • engine.display_name (non sensibile)
  • engine.update_time (non sensibile)
  • engine.data_store_ids (non sensibile)
  • engine.data_stores (non sensibile)
EngineService.UpdateEngine Richiesta:
  • engine.name (non sensibile)
  • engine.create_time (non sensibile)
  • engine.display_name (non sensibile)
  • engine.update_time (non sensibile)
  • engine.data_store_ids (non sensibile)
  • engine.data_stores (non sensibile)
  • update_mask (non sensibile)

Risposta:
  • engine.name (non sensibile)
  • engine.create_time (non sensibile)
  • engine.display_name (non sensibile)
  • engine.update_time (non sensibile)
  • engine.data_store_ids (non sensibile)
  • engine.data_stores (non sensibile)
AgentService.SetIamPolicy Richiesta:
  • policy.bindings.roles (non sensibile)
  • policy.bindings.members (non sensibile)

Risposta:
  • policy.bindings.roles (non sensibile)
  • policy.bindings.members (non sensibile)
AgentService.CreateAgent Richiesta:
  • parent (non sensibile)
  • agent_id (non sensibile)
  • agent.name (non sensibile)
  • agent.display_name (sensibile)
  • agent.create_time (non sensibile)
  • agent.update_time (non sensibile)
  • agent.definition_case (non sensibile)

Risposta:
  • agent.name (non sensibile)
  • agent.display_name (sensibile)
  • agent.create_time (non sensibile)
  • agent.update_time (non sensibile)
  • agent.definition_case (non sensibile)
AgentService.UpdateAgent Richiesta:
  • agent.name (non sensibile)
  • agent.display_name (sensibile)
  • agent.create_time (non sensibile)
  • agent.update_time (non sensibile)
  • agent.definition_case (non sensibile)
  • update_mask (non sensibile)

Risposta:
  • agent.name (non sensibile)
  • agent.display_name (sensibile)
  • agent.create_time (non sensibile)
  • agent.update_time (non sensibile)
  • agent.definition_case (non sensibile)
AgentService.DeleteAgent Richiesta:
  • name (non sensibile)

Risposta:
  • Nessun campo registrato
GroundedGenerationService.GenerateGroundedContent Richiesta:
  • contents (sensibile)
  • location (non sensibile)
  • generation_spec (parzialmente sensibile). Sono sensibili solo i seguenti campi secondari:
    • language_code
  • system_instruction (sensibile)
  • safety_settings (non sensibile)
  • user_labels (sensibile)
  • grounding_spec.explicit_search_queries (sensibile)
  • grounding_spec.grounding_sources (parzialmente sensibile). Solo i seguenti campi secondari sono sensibili:
    • 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

Risposta:
  • content (sensibile)
  • grounding_metadata (parzialmente sensibile). Sono sensibili solo i seguenti campi secondari:
    • support_chunks, tranne source e index
    • google_maps_support_chunks, tranne source e index
    • api_calls.request_payload
    • api_calls.response_body
    • api_calls.uri
  • grounding_score (non sensibile)
DataConnectorService.UpdateDataConnector Richiesta:
  • data_connector.name (non sensibile)
  • data_connector.create_time (non sensibile)
  • data_connector.update_time (non sensibile)
  • data_connector.data_source (non sensibile)
  • data_connector.refresh_interval (non sensibile)
  • data_connector.bap_config (non sensibile)

Risposta:
  • data_connector.name (non sensibile)
  • data_connector.create_time (non sensibile)
  • data_connector.update_time (non sensibile)
  • data_connector.data_source (non sensibile)
  • data_connector.refresh_interval (non sensibile)
  • data_connector.bap_config (non sensibile)
AssistantService.AddContextFile Richiesta:
  • name (non sensibile)
  • file_name (sensibile)

Risposta:
  • session (non sensibile)
  • file_id (non sensibile)
AssistantService.UploadSessionFile Richiesta:
  • name (non sensibile)
  • blob.filename (sensibile)

Risposta:
  • file_id (non sensibile)
UserEventService.WriteUserEvent Richiesta:
  • Tutti i campi nel corpo della richiesta (parzialmente sensibili). Sono sensibili solo i seguenti campi secondari:
    • 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

Risposta:
  • Nessun campo registrato

Accedi agli audit log sull'utilizzo

Per accedere e visualizzare tutti gli audit log sull'utilizzo di Gemini Enterprise, segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Seleziona il progetto Google Cloud per il quale hai attivato l'audit logging.

  3. Per visualizzare solo i log di Gemini Enterprise, inserisci la seguente query nel campo dell'editor query e fai clic su Esegui query:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.

Controllo dell'accesso ai log

Puoi controllare l'accesso ai log in Cloud Logging. Per istruzioni dettagliate sui metodi di controllo dell'accesso, incluso l'utilizzo delle condizioni IAM per l'accesso granulare, consulta Controllo degli accessi con IAM.

Controllo dell'accesso predefinito

Per impostazione predefinita, Gemini Enterprise invia i dati di Cloud Logging al bucket _Default. I seguenti ruoli IAM controllano l'accesso a questo bucket:

Controllo dell'accesso granulare

Se il tuo progetto contiene log con livelli di sensibilità diversi, puoi utilizzare diversi strumenti Google Cloud e Cloud Logging per configurare controllo dell'accesso più granulare.

Puoi configurare controllo dell'accesso granulare utilizzando le seguenti opzioni:

Opzione Descrizione
Condizioni IAM Configura controllo dell'accesso granulare utilizzando le condizioni IAM. Per saperne di più, consulta Ruoli di Logging.
Visualizzazioni log Utilizza le visualizzazioni dei log per limitare l'accesso degli utenti a un sottoinsieme di log all'interno di un bucket di log. Per saperne di più, consulta Configurare le visualizzazioni dei log in un bucket di log.
Sink di log Utilizza i sink di log per indirizzare i log sensibili a un progetto separato con un accesso IAM più restrittivo. Per ulteriori informazioni, vedi Instrada i log verso destinazioni supportate.
Tag Utilizza i tag per gestire l'accesso IAM ai singoli bucket di log all'interno di un progetto. Per saperne di più, consulta Utilizza i tag per gestire l'accesso ai bucket di log.
Controllo dell'accesso a livello di campo Utilizza controllo dell'accesso a livello di campo per nascondere o limitare l'accesso a campi specifici all'interno delle voci di log. Per saperne di più, consulta Configurare l'accesso a livello di campo.

Passaggi successivi