프로젝트 구성원

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

프로젝트 구성원은 당신의 프로젝트에 액세스 권한을 갖는 사용자 및 그룹입니다.

각 구성원은 프로젝트에서 수행할 수 있는 작업을 결정하는 역할을 부여받습니다.

멤버십 유형

  • 변경됨: GitLab 16.10의 Members 페이지의 Members 탭에서 초대된 그룹 구성원을 표시하도록 flagwebui_members_inherited_users가 변경되었습니다. 기본적으로 비활성화됨.
  • 피처 플래그 webui_members_inherited_usersGitLab.com 및 Self-Managed에서 GitLab 17.0에서 활성화되었습니다.
Self-Managed형 GitLab에서는 기본적으로 이 기능을 사용할 수 있습니다. 사용자별로 이 기능을 숨기려면 관리자가 webui_members_inherited_users라는 feature flag를 비활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.

사용자는 직접 또는 간접적으로 그룹 또는 프로젝트의 구성원이 될 수 있습니다. 간접 멤버십은 상속, 공유 또는 상속된 공유일 수 있습니다.

멤버십 유형 멤버십 프로세스
직접 사용자가 직접 현재 그룹 또는 프로젝트에 추가됩니다.
간접 사용자가 직접 현재 그룹 또는 프로젝트에 추가되지 않습니다. 대신, 사용자는 상위 그룹에서 상속하거나 현재 그룹 또는 프로젝트를 다른 그룹에 초대함으로써 구성원이 됩니다.
상속 사용자는 현재 그룹 또는 프로젝트를 포함하는 상위 그룹의 구성원입니다.
공유 사용자는 현재 그룹 또는 프로젝트에 초대되었거나 현재 그룹 또는 프로젝트의 조상 중 하나에 초대된 그룹 또는 프로젝트의 구성원입니다.
상속된 공유 사용자는 현재 그룹 또는 프로젝트에 초대된 그룹 또는 프로젝트의 부모의 구성원입니다.
flowchart RL subgraph 그룹 A A(직접 구성원) B{{공유된 구성원}} subgraph 프로젝트 X H(직접 구성원) C{{상속된 구성원}} D{{상속된 공유 구성원}} E{{공유된 구성원}} end A-->|프로젝트 X에서의 상속된 멤버십\n그룹 A에서의 직접 멤버십|C end subgraph 그룹 C G(직접 구성원) end subgraph 그룹 B F(직접 구성원) end F-->|그룹 A에서\n그룹 B로 초대됨|B B-->|프로젝트 X에서의 상속된 멤버십\n그룹 A에서의 간접 멤버십|D G-->|그룹 C가 프로젝트 X로 초대됨|E

프로젝트에 사용자 추가

프로젝트에 사용자를 추가하여 그들이 직접 구성원이 되고 권한을 부여할 수 있습니다.

사전 요건:

프로젝트에 사용자를 추가하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 구성원 초대를 선택합니다.
  4. 사용자가:
    • GitLab 계정이 있는 경우, 사용자 이름을 입력합니다.
    • GitLab 계정이 없는 경우, 이메일 주소를 입력합니다.
  5. 기본 역할 또는 사용자 정의 역할을 선택합니다.
  6. 선택 사항. 액세스 만료 날짜를 선택합니다. 해당 날짜부터 사용자는 프로젝트에 더 이상 액세스할 수 없습니다.

    액세스 만료 날짜를 선택한 경우, 프로젝트 구성원은 액세스 만료 7일 전에 이메일 알림을 받습니다.

    caution
    멤버에게 유지 보수자 역할을 부여하고 만료 날짜를 선택한 경우, 해당 멤버는 그 역할을 맡은 동안 모든 권한을 갖습니다. 이에는 자신의 유지 보수자 역할을 연장하는 권한도 포함됩니다.
  7. 초대를 선택합니다. 사용자를 다음과 같이 초대하면:
    • GitLab 사용자 이름을 사용한 경우, 구성원 디렉터리에 추가됩니다.
    • 이메일 주소를 사용한 경우, 해당 이메일 주소로 초대장이 전송되며, 계정을 만들도록 안내됩니다. 초대를 수락하지 않을 경우, GitLab은 2, 5, 10일 후에 알림 이메일을 보냅니다. 초대가 받아들여지지 않으면 90일 후에 자동으로 삭제됩니다.

