프로젝트 및 그룹 공유

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 변경됨 : GitLab 16.10에서 Members 페이지의 Members 탭에 초대된 그룹 멤버를 표시하도록 변경webui_members_inherited_users라고 하는 플래그가 있는 상태로 변경되었습니다. 기본적으로 비활성화됩니다.
  • Feature flag webui_members_inherited_usersGitLab 17.0에서 GitLab.com 및 self-managed에서 활성화되었습니다.
  • Feature flag webui_members_inherited_usersGitLab 17.4에서 제거되었습니다. 초대된 그룹의 멤버가 기본적으로 표시됩니다.

초대를 통해 공유할 수 있습니다:

  • 프로젝트를 그룹과 공유
  • 그룹을 다른 그룹과 공유

프로젝트 공유

특정 그룹이 프로젝트에 액세스할 수 있도록 하려면 그룹을 프로젝트에 초대할 수 있습니다. 그룹의 직접 및 상속된 멤버가 프로젝트에 액세스하게 되며, 이로써 공유 프로젝트가 됩니다.

이 경우, 상속된 멤버는 초대된 그룹으로부터 상속되는 멤버를 말합니다. 초대된 그룹의 멤버만이 공유된 프로젝트에 액세스할 수 있습니다. 초대된 그룹의 서브그룹 멤버에게 프로젝트에 액세스 권한을 부여하려면 해당 서브그룹을 초대해야 합니다.

다음 표는 공유 프로젝트에 액세스 권한을 얻는 그룹 멤버를 개요합니다.

그룹 멤버 출처 공유 프로젝트에 대한 액세스
그룹의 직접 멤버
그룹의 상속된 멤버
서브그룹의 직접 멤버, 그러나 공유된 그룹의 직접 멤버가 아님 아니요
서브그룹의 상속된 멤버, 그러나 공유된 그룹의 직접 멤버가 아님 아니요

당신이 초대하는 그룹의 가시성 수준은 프로젝트의 가시성 수준보다 적어도 같아야 합니다. 예를 들어, 당신은 다음과 같이 초대할 수 있습니다:

  • 비공개 그룹을 비공개 프로젝트에 초대
  • 비공개 그룹을 내부 프로젝트에 초대
  • 비공개 그룹을 공개 프로젝트에 초대
  • 내부 그룹을 내부 프로젝트에 초대
  • 내부 그룹을 공개 프로젝트에 초대
  • 공개 그룹을 공개 프로젝트에 초대

프로젝트의 최상위 그룹이 계층 구조 외부에서 프로젝트를 공유할 수 없도록 한다면, 초대된 그룹이나 서브그룹은 프로젝트의 네임스페이스에 있어야 합니다.

멤버 액세스 및 역할

그룹을 프로젝트에 초대할 때, 다음 멤버들이 프로젝트에 액세스합니다:

  • 직접적인 그룹 멤버
  • 상속된 그룹 멤버
  • 초대된 그룹과 공유된 그룹들의 멤버

각 멤버의 액세스는 다음을 바탕으로 합니다:

  • 그들이 그룹에서 할당된 역할
  • 당신이 그룹을 초대할 때 선택한 최대 역할

만약 그룹 멤버가 프로젝트 역할의 권한보다 적은 권한을 가진 그룹 역할을 가지고 있다면, 해당 멤버는 그룹의 역할 권한을 유지합니다. 예를 들어, Guest 역할을 가진 멤버를 Maintainer 최대 역할을 가진 프로젝트에 추가하면, 해당 멤버는 프로젝트에 대한 Guest 역할 권한만 가집니다.

추가로:

  • 그룹의 페이지에서 프로젝트는 공유 프로젝트 탭에 나열됩니다.
  • 프로젝트의 멤버 페이지에서, 이 그룹은 그룹 탭에 나열됩니다. 이 목록에는 공개 및 비공개 그룹 모두가 포함됩니다.
  • 프로젝트의 멤버 페이지에서, 초대된 그룹의 멤버는 멤버 탭에 나열됩니다.
  • 사용량 할당 페이지에서, 프로젝트 멤버 중 프로젝트 초대 배지가 있는 멤버들은 공유 프로젝트의 최상위 그룹의 과금 대상 멤버로 포함됩니다.

