Acessar os registros de auditoria de uso do Gemini Enterprise com o Cloud Logging

Nesta página, descrevemos como configurar e acessar os registros de auditoria de uso do Gemini Enterprise.

Principais conceitos

Esta seção apresenta os principais conceitos relacionados à capacidade de observação no Gemini Enterprise.

Conceito Descrição
Registros de auditoria de uso Os registros de auditoria de uso são registros de atividades administrativas e acessos nos recursos do Google Cloud . Eles fornecem informações detalhadas sobre quem realizou qual ação, quando e de onde. Esses registros são essenciais para auditoria de segurança, compliance e entendimento de como seus recursos estão sendo usados.

Antes de começar

Antes de configurar os registros de auditoria, verifique se você tem o seguinte:

Informações registradas

A tabela a seguir resume os dados de uso registrados pelo Gemini Enterprise. Cada campo é rotulado da seguinte forma:

  • Sensível: o campo pode conter comandos, respostas ou outro conteúdo do cliente. Ele só é registrado quando a configuração Ativar a geração de registros de entradas de comandos e saídas de respostas está ativada. Quando a configuração está desativada, os valores de texto são substituídos por <elided> e outros valores são omitidos. Para mais informações, consulte Ativar as configurações de observabilidade.
  • Não sensível: o campo é registrado, esteja a configuração ativada ou não.
  • Parcialmente sensível: apenas os subcampos listados são sensíveis. Todos os outros subcampos não são sensíveis.
Caminho do serviço Dados registrados
SearchService.Search

Registra os dados nas fontes usadas para embasamento ou como entrada de LLM.

Solicitação:
  • query (sensível)
  • user_info (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • time_zone
    • precise_location

Resposta:
  • attribution_token (não sensível)
  • results.id (não sensível)
AssistantService.Assist

Registra a solicitação e a resposta do assistente do Gemini Enterprise.

Solicitação:
  • name (não sensível)
  • query.text (sensível)
  • query.parts (sensível)

Resposta:
  • assist_token (não sensível)
  • answer.name (não sensível)
  • answer.state (não sensível)
  • answer.replies.grounded_content.text (sensível)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensível)
  • answer.replies.grounded_content.text_grounding_metadata.references (parcialmente sensível). Todos os subcampos são sensíveis, exceto document_metadata.document e document_metadata.uri.
  • answer.skipped_reasons (não sensível)
  • agent_info.agent (não sensível)
  • agent_info.display_name (sensível)
  • agent_info.core_assistant (não sensível)
  • agent_info.agent_kind (não sensível)
  • agent_info.spiffe_id (não sensível)
