그룹 접근 및 권한

그룹을 구성하여 그룹 권한과 접근을 제어합니다.

그룹 푸시 규칙

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

그룹 푸시 규칙을 사용하면 그룹 관리자는 해당 그룹에서 새로 생성된 프로젝트에 대한 푸시 규칙을 설정할 수 있습니다.

GitLab 15.4 이후 버전에서 그룹의 푸시 규칙을 구성하려면:

  1. 왼쪽 사이드바에서 설정 > 저장소를 선택합니다.
  2. 미리 정의된 푸시 규칙 섹션을 확장합니다.
  3. 원하는 설정을 선택합니다.
  4. 푸시 규칙 저장을 선택합니다.

GitLab 15.3 이전 버전에서 그룹의 푸시 규칙을 구성하려면:

  1. 왼쪽 사이드바에서 푸시 규칙을 선택합니다.
  2. 원하는 설정을 선택합니다.
  3. 푸시 규칙 저장을 선택합니다.

그룹의 새로운 하위 그룹은 다음 중 하나에 기반하여 푸시 규칙이 설정됩니다:

  • 푸시 규칙이 정의된 가장 가까운 상위 그룹.
  • 상위 그룹에 푸시 규칙이 정의되지 않은 경우 인스턴스 수준에서 설정된 푸시 규칙.

Git 접근 프로토콜 제한

그룹의 저장소에 액세스하는 데 사용되는 허용된 프로토콜을 SSH, HTTPS 또는 둘 다로 설정할 수 있습니다. 이 설정은 관리자에 의해 구성된 인스턴스 설정일 때 비활성화됩니다.

그룹의 허용된 Git 접속 프로토콜을 변경하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. 활성화된 Git 접속 프로토콜에서 허용된 프로토콜을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

IP 주소로 그룹 액세스 제한

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

조직의 구성원만 특정 리소스에 액세스할 수 있도록 그룹 액세스를 IP 주소로 제한할 수 있습니다. 이 최상위 그룹 설정은 다음에 적용됩니다:

  • GitLab UI(하위 그룹, 프로젝트 및 이슈 포함), GitLab Pages에는 적용되지 않습니다.
  • GitLab 12.3 이상에서 API.
  • GitLab 15.1 이후의 GitLab 셀프매니지드 설치에서는 그룹 수준에서 글로벌로 허용된 IP 주소 범위를 구성할 수도 있습니다.

관리자는 IP 주소로 액세스를 제한할 수 있으며 글로벌로 허용된 IP 주소를 사용할 수 있습니다.

IP 주소로 그룹 액세스를 제한하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. IP 주소로 액세스 제한 텍스트 상자에 CIDR 표기법으로 된 IPv4 또는 IPv6 주소 범위 목록을 입력합니다. 이 목록:
    • IP 주소 범위의 제한은 없습니다.
    • 크기 제한은 1GB입니다.
    • SSH 또는 HTTP 인증 IP 주소 범위에 적용됩니다. 이 목록을 인증 유형별로 나눌 수 없습니다.
  5. 변경 사항 저장을 선택합니다.

보안 영향

그룹 액세스를 IP 주소로 제한하는 것은 다음과 같은 영향을 가지게 됩니다:

  • 관리자 및 그룹 소유자는 IP 제한 여부에 관계없이 어떤 IP 주소에서도 그룹 설정에 액세스할 수 있습니다. 다만:
    • 그룹 소유자는 IP 주소에서 액세스할 수 없는 경우 하위 그룹에 액세스할 수 없으나, 게시된 프로젝트에 액세스할 수 있습니다.
    • 관리자는 IP 주소에서 액세스할 수 없는 경우 해당 그룹에 속한 프로젝트에 액세스할 수 있습니다. 프로젝트 액세스에는 그 코드를 복제하는 것도 포함됩니다.
    • 사용자는 그룹 및 프로젝트 이름 및 계층 구조를 볼 수 있습니다. 다만 제한되는 부분은 다음과 같습니다:
  • Runner를 등록할 때는 IP 제한이 적용되지 않습니다. Runner가 새 작업을 요청하거나 작업 상태를 업데이트할 때도 IP 제한이 적용되지 않습니다. 그러나 실행 중인 CI/CD 작업이 제한된 IP 주소에서 Git 요청을 보내는 경우 IP 제한으로 인해 코드를 복제할 수 없습니다.
  • 사용자는 대시보드에서 IP로 제한된 그룹 및 프로젝트에 대한 일부 이벤트를 아직 볼 수 있습니다. 활동은 푸시, 병합, 이슈 또는 코멘트 이벤트를 포함할 수 있습니다.
  • SSH를 통한 Git 작업에 대한 IP 액세스 제한은 GitLab SaaS에서 지원됩니다. 자체 관리 인스턴스에 적용된 IP 액세스 제한은 gitlab-sshd와 함께 PROXY 프로토콜을 활성화해야 가능합니다.
  • IP 제한은 그룹에 속한 공용 프로젝트에는 적용되지 않으며 해당 사용자가 IP 차단 목록에 없더라도 프로젝트의 캐시 파일에는 여전히 액세스할 수 있습니다.

