{{< details >}}

  • Tier: Ultimate
  • Offering: JihuLab.com, 私有化部署

{{< /details >}}

{{< history >}} - 在极狐GitLab 15.4 中引入。部署在 customizable_roles 标志后面,默认禁用。 - 在极狐GitLab 15.9 中默认启用。 - 在极狐GitLab 16.0 中添加了读取漏洞。 - 在极狐GitLab 16.1 中添加了管理员漏洞。 - 在极狐GitLab 16.3 中添加了读取依赖项。 - 在极狐GitLab 16.3 中添加了名称和描述字段。 - 在极狐GitLab 16.4 中引入了管理员合并请求,带有名为 admin_merge_request 的标志。默认禁用。 - 在极狐GitLab 16.5 中移除了功能标志 admin_merge_request。 - 在极狐GitLab 16.5 中引入了管理员组成员功能,使用名为 admin_group_member功能标志。默认禁用。该功能标志在极狐GitLab 16.6 中已被移除。 - 在极狐GitLab 16.5 中引入了管理项目访问令牌,使用名为 manage_project_access_tokens功能标志。默认禁用。 - 在极狐GitLab 16.7 中引入了归档项目。 - 在极狐GitLab 16.8 中引入了删除项目。 - 在极狐GitLab 16.8 中引入了管理组访问令牌。 - 在极狐GitLab 16.8 中引入了管理员 Terraform 状态。 - 在极狐GitLab 16.9 中允许在极狐GitLab私有化部署上创建和删除实例范围的自定义角色引入。 - 在极狐GitLab 17.9 中引入了管理员安全测试,使用名为 custom_ability_admin_security_testing功能标志。默认禁用。

{{< /history >}}

使用此 API 来和 JihuLab.com 群组或整个极狐GitLab 私有化部署实例的成员角色交互。

管理实例成员角色

{{< details >}}

  • Tier: 旗舰版
  • Offering: 私有化部署

{{< /details >}}

先决条件:

获取所有实例成员角色

获取实例中的所有成员角色。

GET /member_roles

示例请求:

curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles"

示例响应:

[
  {
    "id": 2,
    "name": "Instance custom role",
    "description": "Custom guest that can read code",
    "group_id": null,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": false,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": false,
    "read_vulnerability": false,
    "remove_group": false,
    "remove_project": false
  }
]

创建一个实例成员角色

创建一个全局范围的成员角色。

POST /member_roles

支持的属性:

属性 类型 必需 描述
name string 成员角色的名称。
description string 成员角色的描述。
base_access_level integer 配置角色的基本访问级别。有效值为 10 (访客), 15 (规划者), 20 (报告者), 30 (开发者), 40 (维护者), 或 50 (所有者)。
admin_cicd_variables boolean 创建、读取、更新和删除 CI/CD 变量的权限。
admin_compliance_framework boolean 管理合规框架的权限。
admin_group_member boolean 添加、删除和分配群组成员的权限。
admin_merge_request boolean 审批合并请求的权限。
admin_push_rules boolean 在群组或项目级别配置推送规则的权限。
admin_terraform_state boolean 管理项目 terraform 状态的权限。
admin_vulnerability boolean 编辑漏洞对象的权限,包括状态和链接议题。
admin_web_hook boolean 管理 web hooks 的权限。
archive_project boolean 归档项目的权限。
manage_deploy_tokens boolean 管理部署令牌的权限。
manage_group_access_tokens boolean 管理群组访问令牌的权限。
manage_merge_request_settings boolean 配置合并请求设置的权限。
manage_project_access_tokens boolean 管理项目访问令牌的权限。
manage_security_policy_link boolean 链接安全策略项目的权限。
read_code boolean 读取项目代码的权限。
read_runners boolean 查看项目 runner 的权限。
read_dependency boolean 读取项目依赖的权限。
read_vulnerability boolean 读取项目漏洞的权限。
remove_group boolean 删除或恢复群组的权限。
remove_project boolean 删除项目的权限。

有关可用权限的更多信息,请参阅自定义权限

示例请求:

 curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest (instance)", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/member_roles"

示例响应:

{
  "id": 3,
  "name": "Custom guest (instance)",
  "group_id": null,
  "description": null,
  "base_access_level": 10,
  "admin_cicd_variables": false,
  "admin_compliance_framework": false,
  "admin_group_member": false,
  "admin_merge_request": false,
  "admin_push_rules": false,
  "admin_terraform_state": false,
  "admin_vulnerability": false,
  "admin_web_hook": false,
  "archive_project": false,
  "manage_deploy_tokens": false,
  "manage_group_access_tokens": false,
  "manage_merge_request_settings": false,
  "manage_project_access_tokens": false,
  "manage_security_policy_link": false,
  "read_code": true,
  "read_runners": false,
  "read_dependency": false,
  "read_vulnerability": false,
  "remove_group": false,
  "remove_project": false
}

