Skip to content
指导和见解

AI API 网关的控制平面审计跟踪:重建事件期间的密钥、租户和支出变化

运行时日志解释模型调用,但事件响应通常取决于管理员历史记录:谁创建了密钥、更改了支出限制、升级了路由配置文件或撤销了访问权限。构建仅附加的审计跟踪,将网关、合作伙伴 API、身份、提供商和使用事件连接起来,默认情况下不存储原始提示。

当人工智能支出激增或密钥泄漏时,运行时遥测是不够的。安全和 FinOps 团队需要重建控制平面更改:谁创建或更改了 API 密钥、哪个租户或项目受到影响、涉及哪个上游凭据、支出限额在峰值之前是否发生变化以及在遏制期间撤销了哪些内容。

实用模式是用于 AI API 网关的标准化、仅附加审核事件管道。运行时跟踪回答了模型调用所做的事情。控制平面审核日志可回答谁更改了访问权限、预算、路由、密钥、服务帐户、租户状态、模型配置文件、信用和提供商凭据。

事实、建议和预测

事实:一些 AI 提供商公开管理或审核界面,涵盖组织配置、项目、API 密钥、服务帐户、工作区、成员、使用情况和成本报告。覆盖范围因提供商、帐户类型和部署环境而异。 OpenTelemetry 还提供事件和 GenAI 遥测属性的通用语义约定,同时警告捕获的输入和输出内容可能包含敏感数据。

建议:将网关视为网关特定概念的规范审核层:虚拟密钥、租户、经销商客户、钱包、支出限制、模型配置文件、合作伙伴 API 自动化、上游凭据池和紧急隔离操作。在可用的情况下关联提供商管理事件,但明确标记间隙,而不是假装每个上游控制台操作都是可观察的。

预测:AI 控制平面审核将成为企业 AI 网关的标准要求,特别是在团队转售模型访问权限、自动化客户配置或管理高风险服务帐户的情况下。提供商审核 API 将得到改进,但网关仍需要自己的规范化事件模型,因为提供商资源概念仍将有所不同。

首先定义调查问题

审核跟踪的设计应从响应程序在事件期间运行的查询开始。从简短的问题列表开始:

  • 在异常发生之前创建、更新、重新启用或撤销了哪些密钥?
  • 每个密钥影响哪些租户、客户、项目、工作区、钱包或成本中心?
  • 哪个参与者进行了更改:人工管理员、服务帐户、合作伙伴 API 客户端、SCIM 流程、支持操作员或计划的自动化?
  • 使用了哪种身份验证方法:SSO 会话、管理 API 令牌、服务帐户、break-glass 帐户或网络钩子重播?
  • 在使用量增加之前,支出限额、模型访问权限、路由配置文件、费率限制或积分余额是否发生变化?
  • 哪个上游提供商凭据、项目、服务帐户或工作区处理了生成的流量?
  • 发生了哪些遏制行动?这些行动是否完成?

如果网关已有API密钥管理、计费、团队控制和提供商路由,审核跟踪应加入这些系统,而不是创建另一个独立的日志流。

使用标准化审核事件架构

不要存储任意JSON blob,并希望分析人员稍后能够解释它们。为每个控制平面事件使用稳定的架构,然后允许在受控命名空间下进行特定于源的扩展。

核心领域

{
  "event_id": "evt_01J...",
  "occurred_at": "2026-09-09T13:51:22.481Z",
  "ingested_at": "2026-09-09T13:51:23.040Z",
  "source_system": "gateway_admin_api",
  "action": "key.issued",
  "result": "success",
  "risk_level": "high",
  "actor_type": "service_account",
  "actor_id": "sa_partner_provisioner_42",
  "actor_org_id": "org_acme_reseller",
  "auth_method": "partner_api_key",
  "resource_type": "virtual_api_key",
  "resource_id": "vk_123",
  "tenant_id": "tenant_789",
  "customer_id": "cust_456",
  "project_id": "proj_support_bot",
  "workspace_id": null,
  "key_id_hash": "sha256:...",
  "upstream_provider": "provider_a",
  "upstream_credential_id_hash": "sha256:...",
  "request_correlation_id": "req_abc",
  "idempotency_key_hash": "sha256:...",
  "ip_address": "203.0.113.10",
  "user_agent_hash": "sha256:...",
  "policy_before_hash": null,
  "policy_after_hash": "sha256:..."
}