GitLab.com 액세스 제한

GitLab.com 인스턴스 러너는 전역 허용 목록에 추가되어 IP 제한 여부에 관계없이 사용할 수 있습니다.

러너에서 아티팩트 및 레지스트리 다운로드는 해당 지역의 Google 또는 MacOS 러너의 경우 Amazon IP 주소에서 소스로부터 이루어집니다. 따라서 다운로드는 전역 허용 목록에 추가되지 않습니다. 러너 다운로드를 허용하려면 아웃바운드 러너 CIDR 범위를 그룹 허용 목록에 추가하세요.

도메인별 그룹 액세스 제한

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 여러 이메일 도메인을 지정하는 지원은 GitLab 13.1에 추가되었습니다.
  • 그룹 내 프로젝트 액세스 제한 지원이 GitLab 14.1.2에 추가되었습니다.
  • 허용된 이메일 도메인의 일부를 가진 그룹에 대한 그룹 멤버십 제한 지원이 GitLab 15.1.1에 추가되었습니다.

특정 도메인의 이메일 주소를 가진 사용자만 그룹과 해당 프로젝트에 추가되도록 보장하려면 최상위 네임스페이스에서 이메일 도메인 허용 목록을 정의하세요. 하위 그룹은 대체 허용 목록을 정의하는 기능을 제공하지 않습니다.

도메인별 그룹 액세스 제한을 위해 다음을 수행하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. 이메일에 의한 멤버십 제한 필드에 도메인 이름을 입력합니다.
  5. 변경 사항 저장을 선택합니다.

새 사용자를 추가하려고 하는 경우 사용자의 기본 이메일이 이 목록과 비교됩니다. 구성된 이메일 도메인 제한 중 어느 하나와 일치하는 기본 이메일을 가진 사용자만 그룹에 추가될 수 있습니다.

가장 인기 있는 공공 이메일 도메인은 다음과 같이 제한할 수 없습니다.

  • aol.com, gmail.com, hotmail.co.uk, hotmail.com,
  • hotmail.fr, icloud.com, live.com, mail.com,
  • me.com, msn.com, outlook.com,
  • proton.me, protonmail.com, tutanota.com,
  • yahoo.com, yandex.com, zohomail.com

그룹을 공유하는 경우 소스 및 대상 네임스페이스는 멤버의 이메일 주소 도메인을 허용해야 합니다.

참고: 이메일에 의한 멤버십 제한 목록에서 도메인을 제거하더라도 해당 이메일 도메인을 가진 사용자가 해당 그룹 및 프로젝트에서 제거되지는 않습니다. 또한, 그룹 또는 프로젝트를 다른 그룹과 공유하는 경우 대상 그룹은 소스 그룹 목록에 없는 추가 이메일 도메인을 추가할 수 있습니다. 따라서 이 기능은 현재 멤버가 항상 이메일에 의한 멤버십 제한 목록을 준수하는 것을 보장하지는 않습니다.

그룹 계층 외부의 그룹 공유 방지

최상위 그룹을 구성하여 해당 하위 그룹 및 프로젝트가 최상위 그룹의 계층 외부의 다른 그룹을 초대할 수 없도록 설정할 수 있습니다. 이 옵션은 최상위 그룹에만 해당됩니다.

예를 들어 다음과 같은 그룹 및 프로젝트 계층 구조에서:

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

Animals 그룹에서 그룹 계층 외부의 공유를 방지하도록 설정한 경우:

  • DogsCats 그룹을 초대할 수 있습니다.
  • DogsTrees 그룹을 초대할 수 없습니다.
  • Dog ProjectCats 그룹을 초대할 수 있습니다.
  • Dog ProjectTrees 그룹을 초대할 수 없습니다.

그룹의 계층 외부 공유를 방지하려면 다음을 수행하세요:

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

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

다른 그룹과 프로젝트 공유를 통해 프로젝트 멤버를 추가할 수 있는 사용자 수가 증가합니다. 각 (하위)그룹은 액세스 권한의 추가 소스가 될 수 있기 때문에 혼란스럽고 제어하기 어려울 수 있습니다.

