Help us learn about your current experience with the documentation. Take the survey.

复合身份

GitLab Duo 与 Amazon Q 使用复合身份来验证请求。

出于安全原因,你应该对 GitLab 平台上执行写操作的任何 AI 生成的活动使用复合身份。

先决条件

要生成复合身份令牌,你必须具备:

  1. 一个服务账户用户,可作为复合身份令牌的主要令牌所有者。
  2. 因为服务账户仅适用于高级版和终极版实例,所以复合身份仅在 EE GitLab 实例上有效。
  3. 服务账户用户必须将 composite_identity_enforced 布尔属性设置为 true
  4. 与复合令牌关联的 OAuth 应用程序必须拥有 user:*动态范围。此范围在 OAuth 应用程序的 Web UI 上不可用。因此,OAuth 应用程序必须以编程方式创建。

如何生成复合身份令牌

满足上述要求后,按照以下步骤生成复合身份令牌。目前仅支持 OAuth 令牌。

  1. 因为服务账户是机器人用户,无法登录,所以典型的授权码流(要求用户在浏览器中授权访问其账户)不起作用。
  2. 如果你要与第三方服务集成:
    1. 为服务账户 + OAuth 应用手动生成 OAuth 授权。示例展示了我们如何为 Amazon Q 执行此操作。确保授权的范围包含发起 AI 请求的人类用户的 ID。
    2. 可以使用向 'https://gitlab.example.com/oauth/token' 发送请求的标准方法,将 OAuth 授权交换为 OAuth 访问令牌。
  3. 如果你未与第三方服务集成:
    1. 你可以跳过访问授权,直接手动生成 OAuth 访问令牌。确保令牌的范围包含发起 AI 请求的人类用户的 ID。
    2. 可以使用向 'https://gitlab.example.com/oauth/token' 发送请求的标准方法,刷新 OAuth 访问令牌。
  4. 返回的访问令牌属于服务账户,但在范围中包含 user:$ID。该令牌可以像标准 OAuth 访问令牌一样刷新。

使用复合身份令牌发出的任何 API 请求都会自动被授权为复合身份请求。因此,服务账户用户和其 ID 包含在令牌范围中的人类用户都必须有权访问该资源。