InfoGrab DocsInfoGrab Docs

사용자 역할의 사전 정의 시스템

요약

각 사용자는 다음 유형 중 하나에 해당합니다. 각 사용자 유형이 어떻게 사용되는지는 권한 페이지를 참고합니다. 기본 역할은 config/authz/roles/ 아래의 YAML 파일에 정의되어 있습니다. 그룹과 프로젝트는 다음 공개 수준을 가질 수 있습니다.

인스턴스#

사용자 유형#

각 사용자는 다음 유형 중 하나에 해당합니다.

  • 일반(Regular).
  • 외부(External) - 직접 멤버인 경우에만 그룹과 프로젝트에 접근합니다.
  • 내부 사용자 - 시스템이 생성합니다.
  • Auditor:
    • 프로젝트 또는 그룹 설정 메뉴에 접근할 수 없습니다.
    • Admin 영역에 접근할 수 없습니다.
    • 그 외 모든 항목에 읽기 전용으로 접근합니다.
  • Administrator - 읽기·쓰기 권한을 가집니다.

각 사용자 유형이 어떻게 사용되는지는 권한 페이지를 참고합니다.

역할 정의 YAML 파일#

기본 역할은 config/authz/roles/ 아래의 YAML 파일에 정의되어 있습니다. 각 파일은 해당 역할의 직접 권한과 상속 계층을 지정합니다. 전체 스키마와 권한이 해석되는 방식은 역할 정의 YAML 파일을 참고합니다.

그룹 및 프로젝트#

일반 권한#

그룹과 프로젝트는 다음 공개 수준을 가질 수 있습니다.

  • public(20) - 엔터티가 모든 사용자에게 표시됩니다
  • internal(10) - 엔터티가 인증된 사용자에게 표시됩니다
  • private(0) - 엔터티가 승인된 멤버에게만 표시됩니다

기본적으로 하위 그룹은 상위보다 높은 공개 수준을 가질 수 없습니다. 예를 들어 새 private 그룹을 만들면 그 안에 public 하위 그룹을 둘 수 없습니다.

그룹의 공개 수준은 모든 하위 그룹과 하위 프로젝트의 공개 수준이 같거나 더 낮은 경우에만 변경할 수 있습니다. 예를 들어 모든 하위 그룹과 프로젝트가 internal 또는 private 인 경우에만 그룹을 internal로 설정할 수 있습니다.

Warning

기존 그룹을 더 낮은 공개 수준으로 옮겨도 하위 그룹은 같은 방식으로 함께 옮겨지지 않습니다. 이는 알려진 문제입니다.

공개 수준은 Gitlab::VisibilityLevel 모듈에서 확인할 수 있습니다.

기능별 권한#

또한 다음 프로젝트 기능은 서로 다른 공개 수준을 가질 수 있습니다.

  • Issues
  • Repository
    • Merge request
    • Forks
    • Pipelines
  • Analytics
  • Requirements
  • Security and compliance
  • Wiki
  • Snippets
  • Pages
  • Operations
  • Metrics Dashboard

이 기능들은 "Everyone with Access" 또는 "Only Project Members" 로 설정할 수 있습니다. private 프로젝트는 기본적으로 프로젝트 멤버만 접근할 수 있으므로, 이 설정은 public 또는 internal 프로젝트에서만 의미가 있습니다.

멤버#

사용자는 여러 그룹과 프로젝트의 멤버가 될 수 있습니다. 다음 액세스 수준을 사용할 수 있습니다 (Gitlab::Access 모듈에 정의되어 있습니다).

  • No access (0)
  • Minimal access (5)
  • Guest (10)
  • Planner (15)
  • Reporter (20)
  • Security Manager (25)
  • Developer (30)
  • Maintainer (40)
  • Owner (50)

사용자가 프로젝트와 그 프로젝트의 상위 그룹 모두의 멤버라면, 해당 프로젝트에는 가장 높은 권한이 액세스 수준으로 적용됩니다.

사용자가 프로젝트의 멤버이지만 상위 그룹의 멤버가 아니어도 그룹과 그 엔터티(예: 에픽)를 볼 수 있습니다.

프로젝트 멤버십(그룹 멤버십이 이미 반영된 값)은 project_authorizations 테이블에 저장됩니다.

Note

개인 네임스페이스의 프로젝트에서 가질 수 있는 최고 권한은 Owner 입니다.

Guest 권한#

GitLab에서 Guest 권한을 가진 사용자는 프로젝트 계획, 블로커, 그 밖의 진행 지표를 볼 수 있습니다. 직접 만들지 않은 데이터는 수정할 수 없지만, 프로젝트 작업 항목을 생성하고 연결하는 방식으로 프로젝트에 기여할 수 있습니다. 또한 다음과 같은 상위 수준 프로젝트 정보를 볼 수 있습니다.

  • 분석 정보.
  • 인시던트 정보.
  • 이슈와 에픽.
  • 라이선스.

자세한 내용은 프로젝트 멤버 권한을 참고합니다.