프로젝트 멤버 초대 권한을 단일 소스로 제한하여 프로젝트가 다른 그룹과 공유되는 것을 방지하려면 다음을 수행하세요:

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

이 설정이 활성화된 경우 모든 하위 그룹에 적용되며, 그룹 소유자가 개별적으로 재정의하지 않는 한 모든 권한이 제한됩니다. 프로젝트에 이미 추가된 그룹은 설정이 활성화되면 액세스 권한이 없어집니다.

그룹 액세스 요청 방지

그룹 소유자로서 비멤버들이 귀하의 그룹에 액세스를 요청하는 것을 방지할 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. 사용자가 액세스를 요청하는 것을 허용 확인란을 해제합니다.
  5. 변경 사항 저장을 선택합니다.

그룹 외에서 프로젝트 복제 방지

상세 정보: Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

기본적으로 그룹 내의 프로젝트는 복제될 수 있습니다. GitLab Premium 및 Ultimate 티어에서는 현재 최상위 그룹 외부에서 그룹의 프로젝트가 복제되는 것을 방지할 수 있습니다.

전제 조건:

  • 이 설정은 최상위 그룹에만 적용됩니다.
  • 모든 하위 그룹은 최상위 그룹에서 이 설정을 상속받으며, 하위 그룹에서는 이 설정을 변경할 수 없습니다.

그룹 외에서 프로젝트가 복제되는 것을 방지하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. 현재 그룹 외부에서 프로젝트 복제 방지를 선택합니다.
  5. 변경 사항 저장을 선택합니다.

기존의 복제본은 제거되지 않습니다.

그룹 내 프로젝트 멤버 추가 방지

상세 정보: Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

그룹 소유자로서 그룹 내 모든 프로젝트에 대한 새로운 프로젝트 멤버십을 방지하여 프로젝트 멤버십을 더 엄격하게 제어할 수 있습니다.

예를 들어, Audit Event를 위해 그룹을 잠그고 싶다면, 감사 중에 프로젝트 멤버십을 수정할 수 없도록 보장할 수 있습니다.

그룹 멤버십 잠금이 활성화된 경우, 그룹 소유자는 여전히:

  • 그룹에 사용자를 초대하거나 그룹 멤버를 추가하여 그들에게 잠긴 그룹의 프로젝트에 액세스할 수 있습니다.
  • 그룹 멤버의 역할을 변경할 수 있습니다.

이 설정은 계층화되지 않습니다. 하위 그룹의 프로젝트는 부모 그룹을 무시하고 하위 그룹 구성을 준수합니다.

그룹 내 프로젝트에 멤버가 추가되는 것을 방지하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 권한 및 그룹 기능 섹션을 확장합니다.
  4. 멤버십 아래에서 사용자는 이 그룹의 프로젝트에 추가될 수 없음을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

그룹 멤버십을 잠근 후:

  • 모든 이전에 권한이 있던 사용자는 더 이상 그룹에 멤버를 추가할 수 없습니다.
  • 프로젝트에 새 사용자를 추가하는 API 요청은 불가능합니다.

LDAP를 통한 그룹 멤버십 관리

상세 정보: Tier: Premium, Ultimate Offering: Self-managed

그룹 동기화를 통해 LDAP 그룹을 GitLab 그룹에 매핑할 수 있습니다. 이를 통해 그룹별 사용자 관리를 더욱 효과적으로 할 수 있습니다. 그룹 동기화를 구성하려면 group_base DN('OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org')을 편집합니다. 이 OU에는 GitLab 그룹과 관련된 모든 그룹이 포함되어 있습니다.

그룹 링크는 CN 또는 필터를 사용하여 만들 수 있습니다. 이러한 그룹 링크를 만들려면 그룹의 설정 > LDAP 동기화 페이지로 이동합니다. 링크를 구성한 후에는 사용자가 GitLab 그룹과 동기화되기까지 1시간 이상이 소요될 수 있습니다.

  • GitLab 16.7 이전의 경우, 그룹 소유자는 그룹에 멤버를 추가하거나 그룹에서 멤버를 제거할 수 없습니다. LDAP 서버는 LDAP 자격 증명으로 로그인한 모든 사용자의 그룹 멤버십의 진리의 단일 출처로 간주됩니다.
  • GitLab 16.8 이후의 경우, 그룹 소유자는 LDAP 동기화가 그룹에 대해 활성화되어 있을 때에도 멤버 역할 API를 사용하여 서비스 계정 사용자를 그룹에 추가하거나 제거할 수 있습니다. 그룹 소유자는 비서비스 계정 사용자를 추가하거나 제거할 수 없습니다.