할당할 수 있는 역할

할당할 수 있는 최대 역할은 그룹의 소유자 또는 유지 보수자 역할에 따라 다릅니다. 예를 들어, 설정할 수 있는 최대 역할은 다음과 같습니다:

  • 프로젝트의 소유자 역할인 경우, Owner(50).
  • 프로젝트의 유지 보수자 역할인 경우, Maintainer(40).

Owner 역할은 그룹에만 추가할 수 있습니다.

상속된 멤버십

당신의 프로젝트가 그룹에 속해있는 경우, 프로젝트 멤버는 그룹으로부터 역할을 상속합니다.

프로젝트 멤버 페이지

이 예에서:

  • 세 명의 구성원이 프로젝트에 액세스 권한을 갖고 있습니다.
  • 사용자 0은 기고자이며, 역할을 프로젝트에서 상속받았으며 이 프로젝트를 포함하는 demo 그룹의 구성원입니다.
  • 사용자 1은 프로젝트에 직접 추가되었습니다. 소스 열에는 직접 구성원으로 나열됩니다.
  • 관리자소유자이며 모든 그룹의 구성원입니다. 그들은 demo 그룹에서 역할을 상속받았습니다.

만약 사용자가:

  • 프로젝트의 직접 구성원이라면, 만료최대 역할 필드는 직접적으로 프로젝트에서 업데이트될 수 있습니다.
  • 상위 그룹에서 상속받은 멤버라면, 만료최대 역할 필드는 해당 멤버가 기원한 상위 그룹에서 업데이트해야 합니다.

간접 멤버십

Self-Managed형 GitLab에서는 기본적으로 이 기능을 사용할 수 있습니다. 사용자별로 이 기능을 숨기려면 관리자가 webui_members_inherited_users라는 feature flag를 비활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.

당신의 프로젝트가 그룹에 속해있는 경우, 사용자들은 상위 그룹에서 상속하거나 프로젝트 또는 프로젝트의 상위 그룹을 다른 그룹으로 공유함으로써 프로젝트에 대한 멤버십을 얻게 됩니다.

프로젝트 멤버 페이지

이 예에서:

  • 세 명의 구성원이 프로젝트에 액세스 권한을 갖고 있습니다.
  • 사용자 0사용자 1은 프로젝트에서 게스트 역할을 갖고 있습니다. 그들은 프로젝트를 포함하는 Twitter 그룹을 통해 간접적으로 멤버가 되었습니다.
  • 관리자는 그룹의 소유자입니다.

만약 사용자가:

  • 프로젝트의 직접 구성원이라면, 만료최대 역할 필드는 프로젝트에서 바로 업데이트될 수 있습니다.
  • 상위 그룹 또는 공유 그룹에서 간접적인 멤버라면, 해당 멤버가 기원한 그룹에서 만료최대 역할 필드를 업데이트해야 합니다.

프로젝트에 그룹 추가

플래그: Self-Managed GitLab에서는 이 기능이 기본적으로 사용 가능합니다. 사용자 단위로 해당 기능을 숨기려면 관리자가 webui_members_inherited_users라는 플래그를 비활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.

프로젝트에 그룹을 추가하면 각 그룹 구원(직접 혹은 상속된)이 프로젝트에 접근할 수 있습니다. 각 구성원의 접근 권한은 다음을 기반으로 합니다:

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

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

필수 조건:

그룹을 프로젝트에 추가하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 그룹 초대를 선택합니다.
  4. 그룹을 선택합니다.
  5. 그룹의 사용자에 대한 최대 역할을 선택합니다.
  6. 선택 사항입니다. 접근 만료일을 선택합니다. 해당 날짜부터 그룹은 더 이상 프로젝트에 접근할 수 없습니다.
  7. 초대를 선택합니다.

초대된 그룹은 그룹 탭에 표시됩니다. 인가되지 않은 사용자에게는 비공개 그룹이 가려집니다. 비공개 그룹은 보호된 브랜치, 보호된 태그 및 보호된 환경에 대한 프로젝트 설정에서 표시됩니다. 초대된 그룹의 구성원은 구성원 탭에는 표시되지 않지만, webui_members_inherited_users 플래그가 활성화되어 있다면 표시됩니다. 구성원 탭에 표시되는 내용:

  • 프로젝트에 직접 추가된 구성원.
  • 프로젝트가 추가된 그룹 네임스페이스의 상속된 구성원.