架构应支持人类可读的调查和机器连接。最重要的字段是操作、参与者、资源、租户、密钥指纹、上游凭据沿袭、相关 ID 和策略快照哈希。

为什么使用哈希值而不是原始值?

审核跟踪需要稳定的连接点,而不是秘密。存储虚拟密钥和上游凭证的确定性哈希或指纹。存储策略快照的哈希值,经过编辑的快照仅可供授权的审核查看者使用。这使得调查人员能够证明支出政策、路由配置文件或密钥范围发生了更改,而无需在每个导出的日志中暴露原始凭据或敏感的内部配置。

将运行时遥测与控制平面审核日志分开

AI 网关通常收集运行时指标:请求 ID、模型、提供商、令牌计数、延迟、成本估算、最终成本、缓存行为、安全信号和错误状态。这些记录对于AI API使用情况分析至关重要,但它们与控制平面审核事件不同。

运行时记录可能会显示:

{
  "request_id": "req_model_001",
  "tenant_id": "tenant_789",
  "key_id_hash": "sha256:...",
  "model_profile_id": "profile_support_premium",
  "provider": "provider_a",
  "started_at": "2026-09-09T13:56:10Z",
  "estimated_cost_usd": "0.18",
  "settled_cost_usd": "0.22",
  "status": "success"
}

控制平面审核事件显示:

{
  "event_id": "evt_profile_002",
  "action": "model_profile.changed",
  "tenant_id": "tenant_789",
  "resource_id": "profile_support_premium",
  "actor_id": "sa_partner_provisioner_42",
  "occurred_at": "2026-09-09T13:54:03Z",
  "policy_before_hash": "sha256:old",
  "policy_after_hash": "sha256:new",
  "risk_level": "high"
}

两条记录都需要共享联接策略,但它们应具有不同的保留、访问控制和负载规则。不应对控制平面审核日志进行采样。可以对运行时跟踪进行采样以获取可观察性成本,同时使用情况和帐单账本应保持完整。

将网关颁发的虚拟密钥设为连接点

在多租户网关中,虚拟密钥是最有用的调查句柄。网关颁发的密钥可以指向租户、客户、用户、服务帐户、模型配置文件、支出限制、路由策略、速率限制、上游提供商凭据和计费钱包。

在事件发生期间,响应者应该能够从关键指纹转向:

  • 拥有密钥的租户和客户;
  • 创建或最后修改它的参与者;
  • 每个时间点的范围、模型配置文件和支出限制;
  • 用于使用该密钥进行的调用的上游提供商凭据;
  • 该密钥生成的使用情况和费用记录;
  • 撤销、轮换、隔离和恢复事件。

这对于通过合作伙伴API自动化发布客户范围密钥的平台尤其重要。如果没有稳定的虚拟密钥指纹,配置事件、信用更改、租户配置和运行时使用就会成为单独的故事。

捕捉一流的合作伙伴API活动

合作伙伴 API 会带来审核风险,因为它们会自动执行过去在管理控制台中手动执行的操作。它们还会引发商业纠纷:转销商可能会询问谁充值了积分、何时发放客户密钥或者租户为何超出预算。

至少将这些事件记录为一级审核操作:

  • customer.created
  • customer.updated
  • key.issued
  • key.scope_changed
  • key.revoked
  • credit.topup.requested
  • credit.topup.settled
  • spend_limit.changed
  • rate_limit.changed
  • model_profile.changed
  • tenant.quarantined
  • tenant.unquarantined
  • webhook.replayed
  • idempotency_key.reused

对于与金钱相关的事件,存储精确的小数金额、货币、之前的余额、新的余额、外部付款参考和结算状态。对于幂等操作,请存储幂等密钥哈希和规范操作 ID,以便稍后可以解释重复的重试。

关联提供商管理日志而不依赖于它们

提供商控制平面并不统一。一些提供商公开组织设置、项目、密钥、用户、服务帐户、工作区、使用情况和成本的审核日志和管理 API。其他则需要控制台导出、云审核日志、计费报告或手动对账。即使 API 存在,它们的资源名称和保留政策也不同。

因此,网关审核架构应使用功能标志:

{
  "provider": "provider_a",
  "capabilities": {
    "admin_audit_api": true,
    "project_key_inventory": true,
    "service_account_inventory": true,
    "workspace_cost_report": false,
    "credential_last_used_at": true
  }
}

