콘텐츠로 이동

GitLab 권한(Role) 정책

GitLab의 Role(권한) 정의와 실제 운영에서의 사용 기준을 설명함.


1. 개요

GitLab은 다음 5단계 Role을 제공함:

Guest < Reporter < Developer < Maintainer < Owner

각 Role의 기능과 실제 운영에서의 사용 기준을 정의함.


2. 권한(Role) 정의

2.1 Role 목록

Role 주요 권한
Guest 프로젝트 조회
Reporter 로그 및 상태 조회
Developer 코드 작성
Maintainer 프로젝트 운영
Owner 구조 및 권한 관리

3. Role별 상세 설명

3.1 Guest

가장 약한 권한임. 코드 수정은 못 하지만, 프로젝트 존재와 일부 협업 정보는 봐야 하는 사람에게 줌.

  • 프로젝트 읽기 전용 접근
  • 이슈 및 보드 조회
  • 코드 수정 불가

사용 예

  • 기획자
  • 디자이너
  • 외부 협력사 PM
  • 일정 및 이슈 확인만 필요한 사용자
  • 프로젝트 진행 상황만 봐야 하는 관리자

보통 하는 일

  • 이슈 확인
  • 일정/보드 확인
  • 문서/대화 흐름 확인
  • 코드 수정은 하지 않음

3.2 Reporter

조회 전용이지만 Guest보다 더 실무적임. 코드는 수정하지 않지만, 빌드/배포/로그/파이프라인을 봐야 하는 사람에게 적합함. 운영 상태 확인용 읽기 권한에 가까움.

  • Guest 권한 포함
  • 파이프라인 및 Job 로그 조회
  • 배포 상태 확인 가능
  • 코드 수정 불가

사용 예

  • QA 담당자
  • 운영 모니터링 담당자
  • 고객사 기술 담당자
  • 외부 유지보수 업체의 조회 전용 계정
  • 기능별 서비스 계정 중 “읽기 전용 토큰”이 필요한 경우
  • 읽기 전용 bot 계정

보통 하는 일

  • 파이프라인 결과 확인
  • Job 로그 확인
  • 배포 성공/실패 확인
  • 릴리즈 상태 확인
  • 이슈/코드 조회

3.3 Developer

가장 일반적인 개발자 권한임.

개발은 수행할 수 있으나, 운영 브랜치 정책 및 CI 기반 MR 경로 정책에 의해 환경 승격 흐름은 제한됨.

Developer는 실무 핵심 권한이지만, 운영 브랜치 보호 정책 때문에 production 직접 수정은 불가능하도록 운영하는 것이 일반적임.

허용 권한:

  • 작업 브랜치 생성
  • 코드 작성 및 push
  • Merge Request 생성
  • 코드 리뷰 참여
  • 이슈 기반 작업

제한 사항:

  • protected branch 직접 push 제한
  • 운영 브랜치 direct push 제한
  • 잘못된 MR 경로는 CI pipeline 단계에서 차단됨

사용 예

  • 사내 개발자
  • 프론트엔드/백엔드 실무 개발자
  • 외부 협력 개발자
  • 단기 계약 개발자

보통 하는 일

  • 작업 브랜치 생성
  • 코드 작성 및 push
  • MR 생성
  • 리뷰 대응
  • 이슈 기반 작업

3.4 Maintainer

프로젝트 운영 책임자 권한임. 개발뿐 아니라 merge, 브랜치 정책, 배포 관련 설정까지 담당하는 사람에게 줌.

Maintainer는 실질적인 프로젝트 관리자라서, 일반 개발자에게 무분별하게 주면 안 됨.

  • MR merge 수행
  • 브랜치 보호 정책 관리
  • 프로젝트 설정 변경
  • CI/CD 설정 관리 (variables, secrets 포함)
  • Runner 및 실행 환경 관리

사용 예

  • 팀 리드
  • 테크 리드
  • DevOps 담당자
  • 배포 담당자
  • 프로젝트 운영 책임자

보통 하는 일

  • MR merge
  • protected branch 관리
  • CI/CD 설정 수정
  • project settings 수정
  • runner/tag/variable 관리
  • 릴리즈 진행

3.5 Owner

가장 강한 권한임. 구조 자체를 관리하는 사람에게만 줌.

Owner는 “개발 권한 강화판”이 아니라 조직/권한 구조 관리자로 보는 게 맞음. Owner 권한은 일반 프로젝트 운영에서 사용하지 않음을 원칙으로 함

  • 모든 권한 포함
  • 멤버(Role) 관리
  • 그룹/프로젝트 설정 변경
  • 프로젝트 삭제 가능

사용 예

  • 조직/서비스 GitLab 총괄 관리자
  • 그룹 구조 설계자
  • 권한 체계 관리 책임자
  • 최상위 운영자 1~2명

보통 하는 일:

  • 그룹 멤버 관리
  • 하위 프로젝트 권한 구조 조정
  • 그룹/프로젝트 소유권 관리
  • 구조 변경
  • 삭제/이관/정책 큰 변경

4. 권한 구조 운영 방식 (Team 기반 RBAC)

4.1 권한 관리 구조

  • 사용자(조직) 관리 전용
  • 해당 그룹에는 프로젝트 생성 금지
{COMPANY_NAME}
├── {SERVICE_PREFIX}
├── frontend   (조직/부서)
├── backend    (조직/부서)
├── db         (조직/부서)
├── infra      (조직/부서)
└── ...

4.2 서비스 관리 구조 및 서비스 Project Repository

{PROJECT_NAME}
├── {SERVICE_PREFIX}
│   └── {SERVICE_NAME}
├── backend
│   └── Service
└── db
    └── Service

OtherProject
├── frontend
│   └── Service
├── backend
│   └── Service
└── db
    └── Service