사용자 역할의 미리 정의된 시스템
인스턴스
사용자 유형
각 사용자는 다음 유형 중 하나일 수 있습니다:
- 일반 사용자.
- 외부 사용자 - 직접 멤버일 경우에만 그룹 및 프로젝트에 접근 가능.
- 내부 사용자 - 시스템에서 생성됨.
-
감사자:
- 프로젝트나 그룹 설정 메뉴에 대한 접근 없음.
- 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 작업을 읽을 수 있음 |
보기 | 취약점 피드백 | 병합 요청 | 보안 발견을 읽을 수 있음 |
보기 | 의존성 목록 페이지 | 프로젝트 | 의존성 정보에 접근할 수 있음 |
보기 | 라이선스 준수 페이지 | 프로젝트 | 라이선스 정보에 접근할 수 있음 |