::: IT인터넷 :::

GitLab의 권한 관리와 설정 방법

곰탱이푸우 2022. 2. 14. 08:20
GitLab의 권한 관리와 설정 방법에 대해 정리한다.
 
GitLab의 설정 방법과 Git 사용 방법은 다음 포스팅을 참고한다.
 

시놀로지 NAS에서 Docker로 GitLab 설정하기

DSM 7.0으로 업데이트 되면서 기존에 사용하던 gitlab 패키지가 3rd-party라고 지원을 중단했다. 그래서 gitlab을 삭제하고 DSM 7.0으로 업데이트를 진행했다. GitLab을 새로 설치하기 위해 Docker를 이용한

www.bearpooh.com

 

gitlab에서 group, project 생성하기

gitlab을 설치하는 과정은 이전 포스팅에서 진행했다. 시놀로지 NAS에서 GitLab 설정 방법 개요 시놀로지 NAS에서 GitLab도 설치 가능하며, DS21x 모델 기준으로 DS216 부터 추가되었다. 아마도 Docker를 DS216

www.bearpooh.com

 

gitlab에서 소스코드 Pull Request와 Merge 하기

이전 포스팅에서 gitlab에서 clone, checkout, commit, push 등 소스 코드 관련 작업 방법을 다뤘다. gitlab에서 소스코드 작업하기 (clone, checkout, commit, push) project와 branch까지 만들었으면 코드 개..

www.bearpooh.com

 

 

GitLab의 역할별 권한 구분

GitLab은 기본적으로 다음과 같은 역할 구분을 제공한다.
사용자가 수행하는 업무에 따라 역할을 부여한다.
구분
내용
Guest
이슈 생성만 가능
Reporter
이슈 관리, Merge Request 가능 
Developer
브랜치 생성, Merge Request 가능 (개발자/주니어)
Maintainer
Master Push, 배포, Merge Requset 승인 등 가능
그룹/프로젝트/구성원 관리를 제외하고 대부분 Owner와 동일 (PL/시니어)
Owner
그룹이나 프로젝트의 관리 권한 (PM/팀장/관리자)
 

계정 관리

사용자 생성

사용자 계정을 생성할때 관리자 계정과 일반 계정을 구분할 수 있다.
Admin - Overview - Users - New User를 클릭한다.
 
계정을 생성할때 아래 부분에 대한 옵션을 설정한다.

 

적용해야 하는 항목은 다음과 같다.
구분
내용
Access Level
일반 사용자와 관리자 계정을 구분한다.
  • Regular - 일반 사용자 
  • Admin - 관리자 (Ocean 프로젝트 참가자)
External
체크 해제를 유지한다.
Validate user account
Can create group
Regular 계정은 체크를 해제한다.
 
 

용자 가입 제한

Ocean 서버의 GitLab은 관리자가 계정을 생성할 것이므로 사용자의 가입 버튼을 비활성화해야 한다.
 
Admin - Settings - General - Sign-up restrictions로 이동한다.
Sign-up enabled의 체크를 해제한다.
 

Group 관리

group 생성 권한 설정

이미 생성 된 일반 사용자의 계정에 group 생성 권한을 제한한다.
 
Admin - Overview - Users로 이동하여 사용자 계정 옆의 Edit 버튼을 클릭한다.
또는 사용자 계정을 클릭하고 우측 상단의 Edit 버튼을 클릭한다. 
 
Can create group 항목의 체크를 해제한다.

 

 

group의 공개수준 설정

GitLab의 사용 목적은 공유와 협업에 있다. 따라서 Private 공간 사용은 최대한 제한한다.
Groups의 기본 설정이 Private으로 되어 있는데 Internal로 변경한다. Internal은 GitLab에 로그인한 사용자는 모두 볼 수 있다.

 

Group을 최초 생성할때 Visibility Level을 Internal로 선택한다.
만약 이미 생성되어 있는 기존 Group의 Visibility Level을 변경하고자 하는 경우는 다음과 같이 진행한다.
 
Admin - Overview - Groups - 그룹 우측의 Edit 버튼을 클릭하거나, 그룹을 선택하고 상단의 Edit 버튼을 클릭한다.
 
Visibility Level 항목을 Internal로 선택한다.
 
 

프로젝트 생성 권한 부여

각 그룹에서 개발자들은 자신이 작성한 어플리케이션에 대한 저장소 생성이 가능해야 한다.
 
