Accede a los registros de auditoría de uso de Gemini Enterprise con Cloud Logging

En esta página, se describe cómo configurar y acceder a los registros de auditoría de uso de Gemini Enterprise.

Conceptos clave

En esta sección, se presentan conceptos clave relacionados con la observabilidad en Gemini Enterprise.

Concepto Descripción
Registros de auditoría de uso Los registros de auditoría de uso son registros de actividades administrativas y accesos dentro de tus recursos de Google Cloud . Proporcionan información detallada sobre quién realizó qué acción, cuándo y desde dónde. Estos registros son esenciales para la auditoría de seguridad, el cumplimiento y la comprensión de cómo se usan tus recursos.

Antes de comenzar

Antes de configurar los registros de auditoría, asegúrate de tener lo siguiente:

Información registrada

En la siguiente tabla, se resumen los datos de uso que registra Gemini Enterprise. Cada campo se etiqueta de la siguiente manera:

  • Sensible: El campo puede contener instrucciones, respuestas o cualquier otro contenido del cliente. Se registra solo cuando está activado el parámetro de configuración Habilitar el registro de las entradas de instrucciones y las salidas de respuestas. Cuando el parámetro de configuración está desactivado, los valores de texto se reemplazan por <elided> y se omiten otros valores. Para obtener más información, consulta Activa la configuración de observabilidad.
  • No sensible: El campo se registra independientemente de si el parámetro de configuración está activado o no.
  • Parcialmente sensible: Solo los subcampos que se indican son sensibles. Todos los demás subcampos no son sensibles.
Ruta de acceso del servicio Datos registrados
SearchService.Search

Registra los datos de las fuentes que se usaron para la fundamentación o como entrada del LLM.

Solicitud:
  • query (sensible)
  • user_info (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • time_zone
    • precise_location

Respuesta:
  • attribution_token (no sensible)
  • results.id (no sensible)
  • results.document.name (no sensible)
AssistantService.Assist

Registra la solicitud y la respuesta del asistente de Gemini Enterprise.

Solicitud:
  • name (no sensible)
  • query.text (sensible)
  • query.parts (sensible)

Respuesta:
  • assist_token (no sensible)
  • answer.name (no sensible)
  • answer.state (no sensible)
  • answer.replies.grounded_content.text (sensible)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensible)
  • answer.replies.grounded_content.text_grounding_metadata.references (parcialmente sensible). Todos los subcampos son sensibles, excepto document_metadata.document y document_metadata.uri.
  • answer.skipped_reasons (no sensible)
  • agent_info.agent (no sensible)
  • agent_info.display_name (sensible)
  • agent_info.core_assistant (no sensible)
  • agent_info.agent_kind (no sensible)
  • agent_info.spiffe_id (no sensible)
AssistantService.StreamAssist Solicitud:
  • name (no sensible)
  • query.text (sensible)
  • query.parts (sensible)
  • agents_spec (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • 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

Respuesta:
  • assist_token (no sensible)
  • answer.name (no sensible)
  • answer.state (no sensible)
  • answer.replies.grounded_content.text (sensible)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensible)
  • answer.replies.grounded_content.text_grounding_metadata.references (parcialmente sensible). Todos los subcampos son sensibles, excepto document_metadata.document y document_metadata.uri.
  • answer.skipped_reasons (no sensible)
  • agent_info.agent (no sensible)
  • agent_info.display_name (sensible)
  • agent_info.core_assistant (no sensible)
  • agent_info.agent_kind (no sensible)
  • agent_info.spiffe_id (no sensible)
  • model_info.model (no sensible)
  • model_info.requested_model (no sensible)
  • model_info.model_selection_mode (no sensible)

model_info.model es el modelo que ejecutó el asistente para el turno. Cuando la solicitud no fija un modelo, model_selection_mode es MODEL_SELECTION_MODE_AUTO y requested_model está vacío; cuando la solicitud fija uno, model_selection_mode es MODEL_SELECTION_MODE_EXPLICIT y requested_model contiene el modelo que se solicitó.

Un turno puede transferirse a un agente especializado que ejecute un modelo diferente. model_info.model no informa el modelo de ese agente, y un turno que realiza todo su trabajo en ese agente deja model_info.model vacío.

