指导和见解

SCIM 驱动的 AI API 网关团队控制:配置用户、撤销密钥并保持服务帐户运行

使用 SCIM 和 SSO 作为生命周期输入,然后让网关强制执行显式角色、模型配置文件、支出权限、密钥所有权和服务帐户传输规则。目标是在不破坏生产应用程序的情况下快速下线。

员工离职不应成为停电演习。在许多团队中,身份提供商可以快速禁用员工,但 AI API 网关仍然拥有长期的开发人员密钥、共享脚本、生产服务帐户、经销商租户和计费权限,这些权限无法完全映射到一个人类帐户。实际模式是使用 SCIM 作为生命周期输入,然后将授权、密钥所有权、支出限制、模型访问和审核记录保留为显式网关对象。

问题:身份更改与 API Authorization

不同

SSO 回答用户是否可以登录。SCIM 有助于自动执行用户和组配置。两者本身都无法回答 AI 网关必须执行的每个操作问题:该用户可以管理哪个租户、他们可以使用哪些模型配置文件、哪些密钥是个人的、哪些密钥运行生产、谁可以批准预算增加以及他们可以接触哪些合作伙伴 API 客户对象?

干净的架构将身份视为生命周期事件的来源,而不是完整的授权模型。网关应从身份提供商接收用户和组更改,将其标准化,并将其转换为网关本机记录。然后,应在运行时评估这些记录的管理操作、API密钥创建、模型访问、支出限制、服务帐户所有权和审核导出。

事实: SCIM 2.0 是用于跨域身份管理的 IETF 标准协议。其协议行为在 RFC 7644 中指定,其资源架构在 RFC 7643 中指定。SCIM 为团队提供了跨系统创建、更新、停用和分组用户的标准方法。

建议: 不要将网关授权直接放在 IdP 组名称或请求路径中。使用 SCIM 组作为受控映射表的输入,然后根据网关拥有的记录评估网关角色和策略。

网关应拥有的核心对象

网关需要自己的授权模型,因为 LLM 访问结合了安全性、成本和运营连续性。至少,将这些记录定义为一流对象:

  • 身份:已配置的人类用户,链接到 IdP 主题、电子邮件、状态和组成员身份。
  • 租户或工作区:用户、密钥、预算、模型配置文件、集成和使用的管理边界。
  • 角色:网关权限,例如开发者、租户管理员、结算管理员、模型管理员、审核员或合作伙伴API管理员。
  • 模型配置文件:一组允许的模型、路由规则、数据处理约束和功能门。
  • 预算权限:谁可以支出、提高限额、创建高成本密钥或批准临时例外。
  • 人拥有的API密钥:为一个人创建的密钥,通常会在该人离开时撤销或暂停。
  • 服务帐户:包含所有者、用途、环境、轮换元数据、上次使用的时间戳和附加政策的应用身份。
  • 审核事件:身份、角色、密钥、预算和授权决策的提示最小化记录。

这种分离使得离职具有确定性。用户可以变为非活动状态,而无需删除正确注册为应用程序标识的服务帐户。租户管理员可以失去计费权限,但不会失去基本的只读审核访问权限。转销商可以管理分配的客户租户,而无需枚举不相关的租户。

配置流程:从 SCIM 事件到网关访问

有用的配置流程在设计上很无聊。它应该容忍重试、部分更新和延迟的组同步。 SCIM 实现在时间、删除与停用行为、属性映射和组支持方面有所不同,因此网关应避免脆弱的假设。

1.摄取并规范用户

当网关收到 SCIM 用户创建或更新事件时,它应使用稳定的外部标识符更新插入身份记录。以标准化形式存储用户状态、显示名称、电子邮件、部门或成本中心(如果有)以及原始 IdP 组引用。避免使用电子邮件作为唯一不可变的标识符;电子邮件发生变化。

标准化身份字段示例:

{
  "external_subject": "idp-user-12345",
  "email": "dev@example.com",
  "active": true,
  "groups": ["llm-developers", "support-ai-prod"],
  "cost_center": "support",
  "last_scim_event_at": "2026-08-30T10:14:00Z"
}

2.将组转换为网关角色

使用网关管理的转换表。每行应将 IdP 组引用绑定到租户、角色和可选配置文件(例如允许的模型或预算类别)。未映射的组不应授予任何内容。特权映射应需要审核,尤其是结算管理员、模型管理员、租户所有者和合作伙伴 API admin.

{
  "idp_group": "support-ai-prod",
  "tenant": "support",
  "role": "developer",
  "model_profile": "support-approved-models",
  "budget_profile": "standard-team-budget",
  "requires_review": false
}

建议:对未映射的组使用默认拒绝。新创建的组最好不产生 AI 访问权限,而不是因为字符串与路径前缀匹配而意外继承生产模型或计费权限。

3.实现有效访问

群组转换后,具体化用户的有效网关访问权限:租户成员身份、角色、模型配置文件、密钥创建权限、预算权限和集成权限。运行时检查应读取此物化视图或高度一致的授权服务,而不是解析每个请求的 IdP 组字符串。

