멤버 역할 API
- GitLab 15.4에서 도입됨. 기본적으로 비활성화되어 있으며,
customizable_roles
플래그 뒤에 배치됨.- GitLab 15.9에서 기본적으로 활성화됨.
- GitLab 16.0에 Read 취약성이 추가됨.
- GitLab 16.1에 Admin 취약성이 추가됨.
- GitLab 16.3에 Read 의존성이 추가됨.
- GitLab 16.3에 이름 및 설명 필드가 추가됨.
- GitLab 16.4에서 Admin 병합 요청이 도입됨 (기본적으로 비활성화 상태)
admin_merge_request
이라는 플래그와 함께.- GitLab 16.5에서
admin_merge_request
플래그가 제거됨.- GitLab 16.5에서 Admin 그룹 멤버가 도입됨 (기본적으로 비활성화 상태)
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에서 Admin terraform state가 도입됨.
- GitLab Self-managed에서 인스턴스 전체 사용자 정의 역할 생성 및 제거 기능 도입 (GitLab 16.9).
인스턴스 멤버 역할 관리
필수 사항:
- 관리자로 인증합니다.
인스턴스 전체의 멤버 역할을 가져오고, 생성하고 삭제할 수 있습니다.
모든 인스턴스 멤버 역할 가져오기
인스턴스의 모든 멤버 역할 가져오기.
GET /member_roles
예시 요청:
curl --header "Authorization: Bearer <your_access_token>" "https://gitlab.example.com/api/v4/member_roles"
예시 응답:
[
{
"id": 2,
"name": "인스턴스 사용자 정의 역할",
"description": "코드 읽기가 가능한 사용자 정의 게스트",
"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 | yes | 멤버 역할의 이름 |
description
| string | no | 멤버 역할의 설명 |
base_access_level
| integer | yes | 구성된 역할의 기본 액세스 레벨. 10 (게스트), 20 (리포터), 30 (개발자), 40 (관리자), 또는 50 (소유자) 중 하나의 값
|
admin_cicd_variables
| boolean | no | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제할 권한 |
… (중략) … |
더 많은 권한에 대한 정보는 사용자 정의 권한을 참조하십시오.
예시 요청:
curl --request POST --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"name" : "사용자 정의 게스트 (인스턴스)", "base_access_level" : 10, "read_code" : true}' "https://gitlab.example.com/api/v4/member_roles"
예시 응답:
{
"id": 3,
"name": "사용자 정의 게스트 (인스턴스)",
"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
| 정수 | 예 | 멤버 역할의 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"
그룹 멤버 역할 관리
상세 정보: Tier: Ultimate Offering: GitLab.com
전제 조건:
- 그룹에 대한 소유자 역할이 있어야 합니다.
이 API를 사용하여 그룹별 멤버 역할을 관리합니다. 그룹의 루트 수준에서만 멤버 역할을 생성할 수 있습니다.
모든 그룹 멤버 역할 가져오기
GET /groups/:id/member_roles
지원되는 속성:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 그룹의 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": "코드를 읽을 수 있는 사용자 지정 게스트",
"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": "읽고 보안 엔터티를 관리할 수 있는 사용자 지정 게스트",
"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
}
]
그룹에 멤버 역할 추가
- GitLab 16.3에서 도입된 사용자 지정 역할 생성 시 이름 및 설명을 추가할 수 있음.
그룹에 멤버 역할을 추가합니다.
POST /groups/:id/member_roles
매개변수:
속성 | 타입 | 필수 | 설명 |
---|---|---|---|
id
| 정수/문자열 | 예 | 그룹의 ID 또는 URL-인코딩된 경로입니다. |
admin_cicd_variables
| 부울 | 아니오 | CI/CD 변수를 생성, 읽기, 업데이트 및 삭제할 수 있는 권한입니다. |
admin_compliance_framework
| 부울 | 아니오 | 컴플라이언스 프레임워크를 관리할 수 있는 권한입니다. |
admin_group_member
| 부울 | 아니오 | 그룹의 멤버를 추가, 제거 및 할당할 수 있는 권한입니다. |
admin_merge_request
| 부울 | 아니오 | 병합 요청을 승인할 수 있는 권한입니다. |
admin_push_rules
| 부울 | 아니오 | 그룹 또는 프로젝트 수준의 저장소에 대한 푸시 규칙을 구성할 수 있는 권한입니다. |
admin_terraform_state
| 부울 | 아니오 | 프로젝트 테라폼 상태를 관리할 수 있는 권한입니다. |
admin_vulnerability
| 부울 | 아니오 | 프로젝트 취약점을 관리할 수 있는 권한입니다. |
admin_web_hook
| 부울 | 아니오 | 웹훅을 관리할 수 있는 권한입니다. |
archive_project
| 부울 | 아니오 | 프로젝트를 보관할 수 있는 권한입니다. |
manage_deploy_tokens
| 부울 | 아니오 | 배포 토큰을 관리할 수 있는 권한입니다. |
manage_group_access_tokens
| 부울 | 아니오 | 그룹 엑세스 토큰을 관리할 수 있는 권한입니다. |
manage_merge_request_settings
| 부울 | 아니오 | 병합 요청 설정을 구성할 수 있는 권한입니다. |
manage_project_access_tokens
| 부울 | 아니오 | 프로젝트 엑세스 토큰을 관리할 수 있는 권한입니다. |
manage_security_policy_link
| 부울 | 아니오 | 보안 정책 링크를 관리할 수 있는 권한입니다. |
read_code
| 부울 | 아니오 | 프로젝트 코드를 읽을 수 있는 권한입니다. |
read_runners
| 부울 | 아니오 | 프로젝트 러너를 볼 수 있는 권한입니다. |
read_dependency
| 부울 | 아니오 | 프로젝트 의존성을 읽을 수 있는 권한입니다. |
read_vulnerability
| 부울 | 아니오 | 프로젝트 취약점을 읽을 수 있는 권한입니다. |
remove_group
| 부울 | 아니오 | 그룹을 삭제하거나 복원할 수 있는 권한입니다. |
remove_project
| 부울 | 아니오 | 프로젝트를 삭제할 수 있는 권한입니다. |
예시 요청:
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"