GitLab 16.11부터, 멤버그룹 탭에 초대된 그룹의 이름과 멤버십 출처가 마스킹됩니다, 다음 중 하나에 해당하지 않는 한:

  • 초대된 그룹이 공개 그룹인 경우
  • 현재 사용자가 초대된 그룹의 멤버인 경우
  • 현재 사용자가 현재 그룹의 소유자이거나 현재 프로젝트의 Maintainer/소유자인 경우

참고: 초대된 그룹의 이름과 멤버십 출처는 초대된 그룹에 액세스 권한이 없는 멤버에게는 마스킹됩니다. 그러나 프로젝트 소유자 및 Maintainer는 비공개로 초대된 그룹에 대한 액세스가 없어도, 비공개로 초대된 그룹 멤버의 출처를 볼 수 있습니다. 이 동작은 프로젝트 소유자 및 Maintainer가 소유하는 프로젝트의 멤버십을 더 잘 관리할 수 있도록 의도된 것입니다.

예시

group/subgroup01/project 네임스페이스에 있는 프로젝트:

  • group/subgroup02 또는 group/subgroup01/subgroup03과 공유할 수 있습니다.
  • 프로젝트의 최상위 그룹이 계층 구조 외부에서 프로젝트를 공유할 수 없도록 한다면, group_abc와 공유할 수 없습니다.

Group 1에서 생성된 프로젝트의 경우:

  • Group 1의 멤버는 이 프로젝트에 액세스할 수 있습니다.
  • Group 1의 소유자는 Group 2를 프로젝트에 초대할 수 있습니다. 이렇게 함으로써, Group 1Group 2의 멤버들이 공유 프로젝트에 액세스할 수 있습니다.

프로젝트에 그룹 초대

  • 변경됨 : GitLab 16.10에서 Members 페이지의 Members 탭에 초대된 그룹 멤버를 표시하도록 변경webui_members_inherited_users라고 하는 플래그가 있는 상태로 변경되었습니다. 기본적으로 비활성화됩니다.
  • 기본적으로 이 기능은 self-managed GitLab에서 사용할 수 있습니다. 사용자 당으로 이 기능을 숨기려면, 관리자는 비활성화할 수 있습니다webui_members_inherited_users이라는 플래그.

GitLab 자체 호스팅 버전에서는 기본적으로 이 기능을 사용할 수 있습니다. 사용자 당으로 이 기능을 숨기려면, 관리자는 비활성화할 수 있습니다webui_members_inherited_users이라는 플래그. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.

전제 조건:

  • Maintainer 또는 Owner 역할을 가져야 합니다.
  • 다른 그룹과 프로젝트를 공유하는 것이 방지되어 있어야 합니다.
  • 초대하는 그룹이나 서브그룹의 멤버이어야 합니다.

프로젝트에 그룹을 초대하는 방법:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 관리 > 멤버를 선택합니다.
  3. 그룹을 초대를 선택합니다.
  4. 초대하려는 그룹을 선택 목록에서 선택합니다.
  5. 그룹 내 사용자들에 대한 가장 높은 역할을 선택합니다.
  6. 선택 사항. 액세스 만료 날짜를 선택합니다. 해당 날짜부터 초대된 그룹은 더 이상 프로젝트에 액세스할 수 없습니다.
  7. 초대를 선택합니다.

초대된 그룹은 그룹 탭에 표시됩니다. 또한 REST API를 사용하여 프로젝트에 초대된 그룹을 나열할 수 있습니다.

비공개 그룹은:

  • 허가되지 않은 사용자에게 마스킹됩니다.
  • 보호된 브랜치, 보호된 태그 및 보호된 환경에 대한 프로젝트 설정에서 표시됩니다.

멤버 탭에는 다음이 표시됩니다:

  • 직접적으로 프로젝트에 추가된 멤버
  • 프로젝트가 추가된 그룹 네임스페이스의 상속된 멤버