导入提供程序事件时,将它们规范化到同一审核表中,但保留源元数据:

  • source_system:provider_admin_api、provider_console_export、cloud_audit_log、billing_report
  • source_event_id:原始提供商事件 ID(如果可用)
  • source_resource_path:原始项目、工作区、密钥或服务帐户路径
  • provider_capability_gap:当网关推断上下文而不是接收直接事件时为 true

我们的目标不是追求完美的可见性。目标是明确覆盖范围和差距,以便事件报告能够区分观察到的事实和推断的关系。

使用仅附加存储和更正事件

审核事件应该是不可变的。如果事件解析不正确,请编写更正事件,而不是编辑原始行。这对于账单纠纷、经销商信用纠纷、密钥泄露调查和事件后审查都很重要。

实用的存储设计使用三层:

  • 热查询存储: 按租户、参与者、操作、密钥哈希、请求相关 ID 建立索引,occurred_at 用于快速事件查询。
  • 不可变存档:仅附加对象存储或具有保留控制和完整性检查功能的分类帐样式表。
  • 导出流:用于企业安全工作流程的 SIEM、仓库或事件总线导出。

导出很有用,但不要让 SIEM 成为唯一的权威商店。通用 SIEM 可能无法理解特定于网关的概念,例如虚拟密钥、租户钱包、模型配置文件、经销商客户或上游凭证池。保持网关分类账的权威性并导出标准化副本。

构建事件查询包

事件响应不应以临时 SQL 开头。针对最常见的场景预先构建已保存的查询。

1.在支出高峰之前创建的密钥

SELECT occurred_at, actor_type, actor_id, tenant_id, customer_id,
       resource_id, key_id_hash, auth_method, ip_address
FROM audit_events
WHERE action IN ('key.issued', 'key.reenabled', 'key.scope_changed')
  AND tenant_id = :tenant_id
  AND occurred_at BETWEEN :spike_start - INTERVAL '24 hours' AND :spike_start
ORDER BY occurred_at;

2.异常使用前的支出限额更改

SELECT occurred_at, actor_id, resource_id,
       policy_before_hash, policy_after_hash, request_correlation_id
FROM audit_events
WHERE action = 'spend_limit.changed'
  AND tenant_id = :tenant_id
  AND occurred_at BETWEEN :window_start AND :window_end
ORDER BY occurred_at;

3.窗口期间触及的上游凭据

SELECT occurred_at, action, actor_id, upstream_provider,
       upstream_credential_id_hash, source_system
FROM audit_events
WHERE upstream_credential_id_hash IS NOT NULL
  AND occurred_at BETWEEN :window_start AND :window_end
ORDER BY occurred_at;

4.针对昂贵路线的车型配置促销

SELECT occurred_at, actor_id, tenant_id, resource_id,
       policy_before_hash, policy_after_hash
FROM audit_events
WHERE action = 'model_profile.changed'
  AND risk_level IN ('medium', 'high', 'critical')
  AND occurred_at BETWEEN :window_start AND :window_end;

5。收容验证

SELECT occurred_at, action, actor_id, tenant_id, resource_type,
       resource_id, result
FROM audit_events
WHERE tenant_id = :tenant_id
  AND action IN ('key.revoked', 'tenant.quarantined',
                 'upstream_credential.rotated', 'spend_limit.changed')
  AND occurred_at >= :containment_start
ORDER BY occurred_at;

这些查询应可供具有基于角色访问权限的安全、平台和 FinOps 团队使用。并非每个调查员都需要查看政策快照详细信息或付款参考。

调查时间表示例

这是显示数据形状的虚构时间线,而不是真实事件:

  • 13:48 — spend_limit.changed:租户每月限额从之前的政策哈希提高到新的政策哈希。
  • 13:51 — key.issued:合作伙伴 API 服务帐户创建的新客户范围密钥。
  • 13:54 — model_profile.changed:租户路由配置文件已更改,以允许更昂贵的模型类。
  • 13:56 — 新密钥指纹的运行时使用率开始增加。
  • 14:05 — 为租户引发支出异常警报。
  • 14:09 — key.revoked:可疑虚拟密钥已撤销。
  • 14:13 — upstream_credential.rotated:提供者凭据轮换为遏制。

此时间线非常有用,因为它连接了管理意图、自动配置、路由策略、运行时成本和控制。默认情况下不需要存储原始提示。

隐私权和保留权的权衡

