- 사용 가능한 권한
- 커스텀 역할 생성
- 사용자 정의 역할 수정
- 사용자 정의 역할 삭제
- 사용자 정의 역할을 가진 사용자를 그룹 또는 프로젝트에 추가하기
- 기존 그룹 또는 프로젝트 구성원에게 사용자 정의 역할 할당하기
- 그룹 또는 프로젝트 구성원에게서 사용자 정의 역할 할당 해제하기
- 상속
- 청구 및 시트 사용
- 초대된 그룹에 사용자 정의 역할 할당
- 지원되는 객체
- 지원되는 그룹 링크
- 알려진 문제
커스텀 역할
- GitLab 15.7에서
customizable_roles
라는 플래그와 함께 커스텀 역할 기능이 도입되었습니다.- 기본적으로 활성화됨 GitLab 15.9에서.
- 기능 플래그 제거됨 GitLab 15.10에서.
- UI를 사용하여 커스텀 역할을 생성하고 제거하는 기능이 도입됨 GitLab 16.4에서.
- UI를 사용하여 커스텀 역할로 그룹에 사용자를 추가하거나, 사용자의 커스텀 역할을 변경하거나, 그룹 멤버의 커스텀 역할을 제거하는 기능이 도입됨 GitLab 16.7에서.
- GitLab self-managed에서 인스턴스 전체 커스텀 역할을 생성하고 제거하는 기능이 도입됨 GitLab 16.9에서.
커스텀 역할을 통해 조직은 해당 조직의 요구에 맞는 정확한 권한과 허가를 가진 사용자 역할을 생성할 수 있습니다.
커스텀 역할 기능의 데모를 보려면 [데모] Ultimate Guest가 커스텀 역할을 통해 개인 저장소의 코드를 볼 수 있습니다를 참조하십시오.
개별 커스텀 역할 및 권한 요청에 대해서는 이슈 391760에서 논의할 수 있습니다.
사용 가능한 권한
사용 가능한 권한에 대한 자세한 내용은 커스텀 권한을 참조하십시오.
커스텀 역할 생성
기본 역할에 권한을 추가하여 커스텀 역할을 생성할 수 있습니다.
아무 권한이나 선택할 수 있습니다. 예를 들어, 다음 권한으로 커스텀 역할을 생성할 수 있습니다:
- 취약점 보고서 보기.
- 취약점 상태 변경.
- 병합 요청 승인.
GitLab SaaS
전제 조건:
- 그룹에 대해 Owner 역할이 있어야 합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 역할 및 권한을 선택합니다.
- 새 역할을 선택합니다.
- 템플릿으로 사용할 기본 역할에서 기존 기본 역할을 선택합니다.
- 역할 이름에 커스텀 역할의 제목을 입력합니다.
- 설명에 커스텀 역할에 대한 설명을 입력합니다. 최대 255자.
- 새 커스텀 역할의 권한을 선택합니다.
- 역할 생성을 선택합니다.
설정 > 역할 및 권한에서 모든 커스텀 역할 목록은 다음을 표시합니다:
- 커스텀 역할 이름.
- 역할 ID.
- 커스텀 역할이 템플릿으로 사용하는 기본 역할.
- 권한.
GitLab 자체 관리
전제 조건:
- 자체 관리 인스턴스에 대한 관리자인지 확인해야 합니다.
사용자 정의 역할을 생성한 후에는 해당 사용자 정의 역할을 그 인스턴스의 모든 그룹 또는 하위 그룹의 사용자에게 할당할 수 있습니다.
-
왼쪽 사이드바의 하단에서 Admin을 선택합니다.
-
Settings > Roles and permissions를 선택합니다.
-
New role을 선택합니다.
-
Base role to use as template에서 기존 기본 역할을 선택합니다.
-
Role name에 사용자 정의 역할의 제목을 입력합니다.
-
Description에 사용자 정의 역할에 대한 설명을 입력합니다. 최대 255자.
-
새 사용자 정의 역할에 대한 Permissions를 선택합니다.
-
Create role을 선택합니다.
Settings > Roles and permissions에서는 모든 사용자 정의 역할의 목록이 표시됩니다:
-
사용자 정의 역할 이름.
-
역할 ID.
-
사용자 정의 역할이 템플릿으로 사용하는 기본 역할.
-
권한.
사용자 정의 역할을 만들기 위해 API를 사용할 수도 있습니다.
사용자 정의 역할 수정
- 도입됨 GitLab 17.0.
사용자 정의 역할이 생성된 후에는 해당 역할의 이름, 설명 및 권한을 수정할 수 있습니다. 기본 역할은 변경할 수 없습니다. 기본 역할을 변경해야 하는 경우 새 사용자 정의 역할을 만들어야 합니다.
GitLab SaaS
전제 조건:
- 그룹의 Owner 역할을 가져야 합니다.
-
왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
-
Settings > Roles and permissions를 선택합니다.
-
사용자 정의 역할에 대해 수직 점 3개()를 선택한 다음 Edit role을 선택합니다.
-
필요한 대로 역할을 수정합니다.
-
역할을 업데이트하려면 Save role을 선택합니다.
GitLab 자체 관리
전제 조건:
- 자체 관리 인스턴스에 대한 관리자인지 확인해야 합니다.
-
왼쪽 사이드바의 하단에서 Admin을 선택합니다.
-
Settings > Roles and permissions를 선택합니다.
-
사용자 정의 역할에 대해 수직 점 3개()를 선택한 다음 Edit role을 선택합니다.
-
필요한 대로 역할을 수정합니다.
-
역할을 업데이트하려면 Save role을 선택합니다.
사용자 정의 역할을 수정하기 위해 API를 사용할 수도 있습니다.
사용자 정의 역할 삭제
전제 조건:
- 관리자는 아니거나 그룹의 Owner 역할을 가져야 합니다.
사용자 정의 역할이 있는 구성원이 없으면만 그룹에서 사용자 정의 역할을 제거할 수 있습니다. 그룹 또는 프로젝트 구성원에서 사용자 정의 역할 할당 해제를 참조하십시오.
- 왼쪽 사이드바에서:
- 자체 관리의 경우 하단에서 Admin을 선택합니다.
- SaaS의 경우 Search or go to를 선택하고 그룹을 찾습니다.
-
Settings > Roles and permissions를 선택합니다.
-
Custom Roles를 선택합니다.
- Actions 열에서 Delete role()을 선택하고 확인합니다.
사용자 정의 역할을 삭제하기 위해 API를 사용할 수도 있습니다. API를 사용하려면 사용자 정의 역할의 id
를 알아야 합니다. 이 id
를 모르는 경우 그룹에 대한 API 요청 또는 인스턴스에 대한 API 요청을 하여 찾을 수 있습니다.
사용자 정의 역할을 가진 사용자를 그룹 또는 프로젝트에 추가하기
전제 조건:
사용자를 사용자 정의 역할을 추가하는 경우:
- 그룹에 추가하려면 해당 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트에 추가하려면 프로젝트의 유지 관리자 역할 이상이 있어야 합니다.
사용자를 사용자 정의 역할로 추가하려면:
- 그룹에 추가하는 방법은 그룹에 사용자 추가를 참조하세요.
- 프로젝트에 추가하는 방법은 프로젝트에 사용자 추가를 참조하세요.
그룹 또는 프로젝트 구성원이 사용자 정의 역할을 가지고 있으면, 그룹 또는 프로젝트 구성원 목록에서 최대 역할 열에 “Custom Role”이 표시됩니다.
기존 그룹 또는 프로젝트 구성원에게 사용자 정의 역할 할당하기
전제 조건:
기존 사용자에게 사용자 정의 역할을 할당하려면:
- 그룹 구성원에게는 해당 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트 구성원에게는 프로젝트의 유지 관리자 역할 이상이 있어야 합니다.
사용자 인터페이스를 사용하여 사용자 정의 역할 할당하기
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹 또는 프로젝트를 찾습니다.
-
관리 > 구성원을 선택합니다.
-
최대 역할 열에서 구성원의 역할을 선택합니다. 역할 세부정보 드로어가 열립니다.
-
역할 드롭다운 목록을 사용하여 구성원에게 할당할 사용자 정의 역할을 선택합니다.
-
역할 업데이트를 선택하여 역할을 할당합니다.
API를 사용하여 사용자 정의 역할 할당하기
-
사용자를 루트 그룹 또는 루트 그룹의 계층 구조에 있는 서브그룹 또는 프로젝트에 게스트로 직접 구성원으로 초대합니다. 이 시점에서 이 게스트 사용자는 그룹 또는 서브그룹의 프로젝트에서 코드를 볼 수 없습니다.
-
선택 사항. 사용자 정의 역할을 받을 게스트 사용자의
id
를 모르는 경우, API 요청을 통해 해당id
를 찾습니다. -
그룹 및 프로젝트 구성원 API 엔드포인트를 사용하여 구성원을 Guest+1 역할로 연결합니다:
# 프로젝트 구성원 업데이트 curl --request PUT --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"member_role_id": '<member_role_id>', "access_level": 10}' "https://gitlab.example.com/api/v4/projects/<project_id>/members/<user_id>" # 그룹 구성원 업데이트 curl --request PUT --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"member_role_id": '<member_role_id>', "access_level": 10}' "https://gitlab.example.com/api/v4/groups/<group_id>/members/<user_id>"
여기서:
-
<project_id>
및<group_id>
: 사용자 정의 역할을 받는 구성원과 연결된 프로젝트 또는 그룹의id
또는 URL 인코딩된 경로입니다. -
<member_role_id>
: 이전 섹션에서 생성된 구성원 역할의id
입니다. -
<user_id>
: 사용자 정의 역할을 받는 사용자의id
입니다.
이제 Guest+1 사용자가 이 구성원과 연결된 모든 프로젝트의 코드를 볼 수 있습니다.
-
그룹 또는 프로젝트 구성원에게서 사용자 정의 역할 할당 해제하기
전제 조건:
사용자 정의 역할을 다음에서 할당 해제하는 경우:
- 그룹 구성원인 경우, 해당 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트 구성원인 경우, 해당 프로젝트의 유지 관리자 역할 이상이 있어야 합니다.
그룹 또는 프로젝트에서 사용자 정의 역할을 제거할 수 있는 경우는 해당 역할을 가진 그룹 또는 프로젝트 구성원이 없는 경우에만 가능합니다. 이를 위해 다음 방법 중 하나를 사용할 수 있습니다:
- 그룹 또는 프로젝트에서 사용자 정의 역할을 가진 구성원을 제거합니다.
- UI를 사용하여 사용자 역할 변경.
- API를 사용하여 사용자 역할 변경.
UI를 사용하여 사용자 역할 변경하기
그룹 구성원에서 사용자 정의 역할을 제거하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
-
Manage > Members를 선택합니다.
-
Max role 열에서 구성원의 역할을 선택합니다. Role details 서랍이 열립니다.
-
Role 드롭다운 목록을 사용하여 구성원에게 할당할 기본 역할을 선택합니다.
-
Update role을 선택하여 역할을 할당합니다.
API를 사용하여 사용자 역할 변경하기
Group and Project Members API endpoint를 사용하여 빈 member_role_id
값을 전달하여 그룹 구성원에서 사용자 정의 역할을 업데이트하거나 제거할 수도 있습니다:
# 프로젝트 멤버십을 업데이트하려면
curl --request PUT --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/projects/<project_id>/members/<user_id>"
# 그룹 멤버십을 업데이트하려면
curl --request PUT --header "Content-Type: application/json" --header "Authorization: Bearer <your_access_token>" --data '{"member_role_id": null, "access_level": 10}' "https://gitlab.example.com/api/v4/groups/<group_id>/members/<user_id>"
상속
사용자가 그룹에 속하는 경우, 그들은 그 그룹의 _직접 구성원_이며
모든 하위 그룹이나 프로젝트의 상속된 구성원입니다. 사용자가 상위 그룹에서 사용자 정의 역할이 할당받은 경우, 그 역할의 권한은 하위 그룹 및 프로젝트에서도 상속됩니다.
예를 들어, 다음 구조가 존재한다고 가정합니다:
- 그룹 A
- 하위 그룹 B
- 프로젝트 1
- 하위 그룹 B
그룹 A에 Manage CI/CD variables
권한을 가진 사용자 정의 역할이 할당된 경우, 사용자는 하위 그룹 B와 프로젝트 1에 대해서도 Manage CI/CD variables
권한을 가집니다.
청구 및 시트 사용
사용자에게 게스트 역할로 사용자 정의 역할을 활성화하면, 해당 사용자는 기본 역할에 대한 권한이 상승하므로:
- 자가 관리형 GitLab에서 청구 가능한 사용자로 간주됩니다.
- GitLab.com에서 시트를 사용합니다.
사용자의 사용자 정의 역할에 read_code
권한만 활성화되어 있는 경우에는 적용되지 않습니다. 해당 특정 권한만 있는 게스트 사용자는 청구 가능한 사용자로 간주되지 않으며 시트를 사용하지 않습니다.
초대된 그룹에 사용자 정의 역할 할당
- 초대된 그룹에 대한 사용자 정의 역할 지원은 GitLab 17.4에서
assign_custom_roles_to_group_links_sm
라는 기능 플래그 뒤에서 도입되었습니다. 기본적으로 비활성화되어 있습니다.
그룹에 사용자 정의 역할로 초대될 때, 다음 규칙이 새 그룹에서 각 사용자의 사용자 정의 권한을 결정합니다:
- 사용자가 다른 그룹의 기본 액세스 수준과 동일하거나 높은 그룹에서 사용자 정의 권한을 가지고 있는 경우, 사용자의 최대 역할은 기본 역할입니다. 즉, 사용자는 두 액세스 수준 중 더 낮은 권한이 부여됩니다.
- 사용자가 원래 그룹과 동일한 기본 액세스 수준의 사용자 정의 권한으로 초대될 경우, 사용자는 항상 원래 그룹에서의 사용자 정의 권한이 부여됩니다.
예를 들어, 그룹 A에 5명의 사용자가 있고, 그들에게 다음과 같은 역할이 할당되어 있다고 가정해 보겠습니다:
- 사용자 A: 손님 역할
- 사용자 B: 손님 역할 +
read_code
사용자 정의 권한 - 사용자 C: 손님 역할 +
read_vulnerability
사용자 정의 권한 - 사용자 D: 개발자 역할
- 사용자 E: 개발자 +
admin_vulnerability
사용자 정의 권한
그룹 B가 그룹 A를 초대합니다. 다음 표는 그룹 A의 각 사용자가 그룹 B에서 가질 최대 역할을 보여줍니다:
시나리오 | 사용자 A | 사용자 B | 사용자 C | 사용자 D | 사용자 E |
---|---|---|---|---|---|
그룹 B가 그룹 A를 손님으로 초대함 | 손님 | 손님 | 손님 | 손님 | 손님 |
그룹 B가 그룹 A를 손님 + read_code 로 초대함 |
손님 | 손님 + read_code
|
손님 + read_vulnerability
|
손님 + read_vulnerability
|
손님 + read_vulnerability
|
그룹 B가 그룹 A를 손님 + read_vulnerability 로 초대함 |
손님 | 손님 + read_code
|
손님 + read_vulnerability
|
손님 + read_vulnerability
|
손님 + read_vulnerability
|
그룹 B가 그룹 A를 개발자로 초대함 | 손님 | 손님 + read_code
|
손님 + read_vulnerability
|
개발자 | 개발자 |
그룹 B가 그룹 A를 개발자 + admin_vulnerability 로 초대함 |
손님 | 손님 + read_code
|
손님 + read_vulnerability
|
개발자 | 개발자 + admin_vulnerability
|
사용자 C가 동일한 기본 역할(손님)로 그룹 B에 초대되었지만, 동일한 기본 액세스 수준(read_code
및 read_vulnerability
)의 다른 사용자 정의 권한을 가진 경우, 사용자 C는 그룹 A에서의 사용자 정의 권한(read_vulnerability
)을 유지합니다.
지원되는 객체
다음에 사용자 정의 역할과 권한을 할당할 수 있습니다:
객체 | 버전 | 이슈 |
---|---|---|
사용자 | 15.9 | 출시됨 |
그룹 | 지원되지 않음 | 이슈 443369 |
토큰 | 지원되지 않음 | 이슈 434354 |
지원되는 그룹 링크
사용자는 다음 인증 공급자를 통해 사용자 정의 역할과 동기화할 수 있습니다:
- SAML 그룹 링크 구성하기를 참조하세요.
- LDAP를 통한 그룹 구성원 관리하기를 참조하세요.