- 그룹 푸시 규칙
- Git 액세스 프로토콜 제한
- IP 주소에 의한 그룹 액세스 제한
- 도메인에 의한 그룹 액세스 제한
- 그룹 액세스 요청 방지
- 그룹 외부에서 프로젝트 분기 방지
- 그룹 내 프로젝트에 멤버 추가 방지
- LDAP를 사용하여 그룹 멤버십 관리
- 문제 해결
그룹 액세스 및 권한
그룹을 구성하여 그룹 권한 및 액세스를 제어합니다. 더 많은 정보는 프로젝트 및 그룹 공유도 참조하세요.
그룹 푸시 규칙
- GitLab 15.4에서 Settings/Repository로 이동됨.
그룹 푸시 규칙을 사용하여 특정 그룹 내의 새로 생성된 프로젝트에 대한 푸시 규칙을 설정할 수 있습니다.
GitLab 15.4 이상에서 그룹의 푸시 규칙을 구성하려면:
- 왼쪽 사이드바에서 Settings > Repository를 선택합니다.
- Pre-defined push rules 섹션을 확장합니다.
- 원하는 설정을 선택합니다.
- Save push rules를 선택합니다.
GitLab 15.3 이하에서 그룹의 푸시 규칙을 구성하려면:
- 왼쪽 사이드바에서 Push rules를 선택합니다.
- 원하는 설정을 선택합니다.
- Save push rules를 선택합니다.
그룹의 새로운 하위 그룹에는 다음 중 하나에 기반한 푸시 규칙이 설정됩니다:
- 푸시 규칙이 정의된 가장 가까운 상위 그룹.
- 상위 그룹에 푸시 규칙이 정의되어 있지 않은 경우 인스턴스 전체에 대해 설정된 푸시 규칙.
Git 액세스 프로토콜 제한
- GitLab 15.1에서 도입됨.
- GitLab 16.0에서 기능 플래그 삭제됨.
그룹의 리포지토리에 액세스하는 데 사용되는 허용된 프로토콜을 SSH, HTTPS 또는 둘 다로 설정할 수 있습니다. 이 설정은 관리자에 의해 인스턴스 설정이 구성된 경우 비활성화됩니다.
그룹의 허용된 Git 액세스 프로토콜을 변경하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
- Enabled Git access protocols에서 허용된 프로토콜을 선택합니다.
- Save changes를 선택합니다.
IP 주소에 의한 그룹 액세스 제한
특정 자원에 대한 액세스를 조직 내부 직원만 가능하게 하려면 IP 주소에 의해 그룹 액세스를 제한할 수 있습니다. 이 최상위 그룹 설정은 다음에 적용됩니다:
- GitLab UI(하위 그룹, 프로젝트, 이슈 포함. GitLab Pages의 경우 적용되지 않음).
- API.
- GitLab 15.1 이상의 self-managed 설치의 경우 해당 그룹의 글로벌로 허용된 IP 주소 범위를 구성할 수도 있습니다.
관리자는 IP 주소별 제한된 액세스를 글로벌로 허용된 IP 주소와 결합할 수 있습니다.
IP 주소에 의해 그룹 액세스를 제한하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
-
Restrict access by IP address 텍스트 상자에 CIDR 표기법으로 된 IPv4 또는 IPv6 주소 범위 목록을 입력합니다. 이 목록:
- IP 주소 범위의 수에는 제한이 없습니다.
- SSH 또는 HTTP로 인증된 IP 주소 범위에 적용됩니다. 이 목록을 인증 유형에 따라 분할할 수는 없습니다.
- Save changes를 선택합니다.
보안 영향
IP 주소에 의한 그룹 액세스 제한은 다음과 같은 영향이 있습니다:
- 관리자 및 그룹 소유자는 IP 제한과 관계없이 모든 IP 주소에서 그룹 설정에 액세스할 수 있습니다. 그러나 다음과 같은 제한이 있습니다:
- 그룹 소유자는 허용되지 않은 IP 주소에서 액세스할 때 하위 그룹에 대한 액세스는 가능하지만, 해당 그룹 또는 하위 그룹에 속한 프로젝트에 대한 액세스는 불가능합니다.
- 관리자는 허용되지 않은 IP 주소에서 액세스할 때 해당 그룹에 속한 프로젝트에 대한 액세스가 가능합니다. 프로젝트에 대한 액세스에는 코드 복제가 포함됩니다.
- 사용자는 그룹 및 프로젝트 이름 및 계층 구조를 볼 수 있습니다. 다음만 제한됩니다:
- Groups 및 group resources를 포함한 그룹.
- Project 및 project resources를 포함한 프로젝트.
- 러너를 등록할 때 IP 제한에 의해 제한되지 않습니다. 러너가 새 작업을 요청하거나 작업의 상태를 업데이트할 때도 IP 제한에 의해 제한되지 않습니다. 그러나 실행 중인 CI/CD 작업이 제한된 IP 주소에서 Git 요청을 보내는 경우 IP 제한으로 인해 코드가 복제되지 않습니다.
- 사용자는 대시보드에서 IP로 제한된 그룹 및 프로젝트에 대한 일부 이벤트를 볼 수 있습니다. 활동에는 푸시, 머지, 이슈 또는 코멘트 이벤트가 포함될 수 있습니다.
- IP 액세스 제한은 이메일로 회신하는 기능을 사용하여 이슈 또는 머지 요청에 코멘트를 생성하거나 편집하는 것을 막지 않습니다.
- SSH를 통한 Git 작업에 대한 IP 액세스 제한은 GitLab SaaS에서 지원됩니다. self-managed 인스턴스에 적용되는 IP 액세스 제한은
gitlab-sshd
에서 PROXY 프로토콜을 활성화한 경우 가능합니다. - IP 제한은 그룹에 속하는 공유 자원에는 적용되지 않습니다. 공유 자원은 해당 그룹에 액세스할 수 없는 사용자에게도 사용할 수 있습니다.
- IP 제한은 공개 프로젝트에 적용되지만 완전한 방화벽 역할을 하지는 않으며 프로젝트의 캐시 파일은 IP 차단 내에 없는 사용자도 여전히 액세스할 수 있습니다.
GitLab.com 액세스 제한
GitLab.com 인스턴스에서 러너가 글로벌 화이트리스트에 추가되어 IP 제한과 관계없이 사용할 수 있습니다.
러너에서 아티팩트 및 레지스트리 다운로드는 해당 지역의 Google 또는 MacOS 러너의 경우 Amazon IP 주소에서 소스입니다. 다운로드는 따라서 글로벌 화이트리스트에 추가되지 않습니다. 러너 다운로드를 허용하려면 그룹 화이트리스트에 아웃바운드 러너 CIDR 범위를 추가하세요.
도메인에 의한 그룹 액세스 제한
- 허용된 전자 메일 도메인의 하위 집합을 사용하여 그룹 멤버십을 제한하는 지원은 GitLab 15.1.1에 추가되었습니다.
그룹 및 해당 프로젝트에 액세스할 수 있는 사용자를 제한하기 위해 최상위 네임스페이스에서 전자 메일 도메인 허용 목록을 정의할 수 있습니다. 사용자의 기본 전자 메일 도메인은 해당 그룹에 액세스하려면 허용 목록의 항목과 일치해야 합니다. 하위 그룹은 동일한 허용 목록을 상속받습니다.
도메인에 의한 그룹 액세스를 제한하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 이메일에 의한 멤버십 제한 필드에 허용할 도메인 이름을 입력합니다.
- 변경 사항 저장을 선택합니다.
다음에 사용자를 그룹에 추가하려고 하면, 해당 사용자의 기본 이메일은 허용된 도메인 중 하나와 일치해야 합니다.
가장 인기있는 공개 이메일 도메인, 예를 들어 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
과 같은 도메인은 제한할 수 없습니다.
그룹을 공유할 때, 소스 및 대상 네임스페이스는 구성원의 이메일 주소 도메인을 허용해야 합니다.
참고: 이메일에 의한 멤버십 제한 목록에서 도메인을 제거해도 해당 도메인을 가진 기존 사용자를 그룹이나 해당 프로젝트에서 제거하지 않습니다. 또한, 다른 그룹과 그룹 또는 프로젝트를 공유하는 경우, 대상 그룹은 소스 그룹의 목록에 없는 추가 이메일 도메인을 목록에 추가할 수 있습니다. 따라서 이 기능은 현재 구성원이 항상 이메일에 의한 멤버십 제한 목록을 준수하도록 보장하지 않습니다.
그룹 액세스 요청 방지
그룹 소유자로서 비회원이 그룹에 액세스를 요청하는 것을 방지할 수 있습니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 사용자가 액세스를 요청하도록 허용 확인란을 선택 해제합니다.
- 변경 사항 저장을 선택합니다.
그룹 외부에서 프로젝트 분기 방지
기본적으로 그룹의 프로젝트는 분기될 수 있습니다. 그러나 현재 최상위 그룹 외부에서 프로젝트를 분기하지 못하도록 설정할 수 있습니다.
참고: 나쁜 사용자의 잠재적인 경로를 줄이기 위해 최상위 그룹 외부에서 프로젝트를 분기하는 것을 가능한한 피하십시오. 그러나 많은 외부 협업이 예상된다면 최상위 그룹 외부에서의 분기를 허용하는 것이 불가피할 수 있습니다.
전제 조건:
- 이 설정은 최상위 그룹에서만 활성화됩니다.
- 모든 하위 그룹은 최상위 그룹에서이 설정을 상속받으며, 하위 그룹에서는 변경할 수 없습니다.
그룹 외부에서 프로젝트가 분기되는 것을 방지하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 현재 그룹 외부에서 프로젝트 분기 방지를 확인합니다.
- 변경 사항 저장을 선택합니다.
기존의 분기는 삭제되지 않습니다.
그룹 내 프로젝트에 멤버 추가 방지
그룹 소유자로서 그룹 내 모든 프로젝트에 대한 새로운 프로젝트 멤버십을 방지하여 프로젝트 멤버십을 더 엄격하게 제어할 수 있습니다.
예를 들어, 감사 이벤트를 위해 그룹을 잠그고 싶다면 감사 중에 프로젝트 멤버십을 수정할 수 없도록 보장할 수 있습니다.
그룹 멤버십 잠금이 활성화된 경우, 그룹 소유자는 여전히:
- 그룹에 그룹을 초대하거나 멤버를 추가하여 그룹의 프로젝트에 액세스하도록 할 수 있습니다.
- 그룹 멤버의 역할을 변경할 수 있습니다.
이 설정은 계층적으로 적용되지 않습니다. 하위 그룹의 프로젝트는 상위 그룹을 무시하고 하위 그룹의 구성을 준수합니다.
그룹 내 프로젝트에 멤버를 추가하지 못하도록 하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 멤버십 아래에서 사용자는 이 그룹 내 프로젝트에 추가할 수 없습니다를 선택합니다.
- 변경 사항 저장을 선택합니다.
그룹 멤버십을 잠근 후:
- 이전에 권한이 있는 모든 사용자는 더 이상 그룹에 멤버를 추가할 수 없습니다.
- 새로운 사용자를 프로젝트에 추가하는 API 요청이 불가능합니다.
LDAP를 사용하여 그룹 멤버십 관리
- 그룹에서 동기화된 사용자에 대한 사용자 정의 역할 지원은 GitLab 17.2에 도입되었습니다.
그룹 동기화를 통해 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 그룹에 속한 경우, GitLab은 두 그룹 중 더 높은 역할을 사용자에게 할당합니다. 예를 들어:
- 사용자가 LDAP 그룹
Owner
및Dev
의 멤버입니다. - GitLab 그룹이 이 두 LDAP 그룹으로 구성되어 있습니다.
- 그룹 동기화가 완료되면, 사용자는 두 LDAP 그룹 역할 중 더 높은 Owner 역할을 부여받습니다.
LDAP 및 그룹 동기화의 관리에 대한 자세한 내용은 주 LDAP 문서를 참조하십시오.
참고: LDAP 그룹 동기화를 추가할 때, LDAP 사용자가 그룹 멤버이고 LDAP 그룹의 일부가 아닌 경우, 해당 사용자는 그룹에서 제거됩니다.
LDAP 그룹을 통한 프로젝트 접근 권한 관리를 위한 해결책을 사용할 수 있습니다.
CN을 사용하여 그룹 링크 생성
LDAP 그룹 CN을 사용하여 그룹 링크를 만들려면 다음을 수행합니다:
- 링크할 LDAP 서버를 선택합니다.
-
Sync method로
LDAP 그룹 cn
을 선택합니다. -
LDAP 그룹 cn 필드에 그룹의 CN을 입력하기 시작합니다. 구성된
group_base
에서 일치하는 CN이 있는 드롭다운 목록이 있습니다. 이 목록에서 CN을 선택합니다. - LDAP Access 섹션에서이 그룹에 동기화된 사용자에게 기본 역할 또는 사용자 정의 역할을 선택합니다.
- 동기화 추가를 선택합니다.
필터를 사용하여 그룹 링크 생성
LDAP 사용자 필터로 그룹 링크를 만들려면 다음을 수행합니다:
- 링크할 LDAP 서버를 선택합니다.
-
Sync method로
LDAP 사용자 필터
를 선택합니다. - LDAP 사용자 필터 상자에 필터를 입력합니다. 사용자 필터에 대한 문서를 참조하세요.
- LDAP Access 섹션에서이 그룹에 동기화된 사용자에게 기본 역할 또는 사용자 정의 역할을 선택합니다.
- 동기화 추가를 선택합니다.
사용자 권한 재지정
관리자는 LDAP 사용자 권한을 수동으로 재지정할 수 있습니다. 사용자의 권한을 재지정하려면 다음을 수행합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하여 그룹을 찾습니다.
- 관리 > 멤버를 선택합니다. LDAP 동기화 에 의해 사용자에게 역할이 부여된 경우:
- 선택 사항. 편집하려는 사용자가 상속 멤버십으로 표시되면 LDAP 사용자 권한을 재지정하기 전에 하위 그룹을 필터링하여 직접 멤버를 표시합니다.
- 편집중인 사용자가 표시된 행에서 연필() 아이콘을 선택합니다.
- 대화 상자에서 권한 편집을 선택합니다.
이제 멤버 페이지에서 사용자의 권한을 편집할 수 있습니다.
문제 해결
액세스가 IP 제한으로 차단되었는지 확인
특정 그룹에 액세스하려고 할 때 사용자가 404 오류를 보는 경우, 그들의 액세스는 IP 제한으로 차단될 수 있습니다.
auth.log
레일 로그에서 다음 항목 중 하나 이상을 검색합니다:
-
json.message
:'Attempting to access IP restricted group'
-
json.allowed
:false
로그 항목을 보고 remote.ip
를 그룹의 허용된 IP 주소 목록과 비교합니다.
그룹 멤버의 권한을 업데이트할 수 없음
그룹 소유자가 그룹 멤버의 권한을 업데이트할 수 없는 경우, 나열된 멤버십을 확인합니다. 그룹 소유자는 직접 멤버십만 업데이트할 수 있습니다.
하위 그룹에 직접 추가된 멤버는 여전히 상속 멤버 로 간주됩니다. 단, 부모 그룹에서 동일한 또는 더 높은 역할을 가진 경우에만 해당합니다.
직접 멤버십을 보고 업데이트하려면 그룹을 필터링하여 직접 멤버 표시합니다.
이슈 337539는 직접 및간접 멤버십을 모두 나열하고 유형에 따라 필터링할 수 있는 디자인된 멤버 페이지를 제안합니다.