- 사용 가능한 권한
- 사용자 정의 역할 만들기
- 사용자 정의 역할 편집
- 사용자 정의 역할 삭제
- 그룹 또는 프로젝트 멤버에 사용자 정의 역할로 사용자 추가하기
- 기존 그룹 또는 프로젝트 구성원에게 사용자 정의 역할 할당
- 그룹 또는 프로젝트 구성원에서 사용자 정의 역할 제거
- 상속
- 결제 및 사용자 수 사용
- 지원되는 객체
- 지원되는 그룹 링크
- 알려진 문제
사용자 정의 역할
- GitLab 15.7에 custom roles 기능이 소개되었습니다. 사용 가능한 flag으로
customizable_roles
이라는 이름이 있습니다.- GitLab 15.9에서 기본적으로 활성화되었습니다.
- GitLab 15.10에서 피처 플래그가 제거되었습니다.
- GitLab 16.4에서 UI를 통해 사용자 정의 역할을 만들고 제거할 수 있는 기능이 도입되었습니다.
- GitLab 16.7에서 UI를 통해 사용자를 그룹에 사용자 정의 역할로 추가하거나 사용자의 사용자 정의 역할을 변경하거나 그룹 멤버에서 사용자 정의 역할을 제거할 수 있는 기능이 도입되었습니다.
- GitLab 16.9에서 GitLab Self-Managed에서 인스턴스 전체의 사용자 정의 역할을 만들거나 제거할 수 있는 기능이 도입되었습니다.
사용자 정의 역할을 사용하면 조직에서 필요로 하는 정확한 권한과 권한을 갖는 사용자 역할을 만들 수 있습니다.
사용자 정의 역할 기능 데모를 보려면 [데모] 최종 게스트가 사용자 정의 역할을 통해 비공개 리포지터리에서 코드를 볼 수 있습니다를 참조하십시오.
issue 391760에서 각 사용자 정의 역할 및 권한 요청에 대해 논의할 수 있습니다.
사용 가능한 권한
사용 가능한 권한에 대한 자세한 정보는 custom permissions를 참조하십시오.
사용자 정의 역할 만들기
사용자 정의 역할은 권한을 기본 역할에 추가하여 만들 수 있습니다.
원하는 만큼의 권한을 선택할 수 있습니다. 예를 들어, 다음과 같은 권한을 갖는 사용자 정의 역할을 만들 수 있습니다.
- 취약점 보고서 보기.
- 취약점의 상태 변경.
- Merge Request 승인.
GitLab SaaS
전제 조건:
- 그룹에 대한 소유자 역할이 있어야 합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 역할 및 권한을 선택합니다.
- 새로운 역할을 선택합니다.
- 템플릿으로 사용할 기본 역할에서 기존의 기본 역할을 선택합니다.
- 역할 이름에 사용자 정의 역할의 제목을 입력합니다.
- 설명에 사용자 정의 역할에 대한 설명을 입력합니다. 최대 255자.
- 새로운 사용자 정의 역할의 권한을 선택합니다.
- 역할 만들기를 선택합니다.
설정 > 역할 및 권한에서 모든 사용자 정의 역할의 디렉터리은 다음과 같은 정보가 표시됩니다:
- 사용자 정의 역할 이름.
- 역할 ID.
- 사용자 정의 역할이 템플릿으로 사용하는 기본 역할.
- 권한.
GitLab Self-Managed
전제 조건:
- Self-Managed형 인스턴스의 관리자 여야 합니다.
Self-Managed형 인스턴스의 사용자 정의 역할을 만든 후 해당 사용자 정의 역할을 해당 인스턴스의 모든 그룹 또는 하위 그룹에 할당할 수 있습니다.
- 왼쪽 사이드바에서 가장 아래에서 관리 영역을 선택합니다.
- 설정 > 역할 및 권한을 선택합니다.
- 새로운 역할을 선택합니다.
- 템플릿으로 사용할 기본 역할에서 기존의 기본 역할을 선택합니다.
- 역할 이름에 사용자 정의 역할의 제목을 입력합니다.
- 설명에 사용자 정의 역할에 대한 설명을 입력합니다. 최대 255자.
- 새로운 사용자 정의 역할의 권한을 선택합니다.
- 역할 만들기를 선택합니다.
설정 > 역할 및 권한에서 모든 사용자 정의 역할의 디렉터리은 다음과 같은 정보가 표시됩니다:
- 사용자 정의 역할 이름.
- 역할 ID.
- 사용자 정의 역할이 템플릿으로 사용하는 기본 역할.
- 권한.
사용자 정의 역할을 만들려면, API를 사용할 수도 있습니다.
사용자 정의 역할 편집
- GitLab 17.0에서 도입되었습니다.
사용자 정의 역할이 만들어진 후, 해당 사용자 정의 역할의 이름, 설명 및 권한을 편집할 수 있습니다. 기본 역할은 변경할 수 없습니다. 기본 역할을 변경해야 하는 경우, 새로운 사용자 정의 역할을 만들어야 합니다.
GitLab SaaS
전제 조건:
- 그룹에 대한 소유자 역할이 있어야 합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 역할 및 권한을 선택합니다.
- 사용자 정의 역할을 위해 세로로 된 를 선택하고 역할 편집을 선택합니다.
- 필요한대로 역할을 수정합니다.
- 역할을 업데이트하려면 역할 저장을 선택합니다.
GitLab Self-Managed 및 GitLab Dedicated
전제 조건:
- Self-Managed형 인스턴스의 관리자 여야 합니다.
- 왼쪽 사이드바에서 가장 아래에서 관리 영역을 선택합니다.
- 설정 > 역할 및 권한을 선택합니다.
- 사용자 정의 역할을 위해 세로로 된 를 선택하고 역할 편집을 선택합니다.
- 필요한대로 역할을 수정합니다.
- 역할을 업데이트하려면 역할 저장을 선택합니다.
사용자 정의 역할을 편집하려면, API를 사용할 수도 있습니다.
사용자 정의 역할 삭제
전제 조건:
- 그룹에 대해 관리자이거나 소유자 역할이 있어야 합니다.
그룹의 멤버 중에 해당 역할을 가진 사람이 아무도 없는 경우에만 그룹에서 사용자 정의 역할을 제거할 수 있습니다. 부 여부를 확인하려면 그룹 또는 프로젝트의 멤버에서 사용자 정의 역할 해제 방법을 참조하십시오.
- 왼쪽 사이드바에서:
- Self-Managed형의 경우, 가장 아래에서 관리 영역을 선택합니다.
- SaaS의 경우, 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 역할 및 권한을 선택합니다.
- 사용자 지정 역할을 선택합니다.
- 작업 열에서 역할 삭제 ()를 선택하고 확인합니다.
사용자 지정 역할을 삭제하려면 API를 사용할 수도 있습니다. API를 사용하려면 해당 사용자 정의 역할의 id
를 알아야 합니다. 해당 id
를 모르는 경우, 그룹에서 API 요청을하거나 인스턴스에서 API 요청을해 ID를 찾을 수 있습니다.
그룹 또는 프로젝트 멤버에 사용자 정의 역할로 사용자 추가하기
사용자 정의 역할로 사용자를 추가하려면:
- 그룹에 추가하는 경우, 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트에 추가하는 경우, 프로젝트의 유지 관리자 역할 이상이 있어야 합니다.
사용자 정의 역할로 사용자를 추가하려면:
- 그룹에 추가하는 경우, 그룹에 사용자 추가를 참조하십시오.
- 프로젝트에 추가하는 경우, 프로젝트에 사용자 추가를 참조하십시오.
그룹 또는 프로젝트 멤버가 사용자 정의 역할을 가진 경우, 최대 역할 표의 Custom Role 열에 “Custom Role”이라고 표시됩니다.
기존 그룹 또는 프로젝트 구성원에게 사용자 정의 역할 할당
필수 조건:
기존 구성원에게 사용자 정의 역할을 할당하는 경우:
- 그룹 구성원인 경우, 해당 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트 구성원인 경우, 프로젝트의 유지자 역할 이상이어야 합니다.
UI를 사용하여 사용자 정의 역할 할당
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹 또는 프로젝트를 찾습니다.
- 관리 > 구성원을 선택합니다.
- 사용자 정의 역할을 할당하려는 구성원의 최대 역할 드롭다운 디렉터리을 선택합니다.
- 역할 변경 대화 상자에서 다른 사용자 정의 역할을 선택합니다.
API를 사용하여 사용자 정의 역할 할당
- 루트 그룹이나 루트 그룹의 하위 그룹 또는 프로젝트에 사용자를 직접 구성원으로 초대하여 게스트로합니다. 이 시점에서 이 게스트 사용자는 해당 그룹 또는 하위 그룹의 프로젝트에 있는 코드를 볼 수 없습니다.
- 선택 사항. 사용자 지정 역할을 받는 게스트 사용자의
id
를 모르는 경우, API 요청을 통해 해당id
를 찾습니다. -
그룹 및 프로젝트 구성원 API 엔드포인트를 사용하여 구성원을 게스트+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
입니다.
이제 게스트+1 사용자는 이 멤버십과 관련된 모든 프로젝트의 코드를 볼 수 있습니다.
-
그룹 또는 프로젝트 구성원에서 사용자 정의 역할 제거
필수 조건:
사용자 정의 역할을 제거하는 경우:
- 그룹 구성원인 경우, 해당 그룹의 소유자 역할이 있어야 합니다.
- 프로젝트 구성원인 경우, 프로젝트의 유지자 역할 이상이어야 합니다.
그룹 또는 프로젝트의 구성원 중에 해당 역할을 가진 구성원이 없는 경우에만 그룹 또는 프로젝트에서 사용자 정의 역할을 제거할 수 있습니다. 이를 위해 다음 방법 중 하나를 사용할 수 있습니다.
- 사용자 정의 역할이 부여된 구성원을 그룹 또는 프로젝트에서 제거합니다.
- UI를 사용하여 사용자 역할 변경.
- API를 사용하여 사용자 역할 변경.
UI를 사용하여 사용자 역할 변경
그룹 구성원의 사용자 정의 역할을 제거하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 관리 > 구성원을 선택합니다.
- 사용자의 최대 역할 드롭다운 디렉터리을 선택하여 사용자의 사용자 정의 역할을 제거합니다.
- 역할 변경 대화 상자에서 기본 역할을 선택합니다.
API를 사용하여 사용자 역할 변경
그룹 구성원의 사용자 정의 역할을 업데이트하거나 제거하는 데 그룹 및 프로젝트 구성원 API 엔드포인트를 사용하여
빈 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에 Developer + CI/CD 변수 관리
권한이 있는 사용자가 사용자 정의 역할을 할당받으면
해당 사용자는 하위 그룹 B 및 프로젝트 1에도 CI/CD 변수 관리
권한이 있습니다.
결제 및 사용자 수 사용
게스트 역할을 가진 사용자에게 사용자 정의 역할을 부여하면 해당 사용자는 기본 역할보다 높은 권한을 가지므로 다음과 같은 결과가 있습니다:
- Self-Managed형 GitLab에서 청구 가능한 사용자로 간주됩니다.
- GitLab.com에서는 사용자 수를 차지합니다.
사용자의 사용자 정의 역할에 read_code
권한만 활성화된 경우에는 해당 사항이 적용되지 않습니다.
특정 권한만 있는 게스트 사용자는 청구 가능한 사용자로 간주되지 않으며 사용자 수도 차지하지 않습니다.
지원되는 객체
다음에게 사용자 정의 역할 및 권한을 할당할 수 있습니다:
객체 | 버전 | 이슈 |
---|---|---|
사용자 | 15.9 | 릴리스됨 |
그룹 | 미지원 | 이슈 443369 |
토큰 | 미지원 | 이슈 434354 |
지원되는 그룹 링크
다음 인증 제공자를 사용하여 사용자를 사용자 정의 역할과 동기화할 수 있습니다:
- SAML 그룹 링크 구성 참조.
- LDAP 그룹 링크는 지원되지 않지만, 이슈 435229에서 이를 변경하도록 제안하고 있습니다.