用 BigQuery 管理大规模 Gemini Enterprise:从日志汇聚到合规审计

2026-07-16 27 预计阅读时间: 1 分钟
来源: cloud.google.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:12 分钟

当 Gemini Enterprise 从小范围试用扩展到全公司时,管理难题会迅速变化:团队不再只关心“有多少人在用”,还需要回答哪些部门在创建自定义智能体、NotebookLM 是否真正进入工作流、企业数据被如何检索,以及某次安全拦截究竟由什么内容触发。

产品内置仪表板适合观察日常采用率和活跃用户,但组织级治理往往需要关联 HR、部门、成本中心和安全数据。将 Gemini Enterprise 遥测通过 Cloud Logging 持续写入 BigQuery,再补充批量导出的席位与参与度指标,可以建立一套可查询、可审计、可扩展的分析底座。

两条管道,解决两类问题

完整方案不是把所有数据塞进一张宽表,而是保留两种不同节奏的数据流。

流式日志管道负责细粒度事件,包括用户提示词、模型响应、结束原因、身份信息和 grounding 文件访问路径。这类数据适合安全调查、行为分析和逐次交互取证。

批量指标管道通过 analytics:exportMetrics API 定期拉取预聚合数据,例如过去 30 天的席位购买、席位领取和参与度指标。这类数据适合管理层仪表板、采用趋势和成本分析。由于导出是异步的,生产环境应把它实现成每日调度任务,并记录任务状态、重试次数与数据日期。

BigQuery 中需要重点关注的遥测包括:

数据类别 典型目标表 用途
用户消息 discoveryengine_googleapis_com_gen_ai_user_message 用户输入的原始提示词
模型选择与响应 discoveryengine_googleapis_com_gen_ai_choice 模型响应、结束原因和推理相关字段
用户活动 discoveryengine_googleapis_com_gemini_enterprise_user_activity IAM 身份和 grounding 文件访问路径
管理活动审计 cloudaudit_googleapis_com_activity 智能体创建、更新、删除等控制面变更
数据访问审计 cloudaudit_googleapis_com_data_access 搜索、读取和连接器查询等数据面操作
聚合指标 自定义批量导出表 席位、采用率和近 30 天参与度

实际表名可能受到 BigQuery 数据集、日志接收器及导出方式影响,部署后应先检查目标数据集中的真实表名和分区字段,再固化查询。

可以这样实践:配置连续日志接收器

下面的命令可以作为部署起点。运行前修改项目 ID、数据集名称和区域,并确保目标数据集已经创建。命令使用项目级 Log Router sink;如果日志来自多个项目,可以进一步改为文件夹级或组织级聚合接收器。

#!/usr/bin/env bash
set -euo pipefail

PROJECT_ID="your-project-id"
DATASET="gemini_enterprise_logs"
LOCATION="US"

bq --location="${LOCATION}" mk \
  --dataset \
  --description="Gemini Enterprise telemetry and audit logs" \
  "${PROJECT_ID}:${DATASET}"

RUNTIME_FILTER='logName="projects/'"${PROJECT_ID}"'/logs/discoveryengine.googleapis.com%2Fgemini_enterprise_user_activity" OR
logName="projects/'"${PROJECT_ID}"'/logs/discoveryengine.googleapis.com%2Fgen_ai.user.message" OR
logName="projects/'"${PROJECT_ID}"'/logs/discoveryengine.googleapis.com%2Fgen_ai.choice"'

gcloud logging sinks create gemini-enterprise-runtime \
  "bigquery.googleapis.com/projects/${PROJECT_ID}/datasets/${DATASET}" \
  --project="${PROJECT_ID}" \
  --log-filter="${RUNTIME_FILTER}" \
  --use-partitioned-tables

AUDIT_FILTER='logName:"projects/'"${PROJECT_ID}"'/logs/cloudaudit.googleapis.com" AND
protoPayload.serviceName="discoveryengine.googleapis.com"'

gcloud logging sinks create gemini-enterprise-audit \
  "bigquery.googleapis.com/projects/${PROJECT_ID}/datasets/${DATASET}" \
  --project="${PROJECT_ID}" \
  --log-filter="${AUDIT_FILTER}" \
  --use-partitioned-tables

创建接收器后,Cloud Logging 会返回每个 sink 的 writer identity。必须把对应服务账号授予数据集写入权限,否则接收器存在但不会成功落表:

PROJECT_ID="your-project-id"
DATASET="gemini_enterprise_logs"

for SINK in gemini-enterprise-runtime gemini-enterprise-audit; do
  WRITER_ID=$(gcloud logging sinks describe "${SINK}" \
    --project="${PROJECT_ID}" \
    --format='value(writerIdentity)')

  bq add-iam-policy-binding "${PROJECT_ID}:${DATASET}" \
    --member="${WRITER_ID}" \
    --role="roles/bigquery.dataEditor"
done

还要在 Gemini Enterprise 管理控制台启用提示词与响应日志。Admin Activity 日志默认启用,但 Discovery Engine API 的 Data Access 日志默认可能未开启,需要在 IAM 审计日志配置中显式启用。启用后日志量和成本会上升,因此应先确定审计范围、保留期限及访问责任人。

从原始遥测变成组织指标