기밀 이슈#

기밀 이슈는 최소 Reporter 권한을 가진 프로젝트 멤버만 접근할 수 있습니다(Guest는 접근할 수 없습니다). 또한 해당 이슈의 작성자와 담당자도 접근할 수 있습니다.

라이선스 기능#

일부 기능은 사용자가 적절한 라이선스 플랜을 가진 경우에만 접근할 수 있습니다.

권한 의존성#

기능 정책은 상당히 복잡할 수 있으며 여러 규칙으로 구성됩니다. 하나의 권한이 다른 권한을 기반으로 하는 경우도 많습니다.

좋은 권한 설계란 기존 권한을 최대한 재사용하고 기능에 대한 접근을 세분화하는 것입니다.

복잡한 리소스는 더 작은 정보 단위로 나누고 각 단위에 서로 다른 권한을 부여해야 합니다.

이 경우의 좋은 예가 머지 리퀘스트 위젯 과 보안 리포트 입니다. 파이프라인 의 공개 수준에 따라 보안 리포트 가 위젯에 표시되기도 하고 표시되지 않기도 합니다. 따라서 머지 리퀘스트 위젯, 파이프라인, 보안 리포트 는 각각 별도의 권한을 가집니다. 나아가 머지 리퀘스트 위젯 과 파이프라인 의 권한은 보안 리포트 의 의존성입니다.

Secure 기능의 권한 의존성#

Secure 기능은 머지 리퀘스트, CI/CD 흐름 등 여러 기능과 통합되어 있어 권한이 복잡합니다.

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

활동 수준 리소스 위치 권한 의존성
보기 라이선스 정보 의존성 목록, 라이선스 컴플라이언스 리포지터리 보기 가능
보기 의존성 정보 의존성 목록, 라이선스 컴플라이언스 리포지터리 보기 가능
보기 취약점 정보 의존성 목록 보안 결과(findings) 보기 가능
보기 프로젝트의 허용·차단 라이선스 라이선스 컴플라이언스, 머지 리퀘스트 리포지터리 보기 가능
보기 보안 결과(findings) 머지 리퀘스트, CI job 페이지, 파이프라인 보안 탭 프로젝트와 CI job 읽기 가능
보기 취약점 피드백 머지 리퀘스트 보안 결과(findings) 읽기 가능
보기 의존성 목록 페이지 프로젝트 의존성 정보 접근 가능
보기 라이선스 컴플라이언스 페이지 프로젝트 라이선스 정보 접근 가능

사용자 역할의 사전 정의 시스템

GitLab v19.4
원문 보기

요약

각 사용자는 다음 유형 중 하나에 해당합니다. 각 사용자 유형이 어떻게 사용되는지는 권한 페이지를 참고합니다. 기본 역할은 config/authz/roles/ 아래의 YAML 파일에 정의되어 있습니다. 그룹과 프로젝트는 다음 공개 수준을 가질 수 있습니다.

인스턴스#

사용자 유형#

각 사용자는 다음 유형 중 하나에 해당합니다.

  • 일반(Regular).
  • 외부(External) - 직접 멤버인 경우에만 그룹과 프로젝트에 접근합니다.
  • 내부 사용자 - 시스템이 생성합니다.
  • Auditor:
    • 프로젝트 또는 그룹 설정 메뉴에 접근할 수 없습니다.
    • Admin 영역에 접근할 수 없습니다.
    • 그 외 모든 항목에 읽기 전용으로 접근합니다.
  • Administrator - 읽기·쓰기 권한을 가집니다.

각 사용자 유형이 어떻게 사용되는지는 권한 페이지를 참고합니다.

역할 정의 YAML 파일#

기본 역할은 config/authz/roles/ 아래의 YAML 파일에 정의되어 있습니다. 각 파일은 해당 역할의 직접 권한과 상속 계층을 지정합니다. 전체 스키마와 권한이 해석되는 방식은 역할 정의 YAML 파일을 참고합니다.

그룹 및 프로젝트#

일반 권한#

그룹과 프로젝트는 다음 공개 수준을 가질 수 있습니다.

  • public(20) - 엔터티가 모든 사용자에게 표시됩니다
  • internal(10) - 엔터티가 인증된 사용자에게 표시됩니다
  • private(0) - 엔터티가 승인된 멤버에게만 표시됩니다

기본적으로 하위 그룹은 상위보다 높은 공개 수준을 가질 수 없습니다. 예를 들어 새 private 그룹을 만들면 그 안에 public 하위 그룹을 둘 수 없습니다.

그룹의 공개 수준은 모든 하위 그룹과 하위 프로젝트의 공개 수준이 같거나 더 낮은 경우에만 변경할 수 있습니다. 예를 들어 모든 하위 그룹과 프로젝트가 internal 또는 private 인 경우에만 그룹을 internal로 설정할 수 있습니다.

Warning

기존 그룹을 더 낮은 공개 수준으로 옮겨도 하위 그룹은 같은 방식으로 함께 옮겨지지 않습니다. 이는 알려진 문제입니다.

