사용자 역할의 사전 정의된 시스템
인스턴스
사용자 유형
각 사용자는 다음 중 하나가 될 수 있습니다:
- 일반 사용자.
- 외부 - 직접 멤버인 경우에만 그룹 및 프로젝트에 액세스 가능.
- 내부 사용자 - 시스템에서 생성됨.
-
감사자:
- 프로젝트 또는 그룹 설정 메뉴에 액세스할 수 없음.
- 관리자 영역에 액세스할 수 없음.
- 그 외 모든 것에 대해 읽기 전용 액세스.
- 관리자 - 읽기-쓰기 액세스.
각 사용자 유형이 어떻게 사용되는지에 대한 자세한 내용은 권한 페이지를 참조하세요.
그룹 및 프로젝트
일반 권한
그룹 및 프로젝트에는 다음 가시성 수준이 있을 수 있습니다:
- public (
20
) - 엔터티가 모두에게 표시됨 - internal (
10
) - 엔터티가 인증된 사용자에게만 표시됨 - private (
0
) - 엔터티가 해당 엔터티의 승인된 멤버에게만 표시됨
기본적으로 하위 그룹은 더 높은 가시성 수준을 가질 수 없습니다. 예를 들어, 새로운 비공개 그룹을 만드는 경우 공개 서브그룹이 포함될 수 없습니다.
그룹의 가시성 수준은 모든 하위 그룹 및 하위 프로젝트가 동일하거나 더 낮은 가시성 수준인 경우에만 변경할 수 있습니다. 예를 들어, 그룹은 모든 하위 그룹 및 프로젝트가 내부 또는 비공개인 경우에만 내부로 설정될 수 있습니다.
경고: 기존 그룹을 낮은 가시성 수준으로 이주하면 해당 작업이 하위 그룹을 마이그레이트하지 않는다는 점에 유의하세요. 이는 알려진 문제입니다.
가시성 수준은 Gitlab::VisibilityLevel
모듈에서 찾을 수 있습니다.
기능별 특정 권한
또한, 다음 프로젝트 기능에는 다른 가시성 수준이 있을 수 있습니다:
- 이슈
- 저장소
- 병합 요청
- 포크
- 파이프라인
- 분석
- 요구 사항
- 보안 및 규정 준수
- 위키
- 스니펫
- 페이지
- 작업
- 메트릭 대시보드
이러한 기능은 “모든 사용자에게 액세스” 또는 “프로젝트 멤버만 액세스”로 설정할 수 있습니다. 비공개 프로젝트의 경우에는 기본적으로 프로젝트 멤버만 액세스할 수 있습니다.
멤버
사용자는 여러 그룹 및 프로젝트의 멤버가 될 수 있습니다. 다음과 같은 액세스 수준을 사용할 수 있습니다 (정의는 Gitlab::Access
모듈에 정의됨):
- 액세스 없음 (
0
) -
최소한의 액세스 (
5
) - 게스트 (
10
) - 리포터 (
20
) - 개발자 (
30
) - 유지자 (
40
) - 소유자 (
50
)
사용자가 프로젝트 및 프로젝트 부모 그룹의 멤버인 경우, 프로젝트의 적용된 액세스 수준은 가장 높은 권한입니다.
사용자가 프로젝트의 멤버이지만 부모 그룹의 멤버가 아닌 경우, 그들은 여전히 그룹 및 그들의 엔터티 (예: 에픽)를 볼 수 있습니다.
프로젝트 멤버십 (그룹 멤버십이 이미 고려된 경우)은 project_authorizations
테이블에 저장됩니다.
참고: GitLab 14.9 이후, 개인 네임스페이스의 프로젝트는 최대로 소유자 역할을 가집니다. GitLab 14.8 이전에는 알려진 문제 때문에 개인 네임스페이스의 프로젝트는 최대로 유지자 역할을 가집니다.
게스트 역할
GitLab의 게스트 역할을 가지고 있는 사용자는 프로젝트 계획, 차단자 및 기타 진행 지시자를 볼 수 있습니다. 생성하지 않은 데이터를 수정할 수 없지만, 게스트는 프로젝트 워크 항목을 생성하고 연결함으로써 프로젝트에 기여할 수 있습니다. 게스트는 또한 다음과 같은 고수준 프로젝트 정보를 볼 수 있습니다:
- 분석.
- 사건 정보.
- 이슈 및 에픽.
- 라이선스.
추가 정보는 프로젝트 구성원 권한을 참조하세요.
기밀 이슈
기밀 이슈들은 최소 리포터 이상의 프로젝트 구성원만 액세스할 수 있습니다. 또한 작성자 및 할당된 사람이 액세스할 수 있습니다.
라이센스 기능
일부 기능은 사용자가 올바른 라이센스 계획을 가지고 있는 경우에만 액세스할 수 있습니다.
권한 종속성
기능 정책은 매우 복잡하며 여러 규칙으로 구성될 수 있습니다. 꽤 자주, 하나의 권한은 다른 권한을 기반으로 할 수 있습니다.
좋은 권한을 디자인하는 것은 가능한 한 기존의 권한을 재사용하고 기능에 대한 액세스를 세분화하는 것을 의미합니다.
복잡한 리소스의 경우, 리소스를 더 작은 정보 조각으로 분해해야 하며 각 조각에는 다른 권한이 부여되어야 합니다.
이 경우의 좋은 예는 병합 요청 위젯_과 _보안 보고서_입니다. _파이프라인_의 가시성 수준에 따라 _보안 보고서_가 위젯에 표시되거나 그렇지 않을 수 있습니다. 따라서 _병합 요청 위젯, 파이프라인 및 _보안 보고서_에는 별도의 권한이 있습니다. 또한 _병합 요청 위젯_과 _파이프라인_의 권한이 _보안 보고서_의 종속성입니다.
보안 기능의 권한 종속성
보안 기능은 복잡한 권한을 가지고 있습니다. 이는 이러한 기능들이 병합 요청 및 CI 흐름과 통합되어 있기 때문입니다.
다음은 일부 권한 종속성 목록입니다.
활동 레벨 | 리소스 | 위치 | 권한 종속성 |
---|---|---|---|
보기 | 라이선스 정보 | 종속성 목록, 라이선스 준수 | 저장소를 볼 수 있음 |
보기 | 종속성 정보 | 종속성 목록, 라이선스 준수 | 저장소를 볼 수 있음 |
보기 | 취약점 정보 | 종속성 목록 | 보안 결과를 볼 수 있음 |
보기 | 프로젝트용 라이선스 목록 | 라이선스 준수, 병합 요청 | 저장소를 볼 수 있음 |
보기 | 보안 결과 | 병합 요청, CI 작업 페이지, 파이프라인 보안 탭 | 프로젝트 및 CI 작업을 읽을 수 있음 |
보기 | 취약점 피드백 | 병합 요청 | 보안 결과를 읽을 수 있음 |
보기 | 종속성 목록 페이지 | 프로젝트 | 종속성 정보에 액세스할 수 있음 |
보기 | 라이선스 준수 페이지 | 프로젝트 | 라이선스 정보에 액세스할 수 있음 |