그룹 액세스 및 권한
그룹 권한 및 액세스를 제어하기 위해 그룹을 구성하세요.
자세한 내용은 프로젝트 및 그룹 공유를 참조하세요.
그룹 푸시 규칙
Offering: GitLab.com, Self-managed, GitLab Dedicated
- GitLab 15.4에서 설정/리포지토리로 이동했습니다.
그룹 푸시 규칙은 그룹 유지 관리자가 특정 그룹 내에서 새로 생성된 프로젝트에 대한
푸시 규칙을 설정할 수 있도록 합니다.
GitLab 15.4 및 이후 버전에서 그룹에 대한 푸시 규칙을 구성하려면:
- 왼쪽 사이드바에서 설정 > 리포지토리를 선택합니다.
- 미리 정의된 푸시 규칙 섹션을 확장합니다.
- 원하는 설정을 선택합니다.
- 푸시 규칙 저장을 선택합니다.
GitLab 15.3 및 이전 버전에서 그룹에 대한 푸시 규칙을 구성하려면:
- 왼쪽 사이드바에서 푸시 규칙을 선택합니다.
- 원하는 설정을 선택합니다.
- 푸시 규칙 저장을 선택합니다.
그룹의 새 하위 그룹은 다음을 기반으로 푸시 규칙이 설정됩니다:
- 푸시 규칙이 정의된 가장 가까운 상위 그룹.
- 부모 그룹에 푸시 규칙이 정의되어 있지 않은 경우 전체 인스턴스에 대해 설정된 푸시 규칙.
Git 액세스 프로토콜 제한
- GitLab 15.1에서 도입됨.
- GitLab 16.0에서 기능 플래그 제거됨.
그룹의 리포지토리에 액세스하는 데 사용되는 허용된 프로토콜을 SSH, HTTPS 또는 두 가지 모두로 설정할 수 있습니다. 이 설정은
인스턴스 설정이
관리자에 의해 구성되면 비활성화됩니다.
그룹에 대한 허용된 Git 액세스 프로토콜을 변경하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
- 활성화된 Git 액세스 프로토콜에서 허용된 프로토콜을 선택합니다.
- 변경 사항 저장을 선택합니다.
IP 주소로 그룹 액세스 제한
Offering: GitLab.com, Self-managed, GitLab Dedicated
조직의 사람들만 특정 리소스에 액세스할 수 있도록 하려면 IP 주소별로 그룹 액세스를 제한할 수 있습니다. 이 최상위 그룹 설정은 다음에 적용됩니다:
- GitLab UI, 하위 그룹, 프로젝트 및 문제를 포함합니다. GitLab Pages에는 적용되지 않습니다.
- API.
- GitLab 15.1 및 이후 버전의 자가 관리 설치에서 그룹에 대해 전역적으로 허용된 IP 주소 범위도 구성할 수 있습니다.
관리자는 IP 주소별로 제한된 액세스를
전역적으로 허용된 IP 주소와 결합할 수 있습니다.
IP 주소별로 그룹 액세스를 제한하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 설정 > 일반을 선택합니다.
- 권한 및 그룹 기능 섹션을 확장합니다.
-
IP 주소로 액세스 제한 텍스트 상자에 CIDR 표기법으로 IPv4 또는 IPv6 주소 범위 목록을 입력합니다. 이 목록은:
- IP 주소 범위 수에 제한이 없습니다.
- SSH 또는 HTTP 인증된 IP 주소 범위 모두에 적용됩니다. 이 목록은 인증 유형으로 나눌 수 없습니다.
- 변경 사항 저장을 선택합니다.
보안 영향
IP 주소로 그룹 액세스를 제한하는 것은 다음과 같은 영향을 미친다는 점을 염두에 두세요:
- 관리자와 그룹 소유자는 IP 제한과 상관없이 모든 IP 주소에서 그룹 설정에 접근할 수 있습니다. 그러나:
- 그룹 소유자는 허용되지 않는 IP 주소에서 접근할 때 하위 그룹에는 접근할 수 있지만, 그룹 또는 하위 그룹에 속하는 프로젝트에는 접근할 수 없습니다.
- 관리자는 허용되지 않는 IP 주소에서 접근할 때 그룹에 속하는 프로젝트에 접근할 수 있습니다.
프로젝트에 대한 접근에는 코드 복사가 포함됩니다. - 사용자는 여전히 그룹 및 프로젝트 이름과 계층 구조를 볼 수 있습니다. 다음 항목만 제한됩니다:
- Groups, 모든 group resources 포함.
- Project, 모든 project resources 포함.
- 러너를 등록할 때 IP 제한의 적용을 받지 않습니다. 러너가 새로운 작업을 요청하거나 작업 상태를 업데이트할 때도 IP 제한을 받지 않습니다. 그러나 실행 중인 CI/CD 작업이 제한된 IP 주소에서 Git 요청을 보낼 때, IP 제한은 코드 복사를 방지합니다.
- 사용자는 여전히 대시보드에서 IP 제한 그룹 및 프로젝트의 일부 이벤트를 볼 수 있습니다. 활동에는 push, merge, issue, 또는 comment 이벤트가 포함될 수 있습니다.
- IP 액세스 제한은 사용자가 이메일로 응답하기 기능을 사용하여 문제 또는 병합 요청에 대한 코멘트를 작성하거나 편집하는 것을 중단시키지 않습니다.
- SSH를 통한 Git 작업에 대한 IP 액세스 제한은 GitLab SaaS에서 지원됩니다.
자체 관리 인스턴스에 적용된 IP 액세스 제한은gitlab-sshd
및 PROXY 프로토콜을 활성화하여 가능합니다. - IP 제한은 그룹에 속한 공유 리소스에는 적용되지 않습니다. 사용자가 그룹에 접근할 수 없더라도 모든 공유 리소스에 접근할 수 있습니다.
- IP 제한은 공개 프로젝트에도 적용되지만, 완전한 방화벽은 아니며, 프로젝트에 대한 캐시된 파일이 IP 차단에 없는 사용자에게 여전히 접근 가능할 수 있습니다.
GitLab.com 액세스 제한
GitLab.com 인스턴스에서 러너는 전역 허용 목록에 추가되어 IP 제한과 관계없이 사용할 수 있습니다.
러너로부터 아티팩트 및 레지스트리 다운로드는 해당 지역의 Google 또는 MacOS 러너의 경우 Amazon IP 주소에서 소스됩니다.
따라서 다운로드는 전역 허용 목록에 추가되지 않습니다.
러너 다운로드를 허용하려면 발신 러너 CIDR 범위를 그룹 허용 목록에 추가하세요.
도메인으로 그룹 액세스 제한
Offering: GitLab.com, Self-managed, GitLab Dedicated
- 특정 허용된 이메일 도메인을 가진 그룹으로 그룹 멤버십 제한 지원 추가됨 GitLab 15.1.1에
상위 수준 네임스페이스에서 이메일 도메인 허용 목록을 정의하여 어떤 사용자가 그룹 및 그 프로젝트에 접근할 수 있는지를 제한할 수 있습니다.
사용자의 기본 이메일 도메인은 해당 그룹에 접근하기 위해 허용 목록에 항목이 일치해야 합니다.
하위 그룹은 동일한 허용 목록을 상속받습니다.
도메인으로 그룹 액세스를 제한하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
- Restrict membership by email 필드에 허용할 도메인 이름을 입력합니다.
- Save changes를 선택합니다.
다음 번에 사용자를 그룹에 추가하려고 할 때, 그들의 기본 이메일는 허용된 도메인 중 하나와 일치해야 합니다.
가장 인기 있는 공개 이메일 도메인은 제한할 수 없습니다, 예를 들면:
-
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
그룹을 공유할 때, 소스 및 대상 네임스페이스 모두 회원의 이메일 주소 도메인을 허용해야 합니다.
참고:
Restrict membership by email 목록에서 도메인을 제거해도, 그 도메인을 가진 기존 사용자가 그룹이나 프로젝트에서 제거되지는 않습니다.
또한, 다른 그룹과 그룹이나 프로젝트를 공유하는 경우, 대상 그룹은 소스 그룹 목록에 없는 다른 이메일 도메인을 목록에 추가할 수 있습니다.
따라서 이 기능은 현재 구성원이 항상 Restrict membership by email 목록을 준수하도록 보장하지 않습니다.
그룹에 대한 액세스 요청 방지
그룹 소유자로서 비회원이 귀하의 그룹에 대한 액세스를 요청하는 것을 방지할 수 있습니다.
- 왼쪽 사이드바에서 Search or go to를 선택하고 귀하의 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
- Allow users to request access 체크박스를 선택 해제합니다.
- Save changes를 선택합니다.
그룹 외부에서 프로젝트 포크 방지
Offering: GitLab.com, Self-managed, GitLab Dedicated
기본적으로, 그룹의 프로젝트는 포크될 수 있습니다.
그러나 현재 상위 수준 그룹 외부에서 프로젝트가 포크되는 것을 방지할 수 있습니다.
그러나 외부 협업이 많을 것으로 예상되는 경우, 상위 수준 그룹 외부에서 포크를 허용하는 것은 피할 수 없습니다.
필수 조건:
- 이 설정은 상위 수준 그룹에서만 활성화됩니다.
- 모든 하위 그룹은 이 설정을 상위 수준 그룹에서 상속받으며, 하위 그룹 수준에서 변경할 수 없습니다.
그룹 외부에서 포크되는 것을 방지하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 귀하의 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
- Prevent project forking outside current group를 선택합니다.
- Save changes를 선택합니다.
기존 포크는 삭제되지 않습니다.
그룹의 프로젝트에 멤버 추가 방지
Offering: GitLab.com, Self-managed, GitLab Dedicated
그룹 소유자로서, 모든 프로젝트에 대한 새로운 프로젝트 멤버십을 방지할 수 있으며, 이를 통해 프로젝트 멤버십에 대한 더 강력한 제어를 허용합니다.
예를 들어, 감사 이벤트로 그룹을 잠글 경우, 감사 중에 프로젝트 멤버십을 수정할 수 없음을 보장할 수 있습니다.
그룹 멤버십 잠금이 활성화되면, 그룹 소유자는 여전히:
- 잠긴 그룹의 프로젝트에 대한 액세스를 제공하기 위해 그룹을 초대하거나 그룹에 멤버를 추가할 수 있습니다.
- 그룹 멤버의 역할을 변경할 수 있습니다.
이 설정은 전파되지 않습니다. 하위 그룹의 프로젝트는 하위 그룹 구성을 관찰하며, 상위 그룹을 무시합니다.
그룹의 프로젝트에 멤버를 추가하지 않으려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 귀하의 그룹을 찾습니다.
- Settings > General을 선택합니다.
- Permissions and group features 섹션을 확장합니다.
- Membership 아래에서 Users cannot be added to projects in this group를 선택합니다.
- Save changes를 선택합니다.
그룹의 멤버십을 잠그면:
- 이전에 권한이 있던 모든 사용자는 더 이상 그룹에 멤버를 추가할 수 없습니다.
- 프로젝트에 새로운 사용자를 추가하는 API 요청이 불가능합니다.
LDAP로 그룹 멤버십 관리
Offering: Self-managed
- 그룹에 동기화된 사용자를 위한 사용자 정의 역할 지원이 GitLab 17.2에서 도입되었습니다.
그룹 동기화는 LDAP 그룹이 GitLab 그룹에 매핑되도록 합니다. 이를 통해 그룹별 사용자 관리에 대한 더 많은 제어를 제공합니다. 그룹 동기화를 구성하려면 group_base
DN('OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org'
)을 편집합니다. 이 OU는 GitLab 그룹과 연결된 모든 그룹을 포함합니다.
그룹 링크는 CN 또는 필터를 사용하여 생성할 수 있습니다. 이러한 그룹 링크를 생성하려면 그룹의 Settings > LDAP Synchronization 페이지로 이동합니다. 링크를 구성한 후, 사용자가 GitLab 그룹과 동기화되기까지 한 시간이 넘게 걸릴 수 있습니다. 링크를 구성한 후:
- GitLab 16.7 및 이전 버전에서는 그룹 소유자가 그룹에 멤버를 추가하거나 제거할 수 없습니다. LDAP 서버는 LDAP 자격 증명으로 로그인한 모든 사용자에 대한 그룹 멤버십의 단일 진실 출처로 간주됩니다.
- GitLab 16.8 및 이후 버전에서는 그룹 소유자가 member roles API를 사용하여 서비스 계정 사용자를 그룹에 추가하거나 그룹에서 제거할 수 있으며, LDAP 동기화가 그룹에 대해 활성화되어 있어도 가능합니다. 그룹 소유자는 비서비스 계정 사용자를 추가하거나 제거할 수 없습니다.
사용자가 동일한 GitLab 그룹에 대해 구성된 두 개의 LDAP 그룹에 속해 있는 경우, GitLab은 두 개의 연관된 역할 중 높은 역할을 부여합니다.
예를 들어:
- 사용자가 LDAP 그룹
Owner
와Dev
의 멤버입니다. - GitLab 그룹은 이 두 개의 LDAP 그룹으로 구성됩니다.
- 그룹 동기화가 완료되면, 사용자는 두 LDAP 그룹 역할 중 높은 역할인 Owner 역할을 부여받습니다.
LDAP 및 그룹 동기화 관리에 대한 추가 정보는 주요 LDAP 문서를 참조하세요.
LDAP 그룹을 통해 프로젝트 액세스를 관리하는 방법도 사용할 수 있습니다.
CN으로 그룹 링크 만들기
상세정보:
Tier: Premium, Ultimate
Offering: Self-managed, GitLab Dedicated
LDAP 그룹 CN을 사용하여 그룹 링크를 만들려면:
-
링크를 위한 LDAP 서버를 선택합니다.
-
동기화 방법으로
LDAP Group cn
을 선택합니다. -
LDAP Group cn 필드에 그룹의 CN을 입력하기 시작합니다. 구성된
group_base
에서 일치하는 CN의 드롭다운 목록이 표시됩니다. 이 목록에서 CN을 선택합니다. -
LDAP Access 섹션에서 이 그룹에 동기화된 사용자에 대한 기본 역할 또는 사용자 정의 역할을 선택합니다.
-
Add Synchronization을 선택합니다.
필터로 그룹 링크 만들기
상세정보:
Tier: Premium, Ultimate
Offering: Self-managed, GitLab Dedicated
LDAP 사용자 필터를 사용하여 그룹 링크를 만들려면:
-
링크를 위한 LDAP 서버를 선택합니다.
-
동기화 방법으로
LDAP user filter
를 선택합니다. -
LDAP User filter 상자에 필터를 입력합니다. 사용자 필터에 대한 문서를 참조하십시오.
-
LDAP Access 섹션에서 이 그룹에 동기화된 사용자에 대한 기본 역할 또는 사용자 정의 역할을 선택합니다.
-
Add Synchronization을 선택합니다.
사용자 권한 재정의
상세정보:
Tier: Premium, Ultimate
Offering: Self-managed, GitLab Dedicated
LDAP 사용자 권한은 관리자가 수동으로 재정의할 수 있습니다. 사용자 권한을 재정의하려면:
-
왼쪽 사이드바에서 Search or go to를 선택하고 그룹을 찾습니다.
-
Manage > Members를 선택합니다. LDAP 동기화로 인해 사용자가 역할을 부여받은 경우:
-
선택 사항. 편집하려는 사용자가 상속된 멤버십으로 표시되는 경우, LDAP 사용자 권한을 재정의하기 전에 하위 그룹 필터를 적용하여 직접 멤버를 표시합니다.
-
편집 중인 사용자의 행에서 연필 () 아이콘을 선택합니다.
-
대화 상자에서 Edit permissions을 선택합니다.
이제 Members 페이지에서 사용자 권한을 편집할 수 있습니다.
문제 해결
IP 제한으로 접근이 차단되었는지 확인
사용자가 특정 그룹에 접근할 때 404 오류가 발생하면, 그들의 접근이 IP 제한으로 차단되었을 수 있습니다.
다음 항목 중 하나 이상의 항목을 찾기 위해 auth.log
레일 로그를 검색합니다:
-
json.message
:'Attempting to access IP restricted group'
-
json.allowed
:false
로그 항목을 보는 동안, remote.ip
를 그룹에 대한 허용된 IP 주소 목록과 비교합니다.
그룹 구성원에 대한 권한을 업데이트할 수 없음
그룹 소유자가 그룹 구성원에 대한 권한을 업데이트할 수 없는 경우, 나열된 멤버십을 확인합니다. 그룹 소유자는 직접 멤버십만 업데이트할 수 있습니다.
하위 그룹에 직접 추가된 구성원은 부모 그룹에서 동일하거나 더 높은 역할을 가진 경우 여전히 상속된 멤버로 간주됩니다.
직접 멤버십을 보고 업데이트하려면, 그룹 필터를 사용하여 직접 멤버를 표시합니다.
문제 337539는 유형별 필터링 기능을 가진 직접 및 간접 멤버십을 나열하는 재설계된 멤버 페이지를 제안합니다.