Help us learn about your current experience with the documentation. Take the survey.
复合身份
GitLab Duo 与 Amazon Q 使用复合身份来验证请求。
出于安全原因,你应该对 GitLab 平台上执行写操作的任何 AI 生成的活动使用复合身份。
先决条件
要生成复合身份令牌,你必须具备:
- 一个服务账户用户,可作为复合身份令牌的主要令牌所有者。
- 因为服务账户仅适用于高级版和终极版实例,所以复合身份仅在 EE GitLab 实例上有效。
- 服务账户用户必须将
composite_identity_enforced布尔属性设置为true。 - 与复合令牌关联的 OAuth 应用程序必须拥有
user:*的动态范围。此范围在 OAuth 应用程序的 Web UI 上不可用。因此,OAuth 应用程序必须以编程方式创建。
如何生成复合身份令牌
满足上述要求后,按照以下步骤生成复合身份令牌。目前仅支持 OAuth 令牌。
- 因为服务账户是机器人用户,无法登录,所以典型的授权码流(要求用户在浏览器中授权访问其账户)不起作用。
- 如果你要与第三方服务集成:
- 为服务账户 + OAuth 应用手动生成 OAuth 授权。示例展示了我们如何为 Amazon Q 执行此操作。确保授权的范围包含发起 AI 请求的人类用户的 ID。
- 可以使用向
'https://gitlab.example.com/oauth/token'发送请求的标准方法,将 OAuth 授权交换为 OAuth 访问令牌。
- 如果你未与第三方服务集成:
- 你可以跳过访问授权,直接手动生成 OAuth 访问令牌。确保令牌的范围包含发起 AI 请求的人类用户的 ID。
- 可以使用向
'https://gitlab.example.com/oauth/token'发送请求的标准方法,刷新 OAuth 访问令牌。
- 返回的访问令牌属于服务账户,但在范围中包含
user:$ID。该令牌可以像标准 OAuth 访问令牌一样刷新。
使用复合身份令牌发出的任何 API 请求都会自动被授权为复合身份请求。因此,服务账户用户和其 ID 包含在令牌范围中的人类用户都必须有权访问该资源。