这还为管理员提供了可用的访问权限审核:“向我显示可以在支持租户中创建密钥的每个人”、“向我显示谁可以提高每月支出限额”以及“向我显示可以访问高成本推理模型的所有用户。”

将人员密钥与服务帐户分开

最重要的操作区别很简单:人性化的钥匙代表一个人;一个服务帐户代表一个应用程序。将两者视为通用 API 键会产生脱离风险。

人类拥有的密钥应继承人类用户的生命周期。当用户变得不活动时,网关应阻止新密钥创建并暂停或撤销个人密钥。这些密钥还应包含所有者、租户、模型配置文件、预算配置文件、上次使用的时间戳和用途元数据,以便团队可以在下线前发现滥用情况。

服务帐户密钥不应由一名离职员工拥有,从而破坏生产。服务帐户应至少有两个人类所有者或所属组、环境标签、轮换策略、上次使用的可见性和策略配置文件。当一个所有者离开时,它应该保持活动状态,前提是存在另一个有效的所有者或打破玻璃进程。

事实: 主要云指南通常不鼓励使用非托管的长期服务帐户密钥,并建议限制异常。同样的原则也适用于 AI 网关密钥:保持应用身份明确、范围明确、经过审查和轮换。

建议:如果无人值守的作业正在使用个人密钥,请勿在退出期间默默地保留它。隔离它,将其标记为错误分类的生产用途,要求所有权转移,并将其替换为政策下的服务帐户密钥。

将取消配置设计为状态机

取消配置应该是一个工作流程,而不是单个删除命令。状态机为网关提供了足够的结构,可以快速降低风险,同时保持可审核性和生产连续性。

状态 1:已收到取消配置

网关接收 SCIM 停用、删除、组删除或等效生命周期事件。记录事件、事件来源以及之前的有效访问。由于 IdP 事件可能会重试或无序到达,因此请将此步骤设为幂等。

状态 2:用户标记为非活动状态

将网关身份设置为非活动状态。阻止交互式登录、管理操作、新密钥创建、新服务帐户创建和预算更改。这应该在较慢的清理任务运行之前发生。

状态 3:个人密钥暂停

立即或在政策定义的短暂宽限期后暂停人类拥有的密钥。更安全的默认设置是立即暂停。为了获得开发者体验,网关可以返回明确的身份验证错误,为管理员指明非活动所有者、密钥 ID、租户和上次成功使用的信息。

状态 4:需要转让所有权

查找非活动用户拥有的资源:服务帐户、租户、模型配置文件、集成、结算联系人、合作伙伴 API 凭据和提醒渠道。当存在有效的拥有组时自动转移所有权。否则,将资源放入“需求所有者”队列中。

状态 5:通知和审核

通知租户所有者、安全管理员或结算管理员。通知应包括受影响的密钥、上次使用的时间戳、过去 30 和 90 天内的使用情况、需要新所有者的服务帐户以及最近为生产流量提供服务的任何个人密钥。

状态 6:最终确定

在保留规则允许后,完成用户属性的删除或匿名化,同时保留所需的审核记录。身份生命周期审核通常不需要原始提示。存储描述策略决策、对象 ID、参与者、租户、时间戳和结果的提示最小化事件。

模型访问权限和支出限制属于同一审核

AI 网关授权不仅仅涉及谁可以调用端点。可以允许用户调用低成本模型进行开发,但不能调用高成本推理模型、托管工具、批处理作业或生产别名。可以允许用户从团队预算中支出,但不能批准预算增加。

对于每个有效角色,定义相关的费用和模型权限:

  • 允许的模型配置文件和内部别名。
  • 每个请求的最高预估费用。
  • 每月或每日预算配置文件。
  • 创建个人密钥的权限。
  • 创建或拥有服务帐户的权限。
  • 使用托管工具、文件处理、实时会话或批量工作负载的权限。
  • 查看使用情况分析、发票或成本中心导出的权限。

建议: 构建一项访问审核导出,将身份、网关角色、活动密钥、服务帐户、过去 30 和 90 天内的使用情况、模型权限和预算权限结合起来。这比简单的用户列表更有用,因为它同时显示了运营风险和消费能力。

合作伙伴API和多租户Authorization

合作伙伴API自动化添加了另一个授权边界。代理机构、经销商或平台可以通过 API 来配置客户租户、用户、密钥、预算和使用情况导出。 SCIM 驱动的内部用户不应仅仅因为管理合作伙伴自己的租户而自动获得广泛的客户对象访问权限。

使每个合作伙伴 API 操作都受调用方和客户租户的限制。配置应该是幂等的:创建相同的客户租户、组映射或用户两次应该收敛到一种预期状态。列出端点应该只返回明确允许调用者管理的对象。

这很重要,因为对象级和对象属性授权失败是常见的 API 风险。在 AI 网关中,暴露的对象是敏感的:租户记录、API 密钥、使用分类帐、预算、模型权限、成员列表和服务帐户。网关应使用多个身份和多个租户 ID 来测试这些路径,而不仅仅是使用 happy-path 管理员。