따라서 각 그룹별 프로젝트 생성 권한은 Developer와 Maintainers를 적용한다. (기본값)
Owners는 해당 그룹의 관리자로서 자동으로 포함된다.
 
Admin - Overview - Groups - 그룹 우측의 Edit 버튼을 클릭하거나, 그룹을 선택하고 상단의 Edit 버튼을 클릭한다.
 
Allowed to create projects 항목에서 Developer + Maintainers를 선택한다.
 

subgroup 생성 권한 부여

기본적으로 GitLab의 Group 운영 정책은 subgroup을 사용하지 않는 것이다.
그러나 필요한 경우가 있을 수 있기 때문에 Owner에게만 권한을 부여한다. (아쉽게도 Disable 기능을 찾지 못했다.)
 
Admin - Overview - Groups - 그룹 우측의 Edit 버튼을 클릭하거나, 그룹을 선택하고 상단의 Edit 버튼을 클릭한다.
Allowed to create subgroups 항목에서 Owners를 선택한다.
 

사용자 초대 제한 

무분별한 사용자 추가를 제한하기 위해 각 그룹의 사용자 초대는 Owner만 가능하도록 변경한다. 
일반 사용자는 권한이 제한되어 사용자 초대를 사용할 수 없다.
 
Groups - 그룹 선택 - Settings - General - Permission, LFS, 2FA로 이동한다.
Permmitions에서 Prevent members from sending invitations to groups outside of sr-ocean and its subgroups에 체크한다.
 
 

group에 사용자 추가

일반 사용자에 의한 사용자 초대는 제한하였으므로, 각 group에 사용자를 추가하는 것은 GitLab 관리자 또는 해당 Group의 Owner가 수행한다.
 
GitLab 관리자가 추가
GitLab 관리자는 GitLab의 관리 메뉴를 통해 추가한다.
 
Admin - Overview - Groups도 이동하여 추가할 그룹을 선택한다.

 

우측의 Add user(s) to the group에 추가할 계정과 권한을 선택하고 Add users to group을 클릭한다.

 

사용자 초대 (Owner)
사용자 초대 제한 설정을 적용하면 Owner만 가능하다.
 
Groups - 그룹 선택 - Group Information - Members로 이동한다.
화면 상단의 Invite member, Invite group 탭을 사용한다.
  • GitLab member or Email address - 해당 부분을 클릭하면 선택 가능한 계정 목록이 출력된다. 추가할 계정을 선택한다.
  • Select a role - 해당 계정이 수행할 업무에 따른 역할을 선택한다. (Guest, Reporter, Developer, Maintainer, Owner)
  • Access expiration date - 권한 만료 기간을 선택한다. 기한이 없는 경우 비워둔다.
  • Invite 클릭하여 초대한다.

 

 

group에 사용자 권한 부여

각 그룹별로 부여 된 사용자의 권한을 수정하는 방법이다.
 
관리자
Admin - Overview - Groups - 그룹 선택으로 이동하고, 우측 하단의 members의 Manage Access를 클릭한다.
 
이후 과정은 Owner와 동일하므로 아래 Owner 항목을 참고한다.
 
Owner
Groups - 그룹 선택 - Group Information - Members 로 이동한다.
 
하단의 Account에서 계정별로 Max Role을 수행할 역할에 맞게 변경한다.

 

각 역할별 정의는 상단에 정리한 GitLab의 역할별 권한 구분 항목을 참고한다.
 
 

Project 공개 수준 결정

GitLab의 사용 목적은 공유와 협업에 있으므로 GitLab 사용자 모두가 Project의 열람이 가능해야 한다.
따라서 Private 사용을 최대한 제한한다.
 
해당 항목은 GitLab 관리자 메뉴에서 설정한다.
Admin - Settings - General - Visibility and access controls로 이동한다.
 

공개 수준 기본값 설정 

프로젝트, 그룹, 스니펫의 공개 수준에 대한 기본값을 변경한다.
 
기본 값은 Private으로 되어 있는데 Internal로 변경한다. 변경할 대상은 다음과 같다.
  • Default project visibility
  • Default snippet visibility
  • Default group visibility
 

Visibiltity 제한

무분별한 Private 사용을 제한하기 위해 Private 기능 자체를 비활성화 한다.
 
Admin - Settings - General - Visibility and access controls로 이동한다.
Restricted visibility levels 항목에서 Private에 체크한다.

 

해당 부분에 체크하면 모든 Group과 Project 생성과 관리 화면에서 Private 옵션이 제거된다.