Cloud Logging으로 Gemini Enterprise 사용량 감사 로그에 액세스

이 페이지에서는 Gemini Enterprise의 사용 감사 로그를 설정하고 액세스하는 방법을 설명합니다.

주요 개념

이 섹션에서는 Gemini Enterprise의 관측 가능성과 관련된 주요 개념을 소개합니다.

개념 설명
사용 감사 로그 사용 감사 로그는 리소스 내의 관리 활동과 액세스를 기록한 것입니다. Google Cloud 이 로그는 누가, 언제, 어디에서 어떤 작업을 수행했는지에 대한 자세한 정보를 제공합니다. 이러한 로그는 보안 감사, 규정 준수, 리소스 사용 방식을 이해하는 데 필수적입니다.

시작하기 전에

감사 로그를 구성하기 전에 다음이 있는지 확인하세요.

  • 관측 가능성 설정을 사용 설정합니다. 자세한 내용은 관측 가능성 설정 사용 설정을 참조하세요.
  • 감사 로깅을 사용 설정하려면 Gemini Enterprise 관리자 IAM 역할 (roles/discoveryengine.agentspaceAdmin)이 있어야 합니다.
  • Cloud Logging에 액세스하려면 로그 뷰어 IAM 역할 (roles/logging.viewer)이 있어야 합니다.
  • Gemini Enterprise 앱을 만들었는지 확인합니다. 앱을 만들려면 앱 만들기를 참조하세요.

로깅되는 정보

다음 표에는 Gemini Enterprise에서 로깅하는 사용 데이터가 요약되어 있습니다.

서비스 경로 로깅된 데이터
SearchService.Search

기초 자료로 사용되거나 LLM 입력으로 사용되는 소스의 데이터를 로깅합니다.

요청:
  • query
  • user_info

응답:
  • attribution_token
  • results.id
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
  • answer.skipped_reasons
AssistantService.StreamAssist 요청:
  • name
  • query.text
  • query.parts
  • agents_spec

응답:
  • 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
  • answer.skipped_reasons
ConversationSearchService.AnswerQuery 요청:
  • serving_config
  • query.query_id
  • query.text
  • session
  • user_pseudo_id
  • end_user_spec
  • 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_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.CreateAgentRequest 요청:
  • 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
GroundedGenerationService.GenerateGroundedContent 요청:
  • contents
  • location
  • generation_spec
  • system_instruction
  • safety_settings
  • user_labels
  • grounding_spec.explicit_search_queries
  • grounding_spec.grounding_sources

응답:
  • content
  • grounding_metadata
  • 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 요청:
  • All fields in the request body

응답:
  • 필드가 로깅되지 않습니다.

사용 감사 로그 액세스

모든 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 조건을 사용하여 세분화된 액세스 제어를 설정합니다. 자세한 내용은 Logging 역할을 참조하세요.
로그 뷰 로그 뷰를 사용하여 로그 버킷 내의 로그 하위 집합에 대한 사용자 액세스를 제한합니다. 자세한 내용은 로그 버킷에서 로그 뷰 구성을 참조하세요.
로그 싱크 로그 싱크를 사용하여 민감한 로그를 IAM 액세스가 더 제한적인 별도의 프로젝트로 라우팅합니다. 자세한 내용은 지원되는 대상으로 로그 라우팅을 참조하세요.
태그 태그를 사용하여 프로젝트 내의 개별 로그 버킷에 대한 IAM 액세스를 관리합니다. 자세한 내용은 태그를 사용하여 로그 버킷에 대한 액세스 관리를 참조하세요.
필드 수준 액세스 제어 필드 수준 액세스 제어를 사용하여 로그 항목 내의 특정 필드 에 대한 액세스를 숨기거나 제한합니다. 자세한 내용은 필드 수준 액세스 구성을 참조하세요.

다음 단계