프로젝트 및 그룹 공유
초대를 통해 다음을 공유할 수 있습니다:
- 그룹과 프로젝트.
- 다른 그룹과 그룹.
프로젝트 공유
그룹이 프로젝트에 접근할 수 있도록 하려면,
그룹을 프로젝트에 초대할 수 있습니다.
그룹의 직접적인 멤버와 상속된 멤버는 프로젝트에 접근할 수 있으며, 이 프로젝트는 공유 프로젝트가 됩니다.
이 경우, 상속된 멤버는 초대된 그룹으로 부모 그룹에서 상속된 멤버입니다.
초대된 그룹의 구성원만이 공유 프로젝트에 접근할 수 있습니다.
초대하는 그룹의 하위 그룹의 멤버에게 프로젝트에 대한 접근 권한을 주고 싶다면,
하위 그룹을 초대해야 합니다.
다음 표는 공유 프로젝트에 접근할 수 있는 그룹 멤버의 개요를 제공합니다.
그룹 멤버 소스 | 공유 프로젝트 접근 |
---|---|
공유되는 그룹의 직접 멤버 | 예 |
공유되는 그룹의 상속된 멤버 | 예 |
공유되는 그룹의 직접 멤버가 아닌 하위 그룹의 직접 멤버 | 아니요 |
공유되는 그룹의 상속된 멤버가 아닌 하위 그룹의 상속된 멤버 | 아니요 |
초대하는 그룹의 가시성 수준은 프로젝트의 가시성 수준과
동일하거나 더 제한적이어야 합니다.
예를 들어, 다음과 같이 초대할 수 있습니다:
- 사설 그룹을 사설 프로젝트에.
- 사설 그룹을 내부 프로젝트에.
- 사설 그룹을 공개 프로젝트에.
- 내부 그룹을 내부 프로젝트에.
- 내부 그룹을 공개 프로젝트에.
- 공개 그룹을 공개 프로젝트에.
프로젝트의 최상위 그룹이 프로젝트를 계층 외부에서 공유하는 것을 허용하지 않는 경우,
초대된 그룹이나 하위 그룹은 프로젝트의 네임스페이스에 있어야 합니다.
멤버 접근 및 역할
그룹을 프로젝트에 초대할 때, 다음 멤버가 프로젝트에 접근할 수 있습니다:
- 직접 그룹 멤버.
- 상속된 그룹 멤버.
- 초대된 그룹과 공유된 다른 그룹의 멤버.
각 멤버의 접근은 다음에 기반합니다:
- 그룹에서 그들이 부여받은 역할.
- 그룹을 초대할 때 선택한 최대 역할.
그룹 구성원이 최대 프로젝트 역할보다 권한이 적은 그룹 역할을 가지고 있다면,
해당 구성원은 자신의 그룹 역할의 권한을 유지합니다.
예를 들어, Guest 역할을 가진 멤버를 Maintainer의 최대 역할을 가진 프로젝트에 추가하면,
해당 멤버는 프로젝트에 대해 Guest 역할의 권한만 가지게 됩니다.
추가적으로:
- 그룹 페이지에서 프로젝트는 공유 프로젝트 탭에 나열됩니다.
- 프로젝트의 멤버 페이지에서 그룹은 그룹 탭에 나열됩니다. 이 목록에는 공개 그룹과 사설 그룹 모두 포함됩니다.
- 프로젝트의 멤버 페이지에서 초대된 그룹의 멤버는 멤버 탭에 나열됩니다.
- 사용량 쿼터 페이지에서 프로필 옆에 프로젝트 초대 배지를 가진 멤버는
공유 프로젝트의 최상위 그룹의 유료 멤버 수에 포함됩니다.
GitLab 16.11 이후,
초대된 그룹의 이름과 멤버십 소스는 멤버 및 그룹 탭에서 마스킹됩니다,
다음의 경우를 제외하고:
- 초대된 그룹이 공개인 경우.
- 현재 사용자가 초대된 그룹의 멤버인 경우.
- 현재 사용자가 현재 그룹의 소유자이거나 현재 프로젝트의 Maintainer/Owner인 경우.
주의:
초대된 그룹의 이름과 멤버십 소스는 초대된 그룹에 접근할 수 없는 멤버에게
마스킹됩니다. 그러나 프로젝트의 Maintainers 및 Owners가 비공식 초대 그룹에 접근할 수 없더라도,
그들은 비공식 초대 그룹의 멤버 소스를 볼 수 있습니다.
이 동작은 프로젝트의 소유자가 소속된 그룹을 더 잘 관리할 수 있도록 돕기 위해 의도되었습니다.
예시
group/subgroup01/project
네임스페이스의 프로젝트:
-
group/subgroup02
또는group/subgroup01/subgroup03
와 공유할 수 있습니다. - 프로젝트의 최상위 그룹이 계층 외부로 프로젝트를 공유하는 것을 허용하지 않는 한,
group_abc
와 공유할 수 있습니다.
Group 1
에서 생성된 프로젝트의 경우:
-
Group 1
의 멤버는 프로젝트에 접근할 수 있습니다. -
Group 1
의 소유자는Group 2
를 프로젝트에 초대할 수 있습니다.
이렇게 하면Group 1
과Group 2
의 멤버 모두 공유된 프로젝트에 접근할 수 있습니다.
그룹을 프로젝트에 초대하기
self-managed GitLab에서는 기본적으로 이 기능이 제공됩니다. 사용자가 기능을 숨기려면, 관리자는 기능 플래그
webui_members_inherited_users
를 비활성화할 수 있습니다.GitLab.com 및 GitLab Dedicated에서는 이 기능이 제공됩니다.
필수 조건:
- Maintainer 또는 Owner 역할을 가지고 있어야 합니다.
- 다른 그룹과 프로젝트를 공유하는 것이 방지되지 않아야 합니다.
- 초대된 그룹 또는 서브그룹의 멤버여야 합니다.
그룹을 프로젝트에 초대하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Manage > Members를 선택합니다.
- Invite a group을 선택합니다.
- Select a group to invite 목록에서 초대할 그룹을 선택합니다.
- 그룹의 사용자에 대한 가장 높은 role을 선택합니다.
- 선택 사항. Access expiration date를 선택합니다.
그 날짜 이후, 초대된 그룹은 프로젝트에 더 이상 접근할 수 없습니다. - Invite를 선택합니다.
초대된 그룹은 Groups 탭에 표시됩니다.
REST API를 사용하여 프로젝트의 초대된 그룹을 나열할 수 있습니다.
프라이빗 그룹은:
- 허가되지 않은 사용자로부터 가려집니다.
- 보호된 브랜치, 보호된 태그 및 보호된 환경을 위한 프로젝트 설정에 표시됩니다.
Members 탭은 다음을 보여줍니다:
- 프로젝트에 직접 추가된 멤버
- 프로젝트가 추가된 그룹의 네임스페이스에서 상속된 멤버
초대된 그룹의 멤버는 webui_members_inherited_users
기능 플래그가 활성화되지 않는 한 Members 탭에 표시되지 않습니다.
그룹의 공유 프로젝트 보기
그룹 내에서 공유 프로젝트는 그룹 멤버가 Invite a group 액션을 통해 접근 권한을 얻은 프로젝트입니다.
그룹의 공유 프로젝트를 보려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
- 그룹 페이지에서 Shared projects 탭을 선택합니다.
공유 프로젝트 목록이 표시됩니다.
REST API를 사용하여 그룹의 공유 프로젝트를 나열할 수 있습니다.
프로젝트가 그룹과 공유되지 않도록 방지하기
프로젝트를 다른 그룹과 공유하면 초대할 수 있는 사용자 수가 증가합니다.
각 (하위) 그룹은 접근 권한의 추가 소스가 될 수 있으며, 이는 혼란스럽고 관리하기 어렵습니다.
프로젝트가 다른 그룹과 공유되지 않도록 방지하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
-
<group_name>
의 프로젝트는 다른 그룹과 공유될 수 없습니다를 선택합니다. - 변경 사항 저장을 선택합니다.
이 설정이 활성화되면:
- 그룹 소유자가 재정의하지 않는 한 모든 하위 그룹에 적용됩니다.
- 이미 프로젝트에 추가된 그룹은 해당 프로젝트에 대한 접근 권한을 잃게 됩니다.
참고:
그룹에 사용자 수 한도를 지정한 후, 이 설정을 비활성화할 수 없습니다.
그룹 공유
그룹이 귀하의 그룹에 접근할 수 있도록 하려면, 다른 그룹을 귀하의 그룹에 초대할 수 있습니다.
초대된 그룹의 직접적인 구성원이 귀하의 그룹에 접근할 수 있습니다.
그룹을 귀하의 그룹에 초대한 후:
- 그룹의 구성원 페이지의 그룹 탭에 초대된 그룹이 나열됩니다. 이 목록에는 공개 및 비공식 그룹이 포함됩니다.
- 그룹의 구성원 페이지의 구성원 탭에는 초대된 그룹의 구성원이 나열됩니다.
- 초대된 그룹의 모든 직접 구성원이 초대하는 그룹에 접근할 수 있습니다.
초대된 그룹의 접근 권한과 초대하는 그룹의 접근 권한 사이에서 가장 낮은 접근 권한이 부여됩니다. - 초대된 그룹의 상속 구성원은 초대하는 그룹에 접근할 수 없습니다.
- 그룹의 사용 한도 페이지에서 그룹 초대 배지를 가지고 있는 초대된 그룹의 직접 구성원은 초대하는 그룹의 청구 가능 구성원에 포함됩니다.
GitLab 16.11 이후,
초대된 그룹의 이름과 구성원 출처는 구성원 및 그룹 탭에서 가려집니다,
다음 중 하나가 적용되지 않는 한:
- 초대된 그룹이 공개일 경우.
- 현재 사용자가 초대된 그룹의 구성원일 경우.
- 현재 사용자가 현재 그룹의 소유자이거나 현재 프로젝트의 유지 관리인/소유자일 경우.
참고:
초대된 그룹의 이름과 구성원 출처는 초대된 그룹에 접근할 수 없는 구성원에게서 가려집니다.
그러나 그룹 소유자가 비공식 초대 그룹에 접근할 수 없더라도,
그들은 비공식 초대 그룹 구성원의 출처를 볼 수 있습니다.
이 동작은 그룹 소유자가 자신이 소유한 그룹의 구성원 관리를 더 잘 할 수 있도록 도와주기 위한 것입니다.
예시
User A
는 Group 1
의 직접 구성원이며 그룹에 대한 유지 관리인 역할을 가지고 있습니다.
Group 2
는 Developer 역할을 가진 Group 1
을 초대합니다.
User A
는 Group 2
에서 Developer 역할을 가지고 있습니다.
User B
는 Group 1
의 상속 구성원입니다.
이 사용자는 Group 1
이 초대될 때 Group 2
에 접근할 수 없습니다.
그룹을 그룹에 초대하기
- 하위 그룹과 프로젝트의 직접 구성원에 대한 접근 만료 날짜가 제거되었습니다 (GitLab 17.4 기준).
프로젝트에 그룹을 초대하는 것처럼, 다른 그룹에 그룹을 초대할 수 있습니다.
전제 조건:
- 초대된 그룹과 초대하는 그룹의 구성원이어야 합니다.
귀하의 그룹에 그룹을 초대하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 관리 > 구성원을 선택합니다.
- 그룹 초대를 선택합니다.
- 초대할 그룹 선택 목록에서 초대할 그룹을 선택합니다.
- 그룹의 사용자를 위한 가장 높은 역할 또는 사용자 정의 역할을 선택합니다.
- 선택 사항. 접근 만료 날짜를 선택합니다.
그 날짜 이후로 초대된 그룹은 더 이상 그룹에 접근할 수 없습니다. - 초대를 선택합니다.
초대된 그룹 제거
초대된 그룹을 제거하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
-
관리 > 구성원을 선택합니다.
-
그룹 탭을 선택합니다.
-
제거하려는 그룹 오른쪽에 있는 그룹 제거()를 선택합니다.
초대된 그룹을 귀하의 그룹에서 제거할 때:
-
초대된 그룹의 모든 직접 구성원은 귀하의 그룹에 더 이상 액세스할 수 없습니다.
-
초대된 그룹의 구성원은 귀하의 그룹의 청구 가능한 구성원 수에 더 이상 포함되지 않습니다.
그룹 계층 외부의 그룹 초대 방지
상위 그룹을 구성하여 해당 하위 그룹 및 프로젝트가 상위 그룹의 계층 외부에 있는 다른 그룹을 초대할 수 없게 하려면, 이 옵션은 상위 그룹에만 사용할 수 있습니다.
예를 들어, 다음 그룹 및 프로젝트 계층에서:
- 동물 > 개 > 개 프로젝트
- 동물 > 고양이
- 식물 > 나무
동물 그룹의 계층 외부 그룹 초대를 방지하면:
-
개는 고양이 그룹을 초대할 수 있습니다.
-
개는 나무 그룹을 초대할 수 없습니다.
-
개 프로젝트는 고양이 그룹을 초대할 수 있습니다.
-
개 프로젝트는 나무 그룹을 초대할 수 없습니다.
그룹의 계층 외부 그룹 초대를 방지하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
-
설정 > 일반을 선택합니다.
-
권한 및 그룹 기능을 확장합니다.
-
구성원은
<group_name>
및 그 하위 그룹 외부에 그룹을 초대할 수 없습니다를 선택합니다. -
변경 사항 저장을 선택합니다.
협업을 위한 그룹 설정
외부 사용자와 그룹의 프로젝트에서 협업할 계획이라면 다음 최선의 관행을 고려하세요:
-
조직의 필요에 따라 그룹과 하위 그룹을 논리적으로 구성합니다. 불필요한 그룹 생성을 피하세요.
-
관리해야 할 사용자가 많은 경우, 프로젝트를 구성하는 그룹과 별도로 사용자 그룹을 조직하는 것이 좋습니다. 이러한 사용자 그룹을 필요한 접근 권한이 있는 그룹 및 프로젝트에 공유하세요.
-
프로젝트에 초대할 그룹을 신중하게 고려하세요. 접근이 필요한 그룹만 초대하여 과도한 공유를 방지하고 보안을 유지합니다.
-
그룹을 초대할 때:
-
최대 역할을 적절히 설정하세요. 가장 높은 역할로 기본 설정하는 것보다 필요한 최소 권한을 부여하는 것이 좋습니다.
-
초대 그룹의 하위 그룹 구성원은 프로젝트에 접근할 수 없습니다. 하위 그룹을 별도로 초대하는 것이 더 나을 수 있습니다.
-
-
프로젝트에 접근할 수 있는 여러 그룹에 소속된 사용자의 최대 역할을 확인하세요. 의도하지 않은 높은 권한을 방지하기 위해 사용자의 역할을 변경할 수 있습니다.
-
주기적으로 공유 프로젝트에 대한 그룹 접근을 검토하고 적절히 업데이트하세요. 그룹이 더 이상 프로젝트에 접근할 필요가 없으면 제거하세요.