ConversationSearchService.AnswerQuery Solicitud:
  • serving_config (no sensible)
  • query.query_id (no sensible)
  • query.text (sensible)
  • session (no sensible)
  • user_pseudo_id (no sensible)
  • end_user_spec (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • end_user_metadata.chunk_info.content
    • end_user_metadata.chunk_info.document_metadata.title
  • answer_generation_spec.model_spec.model_version (no sensible)
  • answer_generation_spec.prompt_spec.preamble (sensible)
  • answer_generation_spec.include_citations (no sensible)
  • answer_generation_spec.answer_language_code (sensible)
  • answer_generation_spec.ignore_adversarial_query (no sensible)
  • answer_generation_spec.ignore_non_answer_seeking_query (no sensible)
  • answer_generation_spec.ignore_jail_breaking_query (no sensible)

Respuesta:
  • answer (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • answer_text
    • grounding_supports
    • references
    • blob_attachments
    • steps.actions
  • answer_query_token (no sensible)
EngineService.CreateEngine Solicitud:
  • engine_id (no sensible)
  • engine.name (no sensible)
  • engine.create_time (no sensible)
  • engine.display_name (no sensible)
  • engine.update_time (no sensible)
  • engine.data_store_ids (no sensible)
  • engine.data_stores (no sensible)

Respuesta:
  • engine_id (no sensible)
  • engine.name (no sensible)
  • engine.create_time (no sensible)
  • engine.display_name (no sensible)
  • engine.update_time (no sensible)
  • engine.data_store_ids (no sensible)
  • engine.data_stores (no sensible)
EngineService.UpdateEngine Solicitud:
  • engine.name (no sensible)
  • engine.create_time (no sensible)
  • engine.display_name (no sensible)
  • engine.update_time (no sensible)
  • engine.data_store_ids (no sensible)
  • engine.data_stores (no sensible)
  • update_mask (no sensible)

Respuesta:
  • engine.name (no sensible)
  • engine.create_time (no sensible)
  • engine.display_name (no sensible)
  • engine.update_time (no sensible)
  • engine.data_store_ids (no sensible)
  • engine.data_stores (no sensible)
AgentService.SetIamPolicy Solicitud:
  • policy.bindings.roles (no sensible)
  • policy.bindings.members (no sensible)

Respuesta:
  • policy.bindings.roles (no sensible)
  • policy.bindings.members (no sensible)
AgentService.CreateAgent Solicitud:
  • parent (no sensible)
  • agent_id (no sensible)
  • agent.name (no sensible)
  • agent.display_name (sensible)
  • agent.create_time (no sensible)
  • agent.update_time (no sensible)
  • agent.definition_case (no sensible)

Respuesta:
  • agent.name (no sensible)
  • agent.display_name (sensible)
  • agent.create_time (no sensible)
  • agent.update_time (no sensible)
  • agent.definition_case (no sensible)
AgentService.UpdateAgent Solicitud:
  • agent.name (no sensible)
  • agent.display_name (sensible)
  • agent.create_time (no sensible)
  • agent.update_time (no sensible)
  • agent.definition_case (no sensible)
  • update_mask (no sensible)

Respuesta:
  • agent.name (no sensible)
  • agent.display_name (sensible)
  • agent.create_time (no sensible)
  • agent.update_time (no sensible)
  • agent.definition_case (no sensible)
AgentService.DeleteAgent Solicitud:
  • name (no sensible)

Respuesta:
  • No se registran campos
GroundedGenerationService.GenerateGroundedContent Solicitud:
  • contents (sensible)
  • location (no sensible)
  • generation_spec (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • language_code
  • system_instruction (sensible)
  • safety_settings (no sensible)
  • user_labels (sensible)
  • grounding_spec.explicit_search_queries (sensible)
  • grounding_spec.grounding_sources (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • 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

Respuesta:
  • content (sensible)
  • grounding_metadata (parcialmente sensible). Solo los siguientes subcampos son sensibles:
    • support_chunks, excepto source y index
    • google_maps_support_chunks, excepto source y index
    • api_calls.request_payload
    • api_calls.response_body
    • api_calls.uri
  • grounding_score (no sensible)
DataConnectorService.UpdateDataConnector Solicitud:
  • data_connector.name (no sensible)
  • data_connector.create_time (no sensible)
  • data_connector.update_time (no sensible)
  • data_connector.data_source (no sensible)
  • data_connector.refresh_interval (no sensible)
  • data_connector.bap_config (no sensible)

Respuesta:
  • data_connector.name (no sensible)
  • data_connector.create_time (no sensible)
  • data_connector.update_time (no sensible)
  • data_connector.data_source (no sensible)
  • data_connector.refresh_interval (no sensible)
  • data_connector.bap_config (no sensible)
AssistantService.AddContextFile Solicitud:
  • name (no sensible)
  • file_name (sensible)

Respuesta:
  • session (no sensible)
  • file_id (no sensible)
AssistantService.UploadSessionFile Solicitud:
  • name (no sensible)
  • blob.filename (sensible)

Respuesta:
  • file_id (no sensible)
UserEventService.WriteUserEvent Solicitud:
  • Todos los campos del cuerpo de la solicitud (parcialmente sensibles). Solo los siguientes subcampos son sensibles:
    • 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

Respuesta:
  • No se registran campos
CoscientistService.CoscientistRunCompletion

Se registra una vez cuando una ejecución de Co-Scientist se completa correctamente. A diferencia de las otras filas, esta entrada no es el registro de una solicitud a la API. log_metadata.name es el nombre del recurso de la instancia de Co-Scientist. Una instancia pausada y reanudada produce una entrada que abarca toda la instancia. Para obtener información sobre cómo consultar estas entradas, consulta Supervisa las ejecuciones de Co-Scientist.

coscientist_run_info:
  • starter_user_principal (no sensible): Es el usuario que inició la ejecución, como una dirección de correo electrónico o algún otro identificador de principal. En el caso de una ejecución bifurcada, el usuario que la bifurcó.
  • start_time (no sensible): indica cuándo se creó la instancia.
  • duration (no sensible): Es el tiempo desde start_time hasta que se completó la ejecución, incluido el tiempo que se pasó en pausa.
  • input_token_count (no sensible): Son los tokens de entrada que usó la instancia en todas sus ejecuciones. Esto es uso, no cargos; concilia los gastos con la Facturación de Cloud.
  • output_token_count (no sensible): Son los tokens de salida que usó la instancia en todas sus ejecuciones.

Accede a los registros de auditoría de uso

Para acceder a todos los registros de auditoría de uso de Gemini Enterprise y verlos, sigue estos pasos:

  1. En la consola de Google Cloud , accede a la página Explorador de registros.

    Ve al Explorador de registros

  2. Selecciona el proyecto de Google Cloud para el que habilitaste el registro de auditoría.

  3. Para mostrar solo los registros de Gemini Enterprise, ingresa la siguiente consulta en el campo del editor de consultas y haz clic en Ejecutar consulta:

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

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto.

Controlar el acceso a los registros

Puedes controlar el acceso a los registros en Cloud Logging. Para obtener orientación detallada sobre los métodos de control de acceso, incluido el uso de condiciones de IAM para el acceso detallado, consulta Control de acceso con IAM.

Control de acceso predeterminado

De forma predeterminada, Gemini Enterprise envía datos de Cloud Logging al bucket _Default. Los siguientes roles de IAM controlan el acceso a este bucket:

Control de acceso detallado

Si tu proyecto contiene registros con diferentes niveles de sensibilidad, puedes usar varias herramientas de Google Cloud y Cloud Logging para configurar un control de acceso detallado.

Puedes configurar el control de acceso detallado con las siguientes opciones:

Opción Descripción
Condiciones de IAM Configura el control de acceso detallado con las condiciones de IAM. Para obtener más información, consulta Roles de Logging.
Vistas de registro Usa vistas de registro para limitar el acceso de los usuarios a un subconjunto de registros dentro de un bucket de registros. Para obtener más información, consulta Configura vistas de registros en un bucket de registros.
Receptores de registros Usa receptores de registros para enrutar los registros sensibles a un proyecto independiente con un acceso de IAM más restrictivo. Para obtener más información, consulta Enruta registros a destinos compatibles.
Etiquetas Usa etiquetas para administrar el acceso de IAM a buckets de registros individuales dentro de un proyecto. Para obtener más información, consulta Usa etiquetas para administrar el acceso a los buckets de registros.
Control de acceso a nivel de campo Usa el control de acceso a nivel de campo para ocultar o restringir el acceso a campos específicos dentro de las entradas de registro. Para obtener más información, consulta Configura el acceso a nivel de campo.

¿Qué sigue?