프로젝트를 그룹과 공유

사용자를 하나하나 추가하는 대신 프로젝트를 전체 그룹과 공유할 수 있습니다.

다른 프로젝트에서 구성원 가져오기

다른 프로젝트의 직접 구성원을 자신의 프로젝트로 가져올 수 있습니다. 가져온 프로젝트 구성원은 가져온 프로젝트의 권한과 동일한 권한을 유지합니다.

note
직접 구성원만 가져옵니다. 상속된 또는 공유된 프로젝트의 구성원은 가져오지 않습니다.

필수 조건:

  • Maintainer 또는 Owner 역할이어야 함.

프로젝트의 구성원을 가져오려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 프로젝트에서 가져오기를 선택합니다.
  4. 프로젝트를 선택합니다. 유지자인 경우에만 프로젝트가 표시됩니다.
  5. 프로젝트 구성원 가져오기를 선택합니다.

가져오기에 성공하면 성공 메시지가 표시됩니다. 구성원 탭에서 가져온 구성원을 보려면 페이지를 새로고침하세요.

프로젝트에서 구성원 삭제

사용자가:

  • 프로젝트의 직접 구성원인 경우, 프로젝트에서 직접 삭제할 수 있습니다.
  • 상위 그룹에서 상속된 구성원인 경우, 상위 그룹 자체에서만 삭제할 수 있습니다.

필수 조건:

  • 다음과 같은 역할을 가진 직접 구성원을 삭제하려면
    • Maintainer, Developer, Reporter 또는 Guest 역할을 가진 경우 Maintainer 역할이어야 함.
    • Owner 역할을 가진 경우 Owner 역할이어야 함.
  • 선택 사항입니다. 해당 사용자가 할당된 모든 이슈 및 Merge Request을 취소하십시오.

프로젝트에서 구성원을 삭제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 삭제할 프로젝트 구성원 옆에 구성원 삭제를 선택합니다.
  4. 선택 사항입니다. 확인 대화 상자에서 이 사용자를 관련 이슈 및 Merge Request에서도 해제 확인란을 선택합니다.
  5. 비공개 리포지터리에서 민감한 정보의 유출을 방지하기 위해 해당 구성원이 해당 리포지터리를 포크했거나 웹훅을 생성하지 않았는지 확인하십시오. 기존 포크는 업스트림 프로젝트에서 계속 변경 사항을 수신하고 웹훅은 계속하여 업데이트를 받습니다. 또한 프로젝트에서 그룹을 사용하여 그룹 외부로 포크하는 것을 방지할 수도 있습니다.
  6. 구성원 삭제를 선택합니다.

삭제된 사용자가 스스로 다시 초대할 수 없도록 보장

Maintainer 또는 Owner 역할을 가진 악의적인 사용자는 GitLab 관리자가 해당 사용자를 제거한 그룹이나 프로젝트에 다시 스스로 초대할 수 있는 레이스 조건을 악용할 수 있습니다.

이 문제를 피하려면 GitLab 관리자는 다음과 같은 작업을 수행할 수 있습니다:

  • 악의적인 사용자 세션을 GitLab Rails 콘솔에서 제거합니다.
  • 악의적인 사용자로 위장하여:
    • 해당 사용자를 프로젝트에서 제거합니다.
    • 사용자를 GitLab에서 로그아웃합니다.
  • 악의적인 사용자 계정을 차단합니다.
  • 악의적인 사용자 계정을 제거합니다.
  • 악의적인 사용자 계정의 암호를 변경합니다.

프로젝트 구성원 필터링 및 정렬

프로젝트의 구성원을 필터링 및 정렬할 수 있습니다.

직접 구성원 표시

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 구성원 필터 상자에서 Membership = Direct를 선택합니다.
  4. Enter를 누릅니다.

상속된 구성원 표시

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 구성원 필터 상자에서 Membership = Inherited를 선택합니다.
  4. Enter를 누릅니다.