更多审核细节可以改善取证,但也会增加隐私和合规风险。与原始提示或完整请求正文相比,更喜欢元数据、哈希值、经过编辑的策略快照和相关 ID。如果租户明确启用更深入的日志记录,请将其设为具有自己的审核事件、保留期和访问控制的单独政策。

建议的保留级别:

  • 控制平面审核事件:在完整的合规性和争议窗口中保留未抽样的事件。
  • 使用情况和帐单分类帐:保留发票、税款和退款要求的完整财务记录。
  • 运行时跟踪:根据敏感性和可观察性成本进行采样或缩短保留时间。
  • 原始提示和输出: 默认情况下关闭以进行审核;仅在法律和操作上合理的情况下通过明确的租户政策启用。

租户 ID、密钥指纹、请求 ID、工作流程 ID 和参与者 ID 等高基数字段在某些可观察性系统中的成本很高。不要通过对控制平面审计事件进行采样来解决这个问题。相反,请将完整的审核事件放入分类帐中,并将选定的字段导出到高成本的可观察性工具。

针对风险发出警报,而非每次更改

每个管理事件的实时提醒都会产生噪音。使用风险评分。出现以下情况时立即发出警报:

  • 支出限额大幅提高;
  • 密钥由不寻常的参与者或不寻常的网络创建;
  • 租户未被隔离;
  • 模型配置文件发生更改,以允许更昂贵或限制更少的模型;
  • 创建、导出、轮换或禁用上游提供商凭据;
  • 合作伙伴API幂等性密钥与不同的负载重复使用;
  • 网络钩子重播会更改客户信用或密钥状态。

低风险事件可以进行每日审核或 SIEM 关联。关键是要揭示最有可能解释下游滥用、成本飙升或遏制失败的控制平面变化。

实施清单

  • 为密钥、租户、用户、服务帐户、支出限额、积分、路由配置文件、提供商凭据和隔离定义规范操作名称。
  • 存储不可变的事件 ID 以及发生和摄取的时间戳。
  • 记录参与者类型、参与者 ID、身份验证方法、源系统和请求相关 ID。
  • 对虚拟密钥、上游凭据、幂等性密钥、用户代理和敏感政策内容使用稳定的哈希值。
  • 通过租户 ID、密钥指纹、模型配置文件 ID 和请求相关 ID 将审核事件加入运行时使用情况。
  • 尽可能导入提供商管理事件,并带有功能标志和差距注释。
  • 保持控制平面审核事件不采样。
  • 使用更正事件而不是就地更新编辑。
  • 导出到 SIEM 或仓库,但保持网关特定资源的网关审核分类账规范。
  • 针对密钥创建、支出限额更改、模型配置文件更改、合作伙伴 API 信用事件、上游凭据更改和遏制验证预先构建事件查询。

可行的结论

对于 AI API 事件,关键问题通常不是“发送了什么提示?”这是“在这件事发生之前发生了什么变化?”网关审核跟踪应该能够快速提供答案:新密钥、更改支出限额、合作伙伴 API 自动化、路由配置文件更新、提供商凭据更改以及一条时间线中的遏制操作。

从标准化架构开始,使虚拟密钥指纹成为主要连接点,保持事件仅附加,将运行时遥测与控制平面历史记录分开,并针对不均匀的提供商审核覆盖范围进行设计。这为安全、平台和 FinOps 团队提供了可靠的记录,而无需将审核系统转变为提示仓库。

相关阅读

FAQ

常见问题

AI API 审核日志是否应该存储原始提示和响应?
默认情况下不是。对于控制平面取证,元数据、哈希值、策略快照、密钥指纹、参与者 ID 和相关 ID 通常更合适。原始提示日志记录应该是一个单独的租户策略,具有明确的保留和访问控制。
网关事件调查中最重要的连接键是什么?
网关颁发的虚拟 API 密钥的稳定指纹或哈希通常是最佳加入点。它连接租户所有权、客户配置、支出限制、模型配置文件、运行时使用、上游凭证沿袭和撤销事件。
提供商审核日志可以替代网关审核日志吗?
不会。提供商日志可以丰富调查,但他们不知道所有网关概念,例如虚拟密钥、经销商客户、租户钱包、合作伙伴 API 幂等性和网关​​模型配置文件。网关应该保留自己的规范审计跟踪。
是否应该对控制平面审计日志进行采样以降低成本?
否。如有必要,对运行时跟踪进行采样,但保持控制平面审核事件完整。错过密钥创建、支出限制更改或凭证轮换事件可能会导致事件时间线不可靠。