초대된 그룹의 멤버는 멤버 탭에 표시되지 않습니다. 단, webui_members_inherited_users 기능 플래그가 활성화된 경우에는 그렇지 않습니다.

그룹의 공유된 프로젝트 보기

그룹 내에서 공유된 프로젝트는 그룹 초대 작업을 통해 그룹 구성원이 액세스한 프로젝트입니다.

그룹의 공유된 프로젝트를 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 그룹 페이지에서 공유된 프로젝트 탭을 선택합니다.

공유된 프로젝트 목록이 표시됩니다. 또한 REST API를 사용하여 그룹의 공유된 프로젝트 목록을 볼 수 있습니다.

프로젝트가 다른 그룹과 공유되는 것 방지

프로젝트를 다른 그룹과 공유하면 추가 사용자가 더 많은 회원을 프로젝트로 초대할 수 있습니다. 각 (하위) 그룹은 액세스 권한의 추가 소스가 될 수 있으며, 혼란스럽고 제어하기 어려울 수 있습니다.

프로젝트가 다른 그룹과 공유되는 것을 방지하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. <group_name>의 프로젝트는 다른 그룹과 공유할 수 없음을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

이 설정이 활성화되면:

  • 상위 그룹의 그룹 소유자에 의해 재정의되지 않는 한 모든 하위 그룹에 적용됩니다.
  • 이미 프로젝트에 추가된 그룹은 해당 프로젝트의 액세스 권한을 잃습니다.

참고: 그룹에 사용자 용량을 지정한 후,이 설정을 비활성화할 수 없습니다.

그룹 공유

특정 그룹이 귀하의 그룹에 액세스하도록 원하는 경우, 다른 그룹을 그룹에 초대할 수 있습니다. 초대된 그룹의 직접 멤버는 그룹에 액세스합니다.

그룹을 그룹에 초대한 후에:

  • 그룹의 멤버 페이지의 그룹 탭에 초대된 그룹이 나열됩니다. 이 목록에는 공개 그룹과 비공개 그룹이 모두 포함됩니다.
  • 그룹의 멤버 페이지의 멤버 탭에 초대된 그룹의 멤버가 나열됩니다.
  • 초대된 그룹의 직접 멤버는 초대받은 그룹에서의 액세스와 초대하는 그룹에서의 액세스 사이에서 최소한의 액세스가 부여됩니다.
  • 상속된 그룹의 멤버는 초대된 그룹에 액세스하지 못합니다.
  • 초대된 그룹의 직접 멤버 중에 프로필 옆에 그룹 초대 배지가 있는 그룹은 초대하는 그룹의 요금을 지불해야 하는 회원 수로 계산됩니다.

GitLab 16.11 및 이후에서는, 멤버그룹 탭에서 초대된 그룹의 이름 및 멤버십 소스가 마스킹됩니다. 다음 중 하나가 적용되지 않는 한:

  • 초대된 그룹이 공개 그룹인 경우
  • 현재 사용자가 초대된 그룹의 멤버인 경우
  • 현재 사용자가 현재 그룹의 소유자이거나 현재 프로젝트의 유지 관리자/소유자인 경우

참고: 초대된 그룹의 이름 및 멤버십 소스는 초대받은 그룹에 액세스 권한이 없는 멤버에게는 마스킹됩니다. 그러나 그룹 소유자라도 비공개로 초대받은 그룹에 액세스할 수 없지만 비공개로 초대받은 그룹 멤버의 소스를 볼 수 있습니다. 이 동작은 소유 그룹의 소유자가 소유하는 그룹의 회원들을 더 잘 관리하도록 돕기 위한 것입니다.

예시

사용자 A그룹 1의 직접 멤버이며 그룹에 대한 유지 관리자 역할을 가지고 있습니다. 그룹 2는 개발자 역할로 그룹 1을 초대합니다. 사용자 A그룹 2에서 개발자 역할을 가지고 있습니다.