프로젝트에서 구성원 검색

프로젝트 구성원을 검색하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 검색 상자에 구성원의 이름, 사용자 이름 또는 이메일을 입력합니다.
  4. Enter를 누릅니다.

프로젝트의 구성원 정렬

다음으로 구성원을 오름차순 또는 내림차순으로 정렬할 수 있습니다:

  • 계정 이름
  • 허용된 액세스 날짜
  • 그룹에서 구성원이 가지는 최고 역할
  • 사용자 생성 날짜
  • 최근 활동 날짜
  • 최근 로그인 날짜

구성원을 정렬하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 관리 > 구성원을 선택합니다.
  3. 구성원 디렉터리 상단에서 드롭다운 디렉터리에서 원하는 항목을 선택합니다.

프로젝트에 액세스 요청

GitLab 사용자는 프로젝트의 구성원이 되기 위해 요청할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 구성원이 되고자 하는 프로젝트를 찾습니다.
  2. 프로젝트 이름 옆에 액세스 요청을 선택합니다.

액세스 요청 버튼

가장 최근 활동한 프로젝트 유지자 또는 소유자에게 이메일이 전송됩니다. 최대 열 명의 프로젝트 유지자나 소유자에게 알림이 전송됩니다. 프로젝트 소유자 또는 유지자는 요청을 승인하거나 거절할 수 있습니다. 프로젝트 유지자는 소유자 역할 액세스 요청을 승인할 수 없습니다.

프로젝트에 직접 소유자나 유지자가 없는 경우, 알림이 프로젝트의 상위 그룹의 최근 활동한 소유자에게 전송됩니다.

프로젝트 액세스 요청 취소

요청이 승인되기 전에 프로젝트의 액세스 요청을 취소할 수 있습니다. 액세스 요청을 취소하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 액세스를 요청한 프로젝트를 찾습니다.
  2. 프로젝트 이름 옆에서 액세스 요청 취소를 선택합니다.

사용자가 프로젝트 액세스 요청을 하지 못하도록 막기

사용자가 프로젝트에 액세스를 요청하는 것을 막을 수 있습니다.

필수 조건:

  • 프로젝트의 소유자 역할이어야 합니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성, 프로젝트 기능, 권한을 확장합니다.
  4. 프로젝트 가시성 아래에서 사용자가 액세스를 요청할 수 있음을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

멤버십 및 가시성 권한

그룹 또는 프로젝트의 멤버십 유형에 따라 가시성 수준 및 권한이 부여됩니다.

다음 표는 프로젝트 멤버의 멤버십 및 가시성 권한을 나열합니다.

동작 직접 프로젝트 멤버 상속된 프로젝트 멤버 직접 공유된 프로젝트 멤버 상속된 공유된 프로젝트 멤버
보드 생성
상위 그룹의 이슈 보기 1
상위 그룹의 라벨 보기
상위 그룹의 마일스톤 보기
다른 그룹에 공유 아니요 아니요 아니요
다른 프로젝트로 가져오기 아니요 아니요 아니요
프로젝트를 다른 멤버와 공유

각주:

  1. 사용자는 액세스 권한이 있는 프로젝트의 이슈만 볼 수 있습니다.

다음 표는 그룹 멤버의 멤버십 및 가시성 권한을 나열합니다.

동작 직접 그룹 멤버 상속된 그룹 멤버 직접 공유된 그룹 멤버 상속된 공유된 그룹 멤버
보드 생성
상위 그룹의 이슈 보기
상위 그룹의 라벨 보기
상위 그룹의 마일스톤 보기

다음 예에서 사용자는:

  • 하위그룹의 직접 멤버입니다.
  • 하위하위그룹의 상속된 멤버입니다.
  • 하위그룹-2하위그룹-3의 간접 멤버입니다.
  • 하위하위그룹-2하위하위그룹-3의 간접 상속된 멤버입니다.
graph TD classDef user stroke:green,color:green; root --> subgroup --> subsubgroup root-2 --> subgroup-2 --> subsubgroup-2 root-3 --> subgroup-3 --> subsubgroup-3 subgroup -. 공유 .-> subgroup-2 -. 공유 .-> subgroup-3 사용자-. 멤버 .- subgroup class 사용자 user