GitLab의 권한 관리와 설정 방법에 대해 정리한다.
GitLab의 설정 방법과 Git 사용 방법은 다음 포스팅을 참고한다.
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
|
일반 사용자와 관리자 계정을 구분한다.
|
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 옵션이 제거된다.
'::: IT인터넷 :::' 카테고리의 다른 글
gitlab-ce에서 간헐적으로 발생하는 500 Error 해결 방법 (0) | 2022.02.21 |
---|---|
GitLab의 자체 CI/CD 기능 비활성화 (0) | 2022.02.17 |
Jenkins 권한 관리와 설정 방법 (0) | 2022.02.10 |
Jenkins에 Docker 이미지 빌드 파이프라인 구성 (0) | 2022.02.07 |
Jenkins의 Docker 빌드 테스트에 사용할 예제 생성 (0) | 2022.02.03 |