사용자 B그룹 1의 상속된 멤버입니다. 이 사용자는 그룹 1이 초대되었을 때 그룹 2에 액세스 권한을 얻지 못합니다.

그룹을 그룹에 초대

  • 하위 그룹 및 프로젝트의 직접 멤버에 대한 액세스 만료 날짜가 제거되었습니다 GitLab 17.4에서.

프로젝트를 그룹에 초대하는 것과 유사하게 다른 그룹을 그룹에 초대할 수 있습니다.

전제 조건:

  • 초대받은 그룹 및 초대하는 그룹의 멤버여야 합니다.

그룹을 그룹에 초대하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 관리 > 멤버를 선택합니다.
  3. 그룹 초대를 선택합니다.
  4. 초대할 그룹 선택 목록에서 초대하려는 그룹을 선택합니다.
  5. 그룹의 사용자에게 가장 높은 역할 또는 사용자 지정 역할을 선택합니다.
  6. 선택 사항. 액세스 만료 날짜를 선택합니다. 해당 날짜부터 초대된 그룹은 더 이상 그룹에 액세스할 수 없습니다.
  7. 초대를 선택합니다.

초대된 그룹 제거

초대된 그룹을 제거하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 관리 > 멤버를 선택합니다.
  3. 그룹 탭을 선택합니다.
  4. 제거하려는 그룹 오른쪽에 그룹 제거()를 선택합니다.

그룹에서 초대된 그룹을 제거하면:

  • 초대된 그룹의 직접 멤버는 더 이상 귀하의 그룹에 액세스할 수 없습니다.
  • 초대된 그룹의 멤버는 귀하의 그룹의 청구 가능한 멤버 수에 포함되지 않습니다.

그룹 계층 구조 외부의 그룹 초대 방지

최상위 그룹을 구성하여 하위 그룹 및 프로젝트가 최상위 그룹 계층 외의 다른 그룹을 초대하지 못하도록 구성할 수 있습니다. 이 옵션은 최상위 그룹에만 사용할 수 있습니다.

다음과 같은 그룹 및 프로젝트 계층 구조가 있는 경우 예시:

  • Animals > Dogs > Dog Project
  • Animals > Cats
  • Plants > Trees

Animals 그룹에서 그룹 계층 구조 외부의 그룹을 초대하는 것을 방지하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능을 확장합니다.
  4. 멤버는 <group_name> 및 해당 하위 그룹 외의 그룹을 초대할 수 없음.을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

협업을 위한 그룹 설정

외부 사용자와 프로젝트에서 협업하고자 한다면, 다음과 같은 모범 사례를 고려하세요:

  • 조직적인 요구에 따라 그룹 및 하위 그룹을 논리적으로 구성하세요. 불필요한 그룹을 만들지 않도록 합니다.
  • 많은 사용자를 관리해야 하는 경우, 프로젝트를 구성하는 그룹과 별도로 사용자 그룹을 구성하는 것을 고려하세요. 이 사용자 그룹을 해당하는 그룹 및 프로젝트에 공유하세요.
  • 프로젝트에 초대할 그룹을 신중하게 고려하세요. 액세스가 필요한 그룹에만 초대하여 지나치게 공유되는 것을 방지하고 보안을 유지합니다.
  • 그룹을 초대할 때:
    • 적절하게 최대 권한을 설정하세요. 기본적으로 가장 높은 역할을 부여하는 대신 필요한 최소한의 권한을 할당하는 것이 좋습니다.
    • 초대한 그룹의 하위 그룹의 구성원은 프로젝트에 액세스할 수 없습니다. 필요하다면 하위 그룹을 따로 초대하는 것이 좋습니다.
  • 프로젝트에 액세스 권한을 갖는 여러 그룹에 속한 사용자의 최대 권한을 확인하세요. 의도하지 않은 고도한 권한을 방지하기 위해 사용자의 역할을 변경하는 것이 좋습니다.
  • 공유된 프로젝트에 대한 그룹 액세스를 주기적으로 검토하고 적절하게 업데이트하세요. 그룹이 더 이상 프로젝트에 액세스할 필요가 없다면 제거하세요.