{{< details >}}

  • Tier: 专业版,旗舰版
  • Offering: JihuLab.com, 私有化部署

{{< /details >}}

服务账户是一种不与个人用户关联的机器用户类型。

服务账户:

  • 不使用许可席位,但在 JihuLab.com 上的试用版本中不可用。在极狐GitLab 私有化部署的试用版本中可用。
  • 不是:
    • 计费用户。
    • Bot 用户。
  • 在群组成员列表中作为服务账户列出。
  • 不能通过 UI 登录极狐GitLab。
  • 不接收通知邮件,因为它是一个非人类账户,电子邮件无效,除非邮件地址设置为有效地址。

您应该在流水线或集成中使用服务账户,在这些地方需要设置和维护凭证,而不会受到个人用户成员变更的影响。

您可以使用 个人访问令牌 作为服务账户进行身份验证。具有个人访问令牌的服务账户用户具有与标准用户相同的能力。这包括与 注册表 交互并使用个人访问令牌进行 Git 操作

速率限制 适用于服务账户:

创建服务账户

您可以创建的服务账户数量受到您许可证下允许的服务账户数量的限制:

  • 在极狐GitLab 基础版中,服务账户不可用。
  • 在极狐GitLab 专业版中,您可以为每个付费席位创建一个服务账户。
  • 在极狐GitLab 旗舰版中,您可以创建无限数量的服务账户。

创建账户的方式取决于您是:

  • 顶级群组所有者。
  • 在极狐GitLab 私有化部署中,管理员。

顶级群组所有者

{{< history >}}

  • 在 JihuLab.com 16.3 中引入。
  • 引入于极狐GitLab 17.5 中,使用名为 allow_top_level_group_owners_to_create_service_accounts功能标志。默认禁用。
  • 在极狐GitLab 17.6 中 GA。功能标志 allow_top_level_group_owners_to_create_service_accounts 已删除。

{{< /history >}}

前提条件:

  • 您必须在顶级群组中具有所有者角色。
  • 对于极狐GitLab 私有化部署或极狐GitLab Dedicated,顶级群组所有者必须被 允许创建服务账户
  1. 创建服务账户

    此服务账户仅与您的顶级群组关联,但不是任何特定群组或项目的成员。

  2. 列出所有服务账户用户

  3. 为服务账户用户创建个人访问令牌

    您通过 设置个人访问令牌的范围 定义服务账户的范围。

    可选。您可以 创建没有到期日期的个人访问令牌

    响应包括个人访问令牌值。

  4. 通过 手动将服务账户用户添加到群组或项目 使此服务账户成为群组或项目成员。
  5. 使用返回的个人访问令牌值作为服务账户用户进行身份验证。

极狐GitLab 私有化部署中的管理员

{{< details >}}

  • Offering: 私有化部署

{{< /details >}}

前提条件:

  • 您必须是极狐GitLab 私有化部署实例的管理员。
  1. 创建服务账户

    此服务账户与整个实例关联,但不是任何特定群组或项目的成员。

  2. 列出所有服务账户用户

  3. 为服务账户用户创建个人访问令牌

    您通过 设置个人访问令牌的范围 定义服务账户的范围。

    可选。您可以 创建没有到期日期的个人访问令牌

    响应包括个人访问令牌值。

  4. 通过 手动将服务账户用户添加到群组或项目 使此服务账户成为群组或项目成员。
  5. 使用返回的个人访问令牌值作为服务账户用户进行身份验证。

将服务账户添加到子群组或项目

在功能上,服务账户与 外部用户 相同,首次创建时具有最低访问权限。

您必须手动将服务账户添加到每个您希望账户能够访问的 项目群组

您可以添加到项目或群组的服务账户数量没有限制。

服务账户:

  • 可以在同一顶级群组的多个子群组和项目中具有不同角色。
  • 由顶级群组所有者创建时,仅属于一个顶级群组。

添加到子群组或项目

您可以通过以下方式将服务账户添加到子群组或项目:

更改服务账户在子群组或项目中的角色

您可以通过 UI 或 API 更改服务账户在子群组或项目中的角色。

要使用 UI,请转到子群组或项目的成员列表并更改服务账户的角色。

要使用 API,请调用以下端点:

curl --request POST --header "PRIVATE-TOKEN: <PRIVATE-TOKEN>" \ --data "user_id=<service_account_user_id>&access_level=30" "https://gitlab.example.com/api/v4/projects/<project_id>/members"

有关属性的更多信息,请参见 编辑群组或项目成员的 API 文档

旋转个人访问令牌

前提条件:

  • 对于由顶级群组所有者创建的服务账户,您必须在顶级群组中具有所有者角色或是管理员。
  • 对于由管理员创建的服务账户,您必须是极狐GitLab 私有化部署实例的管理员。

使用群组 API 为服务账户用户 旋转个人访问令牌

撤销个人访问令牌

前提条件:

  • 您必须以服务账户用户身份登录。

要撤销个人访问令牌,请使用 个人访问令牌 API。您可以使用以下方法之一:

删除服务账户

顶级群组所有者

前提条件:

  • 您必须在顶级群组中具有所有者角色。

要删除服务账户,使用服务账户 API 删除服务账户用户

极狐GitLab 私有化部署中的管理员

{{< details >}}

  • Offering: 私有化部署

{{< /details >}}

前提条件:

  • 您必须是服务账户关联实例的管理员。

要删除服务账户,使用用户 API 删除服务账户用户

禁用服务账户

前提条件:

  • 您必须具有服务账户关联群组的所有者角色。

如果您不是实例或群组的管理员,则无法直接删除该服务账户。相反:

  1. 将服务账户从所有子群组和项目中移除:

    curl --request DELETE --header "PRIVATE-TOKEN: <access_token_id>" "https://gitlab.example.com/api/v4/groups/<group_id>/members/<service_account_id>"
    

    有关更多信息,请参见 从群组或项目中移除成员的 API 文档

相关主题

故障排除

添加服务账户时出现“您将产生额外费用”警告

当您添加服务账户时,可能会看到警告消息,指出此操作将由于超出订阅席位数量而产生额外费用。

添加服务账户不会:

  • 产生额外费用。
  • 在您添加账户后增加席位使用量。