AssistantService.StreamAssist Solicitação:
  • name (não sensível)
  • query.text (sensível)
  • query.parts (sensível)
  • agents_spec (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • 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

Resposta:
  • assist_token (não sensível)
  • answer.name (não sensível)
  • answer.state (não sensível)
  • answer.replies.grounded_content.text (sensível)
  • answer.replies.grounded_content.text_grounding_metadata.segments (sensível)
  • answer.replies.grounded_content.text_grounding_metadata.references (parcialmente sensível). Todos os subcampos são sensíveis, exceto document_metadata.document e document_metadata.uri.
  • answer.skipped_reasons (não sensível)
  • agent_info.agent (não sensível)
  • agent_info.display_name (sensível)
  • agent_info.core_assistant (não sensível)
  • agent_info.agent_kind (não sensível)
  • agent_info.spiffe_id (não sensível)
  • model_info.model (não sensível)
  • model_info.requested_model (não sensível)
  • model_info.model_selection_mode (não sensível)

model_info.model é o modelo que o Google Assistente usou para a vez. Quando a solicitação não fixa um modelo, model_selection_mode é MODEL_SELECTION_MODE_AUTO e requested_model fica vazio. Quando a solicitação fixa um modelo, model_selection_mode é MODEL_SELECTION_MODE_EXPLICIT e requested_model contém o modelo solicitado.

Um turno pode ser transferido para um agente especializado que executa um modelo diferente. model_info.model não informa o modelo desse agente, e uma ação que faz todo o trabalho em um agente assim deixa model_info.model vazio.

ConversationSearchService.AnswerQuery Solicitação:
  • serving_config (não sensível)
  • query.query_id (não sensível)
  • query.text (sensível)
  • session (não sensível)
  • user_pseudo_id (não sensível)
  • end_user_spec (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • end_user_metadata.chunk_info.content
    • end_user_metadata.chunk_info.document_metadata.title
  • answer_generation_spec.model_spec.model_version (não sensível)
  • answer_generation_spec.prompt_spec.preamble (sensível)
  • answer_generation_spec.include_citations (não sensível)
  • answer_generation_spec.answer_language_code (sensível)
  • answer_generation_spec.ignore_adversarial_query (não sensível)
  • answer_generation_spec.ignore_non_answer_seeking_query (não sensível)
  • answer_generation_spec.ignore_jail_breaking_query (não sensível)

Resposta:
  • answer (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • answer_text
    • grounding_supports
    • references
    • blob_attachments
    • steps.actions
  • answer_query_token (não sensível)
EngineService.CreateEngine Solicitação:
  • engine_id (não sensível)
  • engine.name (não sensível)
  • engine.create_time (não sensível)
  • engine.display_name (não sensível)
  • engine.update_time (não sensível)
  • engine.data_store_ids (não sensível)
  • engine.data_stores (não sensível)

Resposta:
  • engine_id (não sensível)
  • engine.name (não sensível)
  • engine.create_time (não sensível)
  • engine.display_name (não sensível)
  • engine.update_time (não sensível)
  • engine.data_store_ids (não sensível)
  • engine.data_stores (não sensível)
EngineService.UpdateEngine Solicitação:
  • engine.name (não sensível)
  • engine.create_time (não sensível)
  • engine.display_name (não sensível)
  • engine.update_time (não sensível)
  • engine.data_store_ids (não sensível)
  • engine.data_stores (não sensível)
  • update_mask (não sensível)

Resposta:
  • engine.name (não sensível)
  • engine.create_time (não sensível)
  • engine.display_name (não sensível)
  • engine.update_time (não sensível)
  • engine.data_store_ids (não sensível)
  • engine.data_stores (não sensível)
AgentService.SetIamPolicy Solicitação:
  • policy.bindings.roles (não sensível)
  • policy.bindings.members (não sensível)

Resposta:
  • policy.bindings.roles (não sensível)
  • policy.bindings.members (não sensível)
AgentService.CreateAgent Solicitação:
  • parent (não sensível)
  • agent_id (não sensível)
  • agent.name (não sensível)
  • agent.display_name (sensível)
  • agent.create_time (não sensível)
  • agent.update_time (não sensível)
  • agent.definition_case (não sensível)

Resposta:
  • agent.name (não sensível)
  • agent.display_name (sensível)
  • agent.create_time (não sensível)
  • agent.update_time (não sensível)
  • agent.definition_case (não sensível)
AgentService.UpdateAgent Solicitação:
  • agent.name (não sensível)
  • agent.display_name (sensível)
  • agent.create_time (não sensível)
  • agent.update_time (não sensível)
  • agent.definition_case (não sensível)
  • update_mask (não sensível)

Resposta:
  • agent.name (não sensível)
  • agent.display_name (sensível)
  • agent.create_time (não sensível)
  • agent.update_time (não sensível)
  • agent.definition_case (não sensível)
AgentService.DeleteAgent Solicitação:
  • name (não sensível)

Resposta:
  • Nenhum campo é registrado
GroundedGenerationService.GenerateGroundedContent Solicitação:
  • contents (sensível)
  • location (não sensível)
  • generation_spec (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • language_code
  • system_instruction (sensível)
  • safety_settings (não sensível)
  • user_labels (sensível)
  • grounding_spec.explicit_search_queries (sensível)
  • grounding_spec.grounding_sources (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • 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

Resposta:
  • content (sensível)
  • grounding_metadata (parcialmente sensível). Apenas os seguintes subcampos são sensíveis:
    • support_chunks, exceto source e index
    • google_maps_support_chunks, exceto source e index
    • api_calls.request_payload
    • api_calls.response_body
    • api_calls.uri
  • grounding_score (não sensível)
DataConnectorService.UpdateDataConnector Solicitação:
  • data_connector.name (não sensível)
  • data_connector.create_time (não sensível)
  • data_connector.update_time (não sensível)
  • data_connector.data_source (não sensível)
  • data_connector.refresh_interval (não sensível)
  • data_connector.bap_config (não sensível)

Resposta:
  • data_connector.name (não sensível)
  • data_connector.create_time (não sensível)
  • data_connector.update_time (não sensível)
  • data_connector.data_source (não sensível)
  • data_connector.refresh_interval (não sensível)
  • data_connector.bap_config (não sensível)
AssistantService.AddContextFile Solicitação:
  • name (não sensível)
  • file_name (sensível)

Resposta:
  • session (não sensível)
  • file_id (não sensível)
AssistantService.UploadSessionFile Solicitação:
  • name (não sensível)
  • blob.filename (sensível)

Resposta:
  • file_id (não sensível)
UserEventService.WriteUserEvent Solicitação:
  • Todos os campos no corpo da solicitação (parcialmente sensíveis). Apenas os seguintes subcampos são sensíveis:
    • 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

Resposta:
  • Nenhum campo é registrado

Acessar registros de auditoria de uso

Para acessar e conferir todos os registros de auditoria de uso do Gemini Enterprise, siga estas etapas:

  1. No console do Google Cloud , acesse a página Análise de registros.

    Acessar a Análise de registros

  2. Selecione o projeto do Google Cloud em que você ativou a geração de registros de auditoria.

  3. Para mostrar apenas os registros do Gemini Enterprise, insira a consulta a seguir no campo do editor de consultas e clique em Executar consulta:

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

    Substitua:

    • PROJECT_ID: ID do projeto.

Controlar o acesso a registros

É possível controlar o acesso aos registros no Cloud Logging. Para orientações detalhadas sobre métodos de controle de acesso, incluindo o uso de condições do IAM para acesso granular, consulte Controle de acesso com o IAM.

Controle de acesso padrão

Por padrão, o Gemini Enterprise envia dados do Cloud Logging para o bucket _Default. Os seguintes papéis do IAM controlam o acesso a esse bucket:

Controle de acesso granular

Se o projeto tiver registros com níveis de sensibilidade variados, use várias ferramentas do Google Cloud e do Cloud Logging para configurar um controle de acesso mais refinado.

É possível configurar o controle de acesso refinado usando as seguintes opções:

Opção Descrição
Condições do IAM Configure o controle de acesso refinado usando as condições do IAM. Para mais informações, consulte Papéis do Logging.
Visualizações de registro Use visualizações de registros para limitar o acesso do usuário a um subconjunto de registros em um bucket de registros. Para mais informações, consulte Configurar visualizações de registros em um bucket de registros.
Coletores de registros Use coletores de registros para encaminhar registros sensíveis a um projeto separado com acesso do IAM mais restritivo. Para mais informações, consulte Rotear registros para destinos compatíveis.
Tags Use tags para gerenciar o acesso do IAM a buckets de registros individuais em um projeto. Para mais informações, consulte Usar tags para gerenciar o acesso a buckets de registros.
Controle de acesso no nível do campo Use o controle de acesso no nível do campo para ocultar ou restringir o acesso a campos específicos em entradas de registro. Para mais informações, consulte Configurar o acesso no nível do campo.

A seguir