하나의 사용자가 동일한 GitLab 그룹의 두 구성된 LDAP 그룹의 구성원인 경우, 그들은 두 LDAP 그룹 역할 중 더 높은 역할을 부여받습니다. 예를 들어:

  • 사용자가 OwnerDev LDAP 그룹의 구성원이라면.
  • GitLab 그룹은 이 두 LDAP 그룹과 구성되어 있음.
  • 그룹 동기화가 완료되면, 사용자는 두 LDAP 그룹 역할 중에 더 높은 Owner 역할을 부여받습니다.

LDAP 및 그룹 동기화의 관리에 대한 자세한 정보는 LDAP 문서를 참조하십시오.

참고: LDAP 동기화를 추가할 때, LDAP 사용자가 그룹 구성원이지만 LDAP 그룹의 일부가 아닌 경우, 그들은 그룹에서 제거됩니다.

LDAP 그룹을 통한 프로젝트 접근 권한 관리를 위한 해결책을 사용할 수 있습니다.

CN을 통해 그룹 링크 생성

Tier: 프리미엄, 얼티메이트 Offering: Self-managed, GitLab Dedicated

CN을 통해 그룹 링크를 생성하려면:

  1. 링크할 LDAP 서버를 선택합니다.
  2. 동기화 방법으로 LDAP 그룹 CN을 선택합니다.
  3. LDAP 그룹 CN 필드에 그룹의 CN을 입력하기 시작합니다. 구성된 group_base에서 일치하는 CN이 포함된 드롭다운 목록이 있습니다. 이 목록에서 CN을 선택합니다.
  4. LDAP 액세스 섹션에서 이 그룹에 동기화된 사용자의 권한 수준을 선택합니다.
  5. 동기화 추가를 선택합니다.

필터를 통해 그룹 링크 생성

Tier: 프리미엄, 얼티메이트 Offering: Self-managed, GitLab Dedicated

필터를 통해 그룹 링크를 생성하려면:

  1. 링크할 LDAP 서버를 선택합니다.
  2. 동기화 방법으로 LDAP 사용자 필터를 선택합니다.
  3. LDAP 사용자 필터 상자에 필터를 입력합니다. 사용자 필터에 대한 설명서를 참고하세요.
  4. LDAP 액세스 섹션에서 이 그룹에 동기화된 사용자의 권한 수준을 선택합니다.
  5. 동기화 추가를 선택합니다.

사용자 권한 재정의

Tier: 프리미엄, 얼티메이트 Offering: Self-managed, GitLab Dedicated

관리자는 LDAP 사용자 권한을 수동으로 재정의할 수 있습니다. 사용자 권한을 재정의하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 관리 > 구성원을 선택합니다. 만약 LDAP 동기화 덕분에 사용자에게 부모 그룹 멤버십보다 더 많은 권한이 부여되었다면,
  3. 선택 사항. 편집하려는 사용자가 상속 멤버십으로 표시된 경우, LDAP 사용자 권한을 재정의하기 전에 하위 그룹을 필터링하여 직접 멤버를 표시합니다.
  4. 편집 중인 사용자가 있는 행에서 연필() 아이콘을 선택합니다.
  5. 모달에서 권한 편집을 선택합니다.

이제 구성원 페이지에서 사용자의 권한을 편집할 수 있습니다.

문제 해결

IP 제한으로 인한 액세스 차단 확인

사용자가 일반적으로 액세스를 기대하는 경우 404 오류가 발생하고 특정 그룹에 문제가 제한된 경우, auth.log 레일 로그에서 다음 중 하나 이상을 찾습니다.

  • json.message: 'Attempting to access IP restricted group'
  • json.allowed: false

로그 항목을 확인하여 remote.ip가 그룹의 허용된 IP 주소 목록과 일치하는지 확인합니다.

그룹 구성원의 권한 업데이트 불가

그룹 소유자가 그룹 구성원의 권한을 업데이트할 수 없는 경우, 나열된 멤버십을 확인합니다. 그룹 소유자는 직접 멤버십만 업데이트할 수 있습니다.

부모 그룹 멤버십이 하위 그룹보다 동일하거나 더 높은 역할을 가지는 경우, 그룹 멤버 페이지에서 본인 멤버십이 나열됩니다. 심지어 그룹에 직접 멤버십이 존재한다 하더라도, 이 상속 멤버십은 하부 그룹 멤버 페이지에 표시됩니다.

직접 멤버를 보고 업데이트하려면 그룹을 필터링하여 직접 멤버를 표시하세요.

다시 설계된 멤버 페이지를 통해 유형별로 구성원을 필터링하고 직접 및 상속 멤버십을 모두 나열하는 것이 이슈 337539에서 제안되었습니다.