有用的测试包括:

  • 租户 A 管理员尝试读取、轮换或撤销租户 B 密钥。
  • 已暂停的用户尝试旧的个人 API 密钥。
  • 转销商管理员尝试枚举非自有客户租户。
  • 项目成员尝试修改结算设置。
  • 服务帐户所有者尝试授予自己结算管理员权限。
  • 合作伙伴 API 凭据尝试在其允许的客户范围之外更改模型配置文件。

无需立即囤积即可进行审核

身份生命周期调查通常需要了解谁更改了访问权限、评估了哪些政策、受影响的对象以及操作是否成功。他们通常不需要原始提示。为身份和政策决策保留单独的审核流。

记录事件,例如:

  • 用户已配置、更新、停用或删除。
  • 映射、取消映射或拒绝的组。
  • 已授予、更改或删除网关角色。
  • 个人密钥已创建、暂停、撤销或停用后使用。
  • 服务帐户所有者已更改。
  • 授予或删除预算权限。
  • 已附加或已分离模型配置文件。
  • 合作伙伴 API 请求因租户范围而被拒绝。

每个事件应包括参与者、主题、租户、对象类型、对象 ID、源系统、决策、原因代码和时间戳。使用稳定的 ID 而不是原始的提示内容。在需要负载详细信息的地方,存储结构化策略元数据而不是模型输入。

实施清单

在 AI 网关中实施 SCIM 驱动的团队控制时请使用此清单:

  • 为租户、角色、用户、密钥、服务帐户、模型配置文件、预算配置文件和集成访问定义网关本机对象。
  • 将外部 IdP 主题与电子邮件分开存储。
  • 使 SCIM 用户和组更新插入幂等。
  • 使用经过审核的具有默认拒绝行为的组到角色转换表。
  • 需要明确批准特权角色映射。
  • 在架构和用户界面中区分人类拥有的密钥和服务帐户密钥。
  • 阻止不活跃用户登录、执行管理操作、创建密钥和更改预算。
  • 在取消配置期间暂停个人密钥。
  • 转移或隔离非活动用户拥有的资源。
  • 要求服务帐户拥有所有者元数据、用途、环境、上次使用的时间戳和轮换元数据。
  • 将访问权限审核与使用情况分析和预算权威结合起来。
  • 跨租户、客户、用户、密钥和结算对象测试对象级授权。
  • 默认情况下保持身份审核记录最小化。

权衡

SCIM 减少了手动访问偏差,但并没有消除对特定于网关的授权的需要。不同的身份提供商以不同的方式处理组同步、删除、停用、重试和属性映射。网关应容忍部分信息并安全收敛。

立即撤销个人密钥可降低退出风险,但当无人值守的作业使用开发人员密钥时,可能会暴露出不良的操作卫生状况。这并不是无限期保留个人密钥的理由。这是尽早检测个人密钥生产使用情况并在员工离开之前将其迁移到服务帐户的原因。

细粒度的组映射可以表达精确的治理,但太多的组会变得难以审核。较小的网关角色集与模型配置文件和预算配置文件相结合通常更易于操作。

服务帐户使应用程序保持运行,但它们可能会变得无人拥有或权限过高。需要所有者、审核日期、轮换元数据、范围模型配置文件、范围预算和上次使用的分析。

预测:AI 网关访问审核将越来越多地将身份、使用情况、支出权限和模型权限合并到一份报告中。对于运行生产 AI 工作负载的团队来说,在不显示“他们可以花费什么以及哪些密钥仍然处于活动状态”的情况下查看“谁有权访问”将过于肤浅。

可行的结论

持久模式是让 SCIM 和 SSO 驱动生命周期,然后让网关拥有授权。从身份提供商配置用户、通过经过审核的映射转换组、具体化租户角色、显式绑定模型和预算配置文件,以及以不同于服务帐户的方式对待人工密钥。

对于卸载,请使用状态机:接收身份事件、将用户标记为非活动状态、阻止新的访问、暂停个人密钥、转移或隔离拥有的资源、通知所有者,并在保留规则允许后完成删除。这为安全团队提供了快速撤销,为平台团队提供了生产连续性,并为财务和审计人员提供了谁对模型、支出、密钥和租户拥有权限的清晰记录。

相关阅读

FAQ

常见问题

SCIM 组是否应该直接映射到 API 网关角色?
使用 SCIM 组作为输入,但通过经过审查的网关转换表来映射它们。直接字符串匹配使得特权访问难以审核,并且在组名称更改时可能会意外授予权限。
下线期间用户的 API 密钥会发生什么情况?
当用户被取消配置时,个人密钥应被暂停或撤销。仅当服务帐户密钥具有有效的所有者、范围策略、轮换元数据和审查控制时,才应继续使用。
身份生命周期审核是否需要存储提示?
通常不会。生命周期审计记录应捕获参与者、主题、租户、对象 ID、策略决策、时间戳和原因代码。大多数配置、取消配置和授权调查不需要原始提示。
应如何测试合作伙伴 API 访问?
使用多个呼叫者和租户 ID 进行测试:一个客户管理员针对另一客户的对象,针对旧密钥的暂停用户,针对非拥有租户的经销商凭据,以及针对计费或模型管理设置的普通成员。