删除一个实例成员角色

从实例中删除成员角色。

DELETE /member_roles/:member_role_id

支持的属性:

属性 类型 必需 描述
member_role_id integer 成员角色的 ID。

如果成功,返回 204 和一个空响应。

示例请求:

curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles/1"

管理群组成员角色

{{< details >}}

  • Tier: Ultimate
  • Offering: JihuLab.com

{{< /details >}}

先决条件:

  • 你必须拥有该群组的所有者角色。

获取所有群组成员角色

GET /groups/:id/member_roles

支持的属性:

属性 类型 必需 描述
id integer/string 群组的 ID 或 URL 编码路径

示例请求:

curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles"

示例响应:

[
  {
    "id": 2,
    "name": "Guest + read code",
    "description": "Custom guest that can read code",
    "group_id": 84,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": false,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": false,
    "read_vulnerability": false,
    "remove_group": false,
    "remove_project": false
  },
  {
    "id": 3,
    "name": "Guest + security",
    "description": "Custom guest that read and admin security entities",
    "group_id": 84,
    "base_access_level": 10,
    "admin_cicd_variables": false,
    "admin_compliance_framework": false,
    "admin_group_member": false,
    "admin_merge_request": false,
    "admin_push_rules": false,
    "admin_terraform_state": false,
    "admin_vulnerability": true,
    "admin_web_hook": false,
    "archive_project": false,
    "manage_deploy_tokens": false,
    "manage_group_access_tokens": false,
    "manage_merge_request_settings": false,
    "manage_project_access_tokens": false,
    "manage_security_policy_link": false,
    "read_code": true,
    "read_runners": false,
    "read_dependency": true,
    "read_vulnerability": true,
    "remove_group": false,
    "remove_project": false
  }
]

添加一个成员角色到群组

{{< history >}}

  • 当创建自定义角色的时候新增名称和描述的能力引入于极狐GitLab 16.3。

{{< /history >}}

将成员角色添加到群组。你只能在群组的根级别添加成员角色。

POST /groups/:id/member_roles

参数:

属性 类型 必需 描述
id integer/string 群组的 ID 或 URL 编码路径
admin_cicd_variables boolean 创建、读取、更新和删除 CI/CD 变量的权限。
admin_compliance_framework boolean 管理合规框架的权限。
admin_group_member boolean 添加、删除和分配群组成员的权限。
admin_merge_request boolean 审批合并请求的权限。
admin_push_rules boolean 在群组或项目级别配置推送规则的权限。
admin_terraform_state boolean 管理项目 terraform 状态的权限。
admin_vulnerability boolean 管理项目漏洞的权限。
admin_web_hook boolean 管理 web hooks 的权限。
archive_project boolean 归档项目的权限。
manage_deploy_tokens boolean 管理部署令牌的权限。
manage_group_access_tokens boolean 管理群组访问令牌的权限。
manage_merge_request_settings boolean 配置合并请求设置的权限。
manage_project_access_tokens boolean 管理项目访问令牌的权限。
manage_security_policy_link boolean 链接安全策略项目的权限。
read_code boolean 读取项目代码的权限。
read_runners boolean 查看项目 runner 的权限。
read_dependency boolean 读取项目依赖的权限。
read_vulnerability boolean 读取项目漏洞的权限。
remove_group boolean 删除或恢复群组的权限。
remove_project boolean 删除项目的权限。

示例请求:

 curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "Custom guest", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/groups/84/member_roles"

示例响应:

{
  "id": 3,
  "name": "Custom guest",
  "description": null,
  "group_id": 84,
  "base_access_level": 10,
  "admin_cicd_variables": false,
  "admin_compliance_framework": false,
  "admin_group_member": false,
  "admin_merge_request": false,
  "admin_push_rules": false,
  "admin_terraform_state": false,
  "admin_vulnerability": false,
  "admin_web_hook": false,
  "archive_project": false,
  "manage_deploy_tokens": false,
  "manage_group_access_tokens": false,
  "manage_merge_request_settings": false,
  "manage_project_access_tokens": false,
  "manage_security_policy_link": false,
  "read_code": true,
  "read_runners": false,
  "read_dependency": false,
  "read_vulnerability": false,
  "remove_group": false,
  "remove_project": false
}

在极狐GitLab 16.3 及更高版本中,你可以使用 API:

删除群组的成员角色

删除群组的成员角色。

DELETE /groups/:id/member_roles/:member_role_id
属性 类型 必需 描述
id integer/string 群组的 ID 或 URL 编码路径
member_role_id integer 成员角色的 ID。

如果成功,返回 204 和一个空响应。

示例请求:

curl --request DELETE --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/groups/84/member_roles/1"