사용자 지정 권한
GitLab v19.5Offering: GitLab Self-Managed, GitLab Dedicated
요약
사용자 지정 역할을 사용하면 조직에 필요한 특정 사용자 지정 권한만 가진 역할을 만들 수 있습니다. GitLab은 두 가지 유형의 사용자 지정 역할을 제공합니다: 사용자 지정 역할 기능의 데모는 [Demo] Ultimate Guest can view code on private repositories via custom role을 참고합니다.
히스토리
- UI로 사용자 지정 역할을 생성하고 제거하는 기능이 GitLab 16.4에서 도입되었습니다.
- UI로 사용자 지정 역할을 가진 사용자를 그룹에 추가하거나, 사용자의 사용자 지정 역할을 변경하거나, 그룹 멤버에서 사용자 지정 역할을 제거하는 기능이 GitLab 16.7에서 도입되었습니다.
- GitLab Self-Managed에서 인스턴스 전체에 적용되는 사용자 지정 역할을 생성하고 제거하는 기능이 GitLab 16.9에서 도입되었습니다.
- 사용자 지정 관리자 역할이 GitLab 17.7에서
custom_ability_read_admin_dashboard라는 기능 플래그와 함께 실험 기능으로 도입되었습니다. - UI로 사용자 지정 관리자 역할을 관리하는 기능이 GitLab 17.9에서
custom_admin_roles라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 사용자 지정 관리자 역할이 GitLab 18.3에서 일반 공개되었습니다. 기능 플래그
custom_admin_roles는 기본적으로 활성화되었습니다. - 기능 플래그
custom_admin_roles는 GitLab 19.0에서 제거되었습니다.
사용자 지정 역할을 사용하면 조직에 필요한 특정 사용자 지정 권한만 가진 역할을 만들 수 있습니다. 각 사용자 지정 역할은 기존 기본 역할을 기반으로 합니다. 예를 들어 Guest 역할을 기반으로 하면서 프로젝트 리포지터리의 코드를 볼 수 있는 권한을 포함한 사용자 지정 역할을 만들 수 있습니다.
GitLab은 두 가지 유형의 사용자 지정 역할을 제공합니다:
- 사용자 지정 멤버 역할:
- 사용자 지정 관리자 역할:
- 인스턴스의 모든 사용자에게 할당할 수 있습니다.
- 특정 관리자 작업을 수행할 권한을 갖습니다.
- LDAP 그룹의 멤버에게 할당할 수 있습니다.
사용자 지정 역할 기능의 데모는 [Demo] Ultimate Guest can view code on private repositories via custom role을 참고합니다.
사용자 지정 멤버 역할 생성#
사용자 지정 멤버 역할을 만들려면 GitLab 기본 역할을 선택하고 추가 권한을 더합니다. 기본 역할은 사용자 지정 역할이 가질 수 있는 최소 권한을 정의합니다. auditor는 기본 역할로 사용할 수 없습니다.
사용자 지정 권한으로는 보통 Maintainer 또는 Owner 권한에만 허용되는 작업을 허용할 수 있습니다. 예를 들어 CI/CD 변수를 관리할 권한이 있는 사용자 지정 역할은 다른 Maintainer 나 Owner가 추가한 CI/CD 변수도 관리할 수 있습니다.
사용자 지정 멤버 역할은 다음 범위의 그룹과 프로젝트에서 사용할 수 있습니다:
- GitLab.com에서는 사용자 지정 역할을 만든 최상위 그룹 아래에서 사용할 수 있습니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 인스턴스 전체에서 사용할 수 있습니다.
사전 요구 사항:
- GitLab.com에서는 그룹에 대한 Owner 권한이 있어야 합니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
- 사용자 지정 역할이 10개 미만이어야 합니다.
사용자 지정 멤버 역할을 만들려면 다음과 같이 진행합니다:
- 왼쪽 사이드바에서:
- GitLab.com에서는 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 오른쪽 위에서 Admin을 선택합니다.
- Settings > Roles and permissions를 선택합니다.
- New role을 선택합니다.
- GitLab Self-Managed 및 GitLab Dedicated 인스턴스에만 해당합니다. Member role을 선택합니다.
- 사용자 지정 역할의 이름과 설명을 입력합니다.
- Base role 드롭다운 목록에서 기본 역할을 선택합니다.
- 사용자 지정 역할에 부여할 권한을 선택합니다.
- Create role을 선택합니다.
API를 사용해 사용자 지정 역할을 만들 수도 있습니다.
사용자 지정 관리자 역할 생성#
사용자 지정 관리자 역할을 만들려면 보통 관리자에게만 허용되는 작업을 수행할 수 있는 권한을 추가합니다. 각 사용자 지정 관리자 역할은 하나 이상의 권한을 가질 수 있습니다.
사전 요구 사항:
- 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
- 사용자 지정 역할이 10개 미만이어야 합니다.
사용자 지정 관리자 역할을 만들려면 다음과 같이 진행합니다:
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > Roles and permissions를 선택합니다.
- New role을 선택합니다.
- Admin role을 선택합니다.
- 사용자 지정 역할의 이름과 설명을 입력합니다.
- 사용자 지정 역할에 부여할 권한을 선택합니다.
- Create role을 선택합니다.
API를 사용해 사용자 지정 역할을 만들 수도 있습니다.
사용자 지정 역할 편집#
히스토리
- GitLab 17.0에서 도입되었습니다.
사용자 지정 역할의 이름, 설명, 권한은 편집할 수 있지만 기본 역할은 편집할 수 없습니다. 기본 역할을 바꾸려면 사용자 지정 역할을 새로 만들어야 합니다.
사전 요구 사항:
- GitLab.com에서는 그룹에 대한 Owner 권한이 있어야 합니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
사용자 지정 역할을 편집하려면 다음과 같이 진행합니다:
- 왼쪽 사이드바에서:
- GitLab.com에서는 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 오른쪽 위에서 Admin을 선택합니다.
- Settings > Roles and permissions를 선택합니다.
- 사용자 지정 역할 옆에서 세로 줄임표 (⋮) > Edit role을 선택합니다.
- 역할을 수정합니다.
- Save role을 선택합니다.
API로 사용자 지정 멤버 역할 또는 사용자 지정 관리자 역할을 편집할 수도 있습니다.
사용자 지정 역할 세부 정보 보기#
Roles and permissions 페이지에는 사용할 수 있는 모든 기본 역할과 사용자 지정 역할의 기본 정보가 표시됩니다. 여기에는
이름, 설명, 각 사용자 지정 역할이 할당된 사용자 수 등이 포함됩니다. 각 사용자 지정 역할에는
Custom member role 또는 Custom admin role 배지가 표시됩니다.
역할 ID, 기본 역할, 구체적인 권한 등 사용자 지정 역할의 더 자세한 정보도 확인할 수 있습니다.
사전 요구 사항:
- GitLab.com에서는 그룹에 대한 Owner 권한이 있어야 합니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
사용자 지정 역할의 세부 정보를 보려면 다음과 같이 진행합니다:
- 왼쪽 사이드바에서:
- GitLab.com에서는 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 오른쪽 위에서 Admin을 선택합니다.
- Settings > Roles and permissions를 선택합니다.
- 사용자 지정 역할 옆에서 세로 줄임표 (⋮) > View details를 선택합니다.
사용자 지정 역할 삭제#
사용자에게 아직 할당되어 있는 사용자 지정 역할은 삭제할 수 없습니다. 사용자에게 사용자 지정 역할 할당을 참고합니다.
사전 요구 사항:
- GitLab.com에서는 그룹에 대한 Owner 권한이 있어야 합니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.
사용자 지정 역할을 삭제하려면 다음과 같이 진행합니다:
- 왼쪽 사이드바에서:
- GitLab.com에서는 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
- GitLab Self-Managed와 GitLab Dedicated에서는 오른쪽 위에서 Admin을 선택합니다.
- Settings > Roles and permissions를 선택합니다.
- 사용자 지정 역할 옆에서 세로 줄임표 (⋮) > Delete role을 선택합니다.
- 확인 대화 상자에서 Delete role을 선택합니다.
API로 사용자 지정 멤버 역할 또는 사용자 지정 관리자 역할을 삭제할 수도 있습니다.
사용자 지정 멤버 역할 할당#
그룹과 프로젝트 멤버의 역할을 할당하거나 변경할 수 있습니다. 기존 사용자에게 적용할 수도 있고, 그룹, 프로젝트, 인스턴스에 사용자를 추가할 때 적용할 수도 있습니다.
사전 요구 사항:
- 그룹의 경우 그룹에 대한 Owner 권한이 있어야 합니다.
- 프로젝트의 경우 프로젝트에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.
기존 사용자에게 사용자 지정 멤버 역할을 할당하려면 다음과 같이 진행합니다:
- 상단 바에서 Search or go to를 선택하고 그룹 또는 프로젝트를 찾습니다.
- Manage > Members를 선택합니다.
- Role 칼럼에서 기존 멤버의 역할을 선택합니다. Role details 창이 열립니다.
- Role 드롭다운 목록에서 멤버에게 할당할 역할을 선택합니다.
- Update role을 선택해 역할을 할당합니다.
API를 사용해 사용자 지정 역할 할당을 지정하거나 변경할 수도 있습니다.
사용자 지정 관리자 역할 할당#
인스턴스의 사용자에게 관리자 역할을 할당하거나 변경할 수 있습니다. 기존 사용자에게 적용할 수도 있고, 인스턴스에 사용자를 추가할 때 적용할 수도 있습니다.
사전 요구 사항:
- GitLab 인스턴스의 관리자여야 합니다.
기존 사용자에게 사용자 지정 관리자 역할을 할당하려면 다음과 같이 진행합니다:
- 오른쪽 위에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Overview > Users를 선택합니다.
- 사용자의 Edit를 선택합니다.
- Access 섹션에서 액세스 수준을 Regular 또는 Auditor로 설정합니다.
- Admin area 드롭다운 목록에서 사용자 지정 관리자 역할을 선택합니다.
API를 사용해 사용자 지정 역할 할당을 지정하거나 변경할 수도 있습니다.
초대된 그룹에 사용자 지정 역할 할당#
히스토리
- 초대된 그룹에 대한 사용자 지정 역할 지원이 GitLab 17.4에서
assign_custom_roles_to_group_links_sm이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.4에서 GitLab Self-Managed와 GitLab Dedicated에 활성화되었습니다.
- GitLab 18.10에서 일반 공개되었습니다. 기능 플래그
assign_custom_roles_to_group_links_sm은 제거되었습니다.
그룹에 다른 그룹을 초대할 때 해당 그룹의 모든 사용자에게 사용자 지정 역할을 할당할 수 있습니다.
할당된 역할은 원래 그룹에서의 사용자 역할 및 권한과 비교됩니다. 일반적으로 사용자에게는 액세스 수준이 더 낮은 역할이 할당됩니다. 다만 사용자가 원래 그룹에서 사용자 지정 역할을 가지고 있는 경우에는 다음과 같이 동작합니다:
- 액세스 수준 비교에는 기본 역할만 사용되며, 사용자 지정 권한은 비교하지 않습니다.
- 두 사용자 지정 역할의 기본 역할이 같으면 사용자는 원래 그룹의 사용자 지정 역할을 유지합니다.
다음 표는 그룹에 초대된 사용자가 가질 수 있는 최대 역할의 예시입니다:
| 시나리오 | Guest 권한 사용자 | Guest 권한 + read_code 사용자 |
Guest 권한 + read_vulnerability 사용자 |
Developer 권한 사용자 | Developer 권한 + admin_vulnerability 사용자 |
|---|---|---|---|---|---|
| Guest 권한으로 초대됨 | Guest | Guest | Guest | Guest | Guest |
Guest 권한 + read_code로 초대됨 |
Guest | Guest + read_code |
Guest + read_vulnerability |
Guest + read_code |
Guest + read_code |
Guest 권한 + read_vulnerability로 초대됨 |
Guest | Guest + read_code |
Guest + read_vulnerability |
Guest + read_vulnerability |
Guest + read_vulnerability |
| Developer 권한으로 초대됨 | Guest | Guest + read_code |
Guest + read_vulnerability |
Developer | Developer |
Developer 권한 + admin_vulnerability로 초대됨 |
Guest | Guest + read_code |
Guest + read_vulnerability |
Developer | Developer + admin_vulnerability |
사용자 지정 역할은 그룹을 다른 그룹에 초대할 때만 할당할 수 있습니다. 이슈 468329에서는 그룹을 프로젝트에 초대할 때도 사용자 지정 역할을 할당하도록 제안합니다.
지원되는 객체#
다음 대상에 사용자 지정 역할과 권한을 할당할 수 있습니다:
외부 그룹에 사용자 지정 역할 할당#
외부 LDAP 또는 SAML 그룹의 모든 사용자에게 사용자 지정 멤버 역할을 할당할 수 있으며, LDAP 그룹에서 동기화된 사용자에게만 사용자 지정 관리자 역할을 할당할 수 있습니다.
LDAP 또는 SAML 그룹에 사용자 지정 역할을 할당하는 방법은 다음과 같습니다:
새 권한 기여#
필요한 권한이 없는 경우 다음과 같이 진행할 수 있습니다:
- 개별 사용자 지정 역할 및 권한 요청은 이슈 391760에서 논의합니다.
- 권한 제안 이슈 템플릿으로 권한을 요청하는 이슈를 만듭니다.
- GitLab에 기여해 직접 권한을 추가합니다.