공개 수준은 Gitlab::VisibilityLevel 모듈에서 확인할 수 있습니다.

기능별 권한#

또한 다음 프로젝트 기능은 서로 다른 공개 수준을 가질 수 있습니다.

  • Issues
  • Repository
    • Merge request
    • Forks
    • Pipelines
  • Analytics
  • Requirements
  • Security and compliance
  • Wiki
  • Snippets
  • Pages
  • Operations
  • Metrics Dashboard

이 기능들은 "Everyone with Access" 또는 "Only Project Members" 로 설정할 수 있습니다. private 프로젝트는 기본적으로 프로젝트 멤버만 접근할 수 있으므로, 이 설정은 public 또는 internal 프로젝트에서만 의미가 있습니다.

멤버#

사용자는 여러 그룹과 프로젝트의 멤버가 될 수 있습니다. 다음 액세스 수준을 사용할 수 있습니다 (Gitlab::Access 모듈에 정의되어 있습니다).

  • No access (0)
  • Minimal access (5)
  • Guest (10)
  • Planner (15)
  • Reporter (20)
  • Security Manager (25)
  • Developer (30)
  • Maintainer (40)
  • Owner (50)

사용자가 프로젝트와 그 프로젝트의 상위 그룹 모두의 멤버라면, 해당 프로젝트에는 가장 높은 권한이 액세스 수준으로 적용됩니다.

사용자가 프로젝트의 멤버이지만 상위 그룹의 멤버가 아니어도 그룹과 그 엔터티(예: 에픽)를 볼 수 있습니다.

프로젝트 멤버십(그룹 멤버십이 이미 반영된 값)은 project_authorizations 테이블에 저장됩니다.

Note

개인 네임스페이스의 프로젝트에서 가질 수 있는 최고 권한은 Owner 입니다.

Guest 권한#

GitLab에서 Guest 권한을 가진 사용자는 프로젝트 계획, 블로커, 그 밖의 진행 지표를 볼 수 있습니다. 직접 만들지 않은 데이터는 수정할 수 없지만, 프로젝트 작업 항목을 생성하고 연결하는 방식으로 프로젝트에 기여할 수 있습니다. 또한 다음과 같은 상위 수준 프로젝트 정보를 볼 수 있습니다.

  • 분석 정보.
  • 인시던트 정보.
  • 이슈와 에픽.
  • 라이선스.

자세한 내용은 프로젝트 멤버 권한을 참고합니다.

기밀 이슈#

기밀 이슈는 최소 Reporter 권한을 가진 프로젝트 멤버만 접근할 수 있습니다(Guest는 접근할 수 없습니다). 또한 해당 이슈의 작성자와 담당자도 접근할 수 있습니다.

라이선스 기능#

일부 기능은 사용자가 적절한 라이선스 플랜을 가진 경우에만 접근할 수 있습니다.

권한 의존성#

기능 정책은 상당히 복잡할 수 있으며 여러 규칙으로 구성됩니다. 하나의 권한이 다른 권한을 기반으로 하는 경우도 많습니다.

좋은 권한 설계란 기존 권한을 최대한 재사용하고 기능에 대한 접근을 세분화하는 것입니다.

복잡한 리소스는 더 작은 정보 단위로 나누고 각 단위에 서로 다른 권한을 부여해야 합니다.

이 경우의 좋은 예가 머지 리퀘스트 위젯 과 보안 리포트 입니다. 파이프라인 의 공개 수준에 따라 보안 리포트 가 위젯에 표시되기도 하고 표시되지 않기도 합니다. 따라서 머지 리퀘스트 위젯, 파이프라인, 보안 리포트 는 각각 별도의 권한을 가집니다. 나아가 머지 리퀘스트 위젯 과 파이프라인 의 권한은 보안 리포트 의 의존성입니다.

Secure 기능의 권한 의존성#

Secure 기능은 머지 리퀘스트, CI/CD 흐름 등 여러 기능과 통합되어 있어 권한이 복잡합니다.

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

활동 수준 리소스 위치 권한 의존성
보기 라이선스 정보 의존성 목록, 라이선스 컴플라이언스 리포지터리 보기 가능
보기 의존성 정보 의존성 목록, 라이선스 컴플라이언스 리포지터리 보기 가능
보기 취약점 정보 의존성 목록 보안 결과(findings) 보기 가능
보기 프로젝트의 허용·차단 라이선스 라이선스 컴플라이언스, 머지 리퀘스트 리포지터리 보기 가능
보기 보안 결과(findings) 머지 리퀘스트, CI job 페이지, 파이프라인 보안 탭 프로젝트와 CI job 읽기 가능
보기 취약점 피드백 머지 리퀘스트 보안 결과(findings) 읽기 가능
보기 의존성 목록 페이지 프로젝트 의존성 정보 접근 가능
보기 라이선스 컴플라이언스 페이지 프로젝트 라이선스 정보 접근 가능