사용자 역할의 미리 정의된 시스템

인스턴스

사용자 유형

각 사용자는 다음 유형 중 하나일 수 있습니다:

  • 일반 사용자.
  • 외부 사용자 - 직접 멤버일 경우에만 그룹 및 프로젝트에 접근 가능.
  • 내부 사용자 - 시스템에서 생성됨.
  • 감사자:
    • 프로젝트나 그룹 설정 메뉴에 대한 접근 없음.
    • Admin 영역에 대한 접근 없음.
    • 나머지 모든 것에 대한 읽기 전용 접근.
  • 관리자 - 읽기 및 쓰기 접근.

각 사용자 유형이 어떻게 사용되는지에 대한 자세한 내용은 권한 페이지를 참조하세요.

그룹 및 프로젝트

일반 권한

그룹과 프로젝트는 다음 가시성 수준을 가질 수 있습니다:

  • 공개 (20) - 모든 사람이 볼 수 있는 엔터티
  • 내부 (10) - 인증된 사용자만 볼 수 있는 엔터티
  • 비공개 (0) - 승인된 멤버만 볼 수 있는 엔터티

기본적으로, 하위 그룹은 더 높은 가시성 수준을 가질 수 없습니다.
예를 들어, 새로운 비공개 그룹을 생성하면 공개 하위 그룹을 포함할 수 없습니다.

그룹의 가시성 수준은 모든 하위 그룹과 하위 프로젝트가 동일하거나 더 낮은 가시성 수준을 가질 경우에만 변경할 수 있습니다.
예를 들어, 모든 하위 그룹과 프로젝트가 내부 또는 비공식적일 경우에만 그룹을 내부로 설정할 수 있습니다.

경고:
기존 그룹의 가시성 수준을 낮은 수준으로 마이그레이션하면, 해당 작업은 하위 그룹을 같은 방식으로 마이그레이션하지 않습니다. 이 문제는 알려진 문제입니다.

가시성 수준은 Gitlab::VisibilityLevel 모듈에서 찾을 수 있습니다.

기능별 권한

또한, 다음 프로젝트 기능은 서로 다른 가시성 수준을 가질 수 있습니다:

  • 이슈
  • 저장소
    • 병합 요청
    • 포크
    • 파이프라인
  • 분석
  • 요구 사항
  • 보안 및 컴플라이언스
  • 위키
  • 스니펫
  • 페이지
  • 운영
  • 메트릭 대시보드

이러한 기능은 “접근 가능한 모든 사람” 또는 “프로젝트 멤버만”으로 설정할 수 있습니다.
이들은 공개 또는 내부 프로젝트에만 의미가 있으며, 비공개 프로젝트는 기본적으로 프로젝트 멤버만 접근할 수 있습니다.

멤버

사용자는 여러 그룹 및 프로젝트의 멤버가 될 수 있습니다. 다음 접근 수준이 제공됩니다(정의된 Gitlab::Access 모듈):

  • 접근 없음 (0)
  • 최소 접근 (5)
  • 게스트 (10)
  • 리포터 (20)
  • 개발자 (30)
  • 유지보수자 (40)
  • 소유자 (50)

사용자가 프로젝트와 프로젝트 부모 그룹 모두의 멤버인 경우, 가장 높은 권한이 프로젝트에 대한 적용된 접근 수준입니다.

사용자가 프로젝트의 멤버이지만 부모 그룹의 멤버가 아닌 경우에도, 그들은 여전히 그룹 및 그들의 엔터티(예: 에픽)를 볼 수 있습니다.

프로젝트 멤버십(그룹 멤버십이 이미 고려된 상태)은 project_authorizations 테이블에 저장됩니다.

참고: 개인 네임스페이스의 프로젝트는 최대 역할이 소유자입니다.

게스트 역할

GitLab에서 게스트 역할을 가진 사용자는 프로젝트 계획, 차단 요소 및 기타 진행 지표를 볼 수 있습니다.
자신이 생성하지 않은 데이터를 수정할 수는 없지만, 게스트는 프로젝트 작업 항목을 생성하고 연결하여 프로젝트에 기여할 수 있습니다.
게스트는 또한 다음과 같은 고급 프로젝트 정보를 볼 수 있습니다:

  • 분석.
  • 사고 정보.
  • 이슈 및 에픽.
  • 라이선스.

자세한 정보는 프로젝트 멤버 권한을 참조하세요.

기밀 문제

기밀 문제는 최소한 보고자 이상의 프로젝트 구성원만 접근할 수 있습니다 (손님은 접근할 수 없습니다). 추가적으로, 저자와 담당자도 접근할 수 있습니다.

라이선스 기능

일부 기능은 사용자가 올바른 라이선스 플랜을 가지고 있어야만 접근할 수 있습니다.

권한 의존성

기능 정책은 꽤 복잡할 수 있으며 여러 규칙으로 구성됩니다.

종종, 하나의 권한은 다른 권한에 기반할 수 있습니다.

좋은 권한을 설계하는 것은 가능한 한 기존 권한을 재사용하고, 기능에 대한 접근을 세분화하는 것을 의미합니다.

복잡한 리소스의 경우, 정보를 더 작은 조각으로 나누고 각 조각에 다른 권한을 부여해야 합니다.

이 경우에 좋은 예는 _Merge Request 위젯_과 _보안 보고서_입니다.

_파이프라인_의 가시성 수준에 따라 _보안 보고서_가 위젯에서 보이거나 보이지 않을 수 있습니다.

따라서 Merge Request 위젯, 파이프라인, _보안 보고서_는 별도의 권한을 가집니다. 게다가, _Merge Request 위젯_과 _파이프라인_에 대한 권한은 _보안 보고서_의 의존성입니다.

보안 기능의 권한 의존성

보안 기능은 이러한 기능이 Merge Requests 및 CI 흐름과 통합되어 있기 때문에 복잡한 권한을 가집니다.

다음은 일부 권한 의존성의 목록입니다.

활동 수준 리소스 위치 권한 의존성
보기 라이선스 정보 의존성 목록, 라이선스 준수 리포지토리를 볼 수 있음
보기 의존성 정보 의존성 목록, 라이선스 준수 리포지토리를 볼 수 있음
보기 취약점 정보 의존성 목록 보안 발견을 볼 수 있음
보기 프로젝트에 대한 블랙리스트/화이트리스트 라이선스 라이선스 준수, 병합 요청 리포지토리를 볼 수 있음
보기 보안 발견 병합 요청, CI 작업 페이지, 파이프라인 보안 탭 프로젝트와 CI 작업을 읽을 수 있음
보기 취약점 피드백 병합 요청 보안 발견을 읽을 수 있음
보기 의존성 목록 페이지 프로젝트 의존성 정보에 접근할 수 있음
보기 라이선스 준수 페이지 프로젝트 라이선스 정보에 접근할 수 있음