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 quale 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 i log di controllo, 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 è attivata. 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 sottocampi 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)
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 ne blocca uno, 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 questo 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). Sono sensibili solo i seguenti campi secondari:
    • 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). Sono sensibili solo i seguenti campi secondari:
    • 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

Accedere 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 indicazioni dettagliate sui metodi di controllo dell'accesso dell'accesso, incluso l'utilizzo delle condizioni IAM per l'accesso granulare, consulta Controllo dell'accesso 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 diversi livelli di sensibilità, puoi utilizzare diversi Google Cloud e strumenti Cloud Logging per configurare controllo dell'accesso più granulare.

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

Opzione Descrizione
Condizioni IAM Configura controllo dell'accesso granulare utilizzando le condizioni IAM. Per maggiori informazioni, consulta Ruoli di logging.
Visualizzazioni log Utilizza le visualizzazioni di 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ù, vedi Utilizzare 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