日志入库只是第一步。真正有价值的模型通常会加入一张受控的员工维表,例如 governance.employee_directory,包含员工邮箱、部门、成本中心和在职状态。该表应来自经过授权的 HR 数据管道,而不是临时上传的电子表格。

由于日志载荷可能使用 jsonPayloadprotoPayload 或嵌套 RECORD,下面先用 BigQuery 元数据确认字段,而不是直接猜测结构:

SELECT
  table_name,
  column_name,
  data_type
FROM `your-project-id.gemini_enterprise_logs.INFORMATION_SCHEMA.COLUMNS`
WHERE table_name LIKE '%gemini%'
   OR table_name LIKE '%gen_ai%'
   OR table_name LIKE '%cloudaudit%'
ORDER BY table_name, ordinal_position;

确认字段路径后,可以这样构建部门采用率。以下是可改造模板,假设用户活动表具有 timestampjsonPayload,其中邮箱位于 userIamPrincipal;请根据上一步得到的真实 schema 调整 JSON 路径:

-- Assumption: jsonPayload.userIamPrincipal contains the employee email.
WITH activity AS (
  SELECT
    DATE(timestamp) AS activity_date,
    JSON_VALUE(TO_JSON(jsonPayload), '$.userIamPrincipal') AS user_email
  FROM `your-project-id.gemini_enterprise_logs.discoveryengine_googleapis_com_gemini_enterprise_user_activity`
  WHERE DATE(timestamp) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
),
active_users AS (
  SELECT DISTINCT activity_date, user_email
  FROM activity
  WHERE user_email IS NOT NULL
)
SELECT
  e.department,
  COUNT(DISTINCT a.user_email) AS active_users_30d,
  COUNT(DISTINCT e.employee_email) AS employee_count,
  SAFE_DIVIDE(
    COUNT(DISTINCT a.user_email),
    COUNT(DISTINCT e.employee_email)
  ) AS adoption_rate
FROM `your-project-id.governance.employee_directory` AS e
LEFT JOIN active_users AS a
  ON LOWER(a.user_email) = LOWER(e.employee_email)
WHERE e.employment_status = 'ACTIVE'
GROUP BY e.department
ORDER BY adoption_rate DESC;

同样的建模方式还可以扩展到自定义智能体数量、每百名员工的智能体比例、NotebookLM 使用趋势,以及不同 grounding 连接器的访问量。对于“节省了多少工时”一类价值指标,必须明确计算假设,例如每类任务的基准耗时、人工复核比例和失败重做成本,不能只把对话次数直接换算成生产力。

BigQuery Conversational Analytics 可以根据 schema、业务元数据、经过验证的 SQL 和 UDF 生成查询。团队可以把“活跃用户”“有效会话”“自定义智能体”等词写入业务术语表,并提供经过审核的示例查询,减少不同分析人员对同一指标作出不同解释。自动生成的 SQL 仍应接受权限检查、成本检查和抽样验证。

合规调查需要比仪表板更精细

提示词、模型响应和文件访问路径可能包含个人信息、商业机密或受监管数据。将它们写入 BigQuery 扩大了可分析范围,也扩大了泄露面。生产环境至少应设置:

  • 使用单独项目或数据集隔离原始遥测与汇总指标。
  • 通过 IAM、授权视图和行列级策略限制原文访问。
  • 为提示词、响应和审计数据设置不同的分区过期时间。
  • 对邮箱、文档路径等字段应用数据分类和策略标签。
  • 让普通仪表板读取脱敏聚合表,而不是直接扫描原始消息。
  • 对查看原始提示词、响应及安全告警详情的行为继续保留审计记录。

调查 Model Armor 等安全过滤器产生的告警时,可以按时间范围、用户、会话 ID 和结束原因缩小数据集,再由获得授权的安全人员查看触发文本。查询必须包含分区条件,避免一次合规调查扫描全部历史消息。

Knowledge Catalog Data Profiling 与 Gemini 生成的数据洞察可以帮助识别空值率、唯一值数量、异常分布和跨表关联路径。它们适合加速理解陌生 schema,但不能替代数据所有者对字段含义、保留政策和敏感级别的确认。

上线顺序与边界

建议先建立最小可控闭环:启用所需日志,在隔离数据集中接收数据,验证字段和延迟,再发布少量经过审核的部门采用指标。随后接入 HR 或业务数据、配置业务术语表,并用 Looker Studio 等可视化工具提供管理层视图。批量导出的席位数据与流式交互日志应分别校验,因为二者的时间窗口、粒度和到达延迟不同。

上线前可以检查以下事项:

  • Prompt、response 和 Data Access 日志是否经过隐私、法务与安全审批。
  • Log Router sink 的 writer identity 是否只有目标数据集写权限。
  • 查询是否强制使用时间分区,并设置预算与扫描告警。
  • 核心指标是否有书面定义、负责人和经过验证的 SQL。
  • 管理层仪表板是否只暴露完成匿名化或聚合的数据。
  • 原始内容是否设置最短必要保留期,并具备删除与取证流程。

BigQuery 的价值不只是“能存很多日志”。它把产品级使用数据转化为组织自己的治理模型:IT 团队观察采用,数据团队统一指标,安全团队精确调查,管理层评估投入产出。前提是从第一天就把敏感数据边界、指标口径和查询成本纳入架构,而不是等日志规模增长后再补治理。


相关推荐