접근 및 가시성 제어

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab은 관리자 액세스 권한이 있는 사용자가 브랜치, 프로젝트, 스니펫, 그룹 등을 제어할 수 있도록 특정 제어를 시행할 수 있도록 합니다.

사전 요구 사항:

  • 관리자가 되어야 합니다.

가시성 및 액세스 제어 옵션에 접근하려면:

  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.

프로젝트 생성 권한 정의

인스턴스에 프로젝트 생성 보호 기능을 추가할 수 있습니다. 이 보호 기능은 어떤 역할이 인스턴스의 그룹에 프로젝트를 추가할 수 있는지를 정의합니다. 프로젝트를 생성할 수 있는 권한이 있는 역할을 변경하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.
  4. Default project creation protection에서 원하는 역할을 선택합니다:
    • 누구도.
    • Maintainers.
    • Developers and Maintainers.
  5. Save changes를 선택합니다.

프로젝트 삭제를 관리자에게 제한

Tier: Premium, Ultimate Offering: Self-managed

사전 요구 사항:

  • 관리자가 되어야 하거나 프로젝트에서 Owner 역할을 가지고 있어야 합니다.

프로젝트 삭제를 관리자만 할 수 있도록 제한하려면:

  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.
  4. 아래로 스크롤하여:
    • (GitLab 15.1 이상) Allowed to delete projects를 선택하고 Administrators를 선택합니다.
    • (GitLab 15.0 이하) Default project deletion protection에서 Only admins can delete project를 선택합니다.
  5. Save changes를 선택합니다.

제한을 비활성화하려면:

  1. Owners and administrators를 선택합니다.
  2. Save changes를 선택합니다.

삭제 보호

Tier: Premium, Ultimate Offering: Self-managed

이러한 보호 기능은 인스턴스의 그룹 및 프로젝트를 실수로 삭제하는 것을 방지하는 데 도움이 됩니다.

보존 기간

정의한 보존 기간 동안 그룹과 프로젝트는 복원 가능 상태로 유지됩니다. 기본적으로 이는 7일이며, 변경할 수 있습니다. 보존 기간을 0일로 설정하면 GitLab은 삭제된 그룹과 프로젝트를 즉시 제거합니다. 복원할 수 없습니다.

GitLab 15.1 이상에서는 보존 기간이 1일과 90일 사이여야 합니다.

15.1 업데이트 이전에 보존 기간을 0일로 설정한 경우, 다음 번에 애플리케이션 설정을 변경할 때 GitLab은:

  • 보존 기간을 1일로 변경합니다.
  • 삭제 보호 기능을 비활성화합니다.

지연 프로젝트 삭제

전제 조건:

  • 관리자인 경우에만 가능합니다.
  • 프로젝트에 대해 활성화하기 전에 그룹에 대해 지연 프로젝트 삭제를 활성화해야 합니다. 프로젝트 전용으로 삭제 보호 기능은 제공되지 않습니다.
  • 비활성화된 경우, GitLab 15.1 이상에서는 이 지연 삭제 설정을 강제하며, 이를 오버라이드할 수 없습니다.

지연 프로젝트 삭제를 구성하려면:

GitLab 16.0 및 이후
  1. 왼쪽 사이드바의 하단에서 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. Deletion protection으로 스크롤하여 보존 기간을 190일 사이의 값으로 설정합니다.

  5. Save changes를 선택합니다.

GitLab 15.11 및 이전
  1. 왼쪽 사이드바의 하단에서 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. 스크롤하여:
    • GitLab 15.11에서 always_perform_delayed_deletion 기능 플래그가 활성화된 경우: Deletion protection으로 가서 보존 기간을 190일 사이의 값으로 설정합니다.
    • GitLab 15.1에서 15.10: Deletion protection을 선택하고 Keep deleted groups and projects를 선택한 다음 보존 기간을 설정합니다.
    • GitLab 15.0 및 이전: Default delayed project protection을 선택하고 Enable delayed project deletion by default for newly-created groups를 선택한 다음 보존 기간을 설정합니다.
  5. Save changes를 선택합니다.

지연 그룹 삭제

보존 기간이 1일 이상인 경우 그룹은 복원 가능 상태로 유지됩니다.

GitLab 16.0 이상에서는 Keep deleted 옵션이 제거되고 지연 그룹 삭제가 기본값이 됩니다.

GitLab 15에서 지연 그룹 삭제를 활성화하려면:

  1. GitLab 15.11에서만: always_perform_delayed_deletion 기능 플래그를 활성화합니다.

  2. 왼쪽 사이드바의 하단에서 Admin을 선택합니다.

  3. Settings > General을 선택합니다.

  4. Visibility and access controls를 확장합니다.

  5. Deletion projection에서 Keep deleted를 선택합니다.

  6. Save changes를 선택합니다.

기본값을 재정의하고 즉시 삭제하기

지연을 재정의하고 삭제 예정으로 표시된 프로젝트를 즉시 삭제하려면:

  1. 프로젝트 복원하기.
  2. 프로젝트 관리 페이지에 설명된 대로 프로젝트를 삭제하세요.

프로젝트 가시성 기본값 구성하기

프로젝트의 기본 가시성 수준을 설정하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에 있는 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. 원하는 기본 프로젝트 가시성을 선택합니다:
    • Private - 각 사용자에게 명시적으로 프로젝트 접근을 허용합니다. 이 프로젝트가 그룹의 일부인 경우, 그룹의 모든 구성원에게 접근을 허용합니다.
    • Internal - 외부 사용자를 제외한 모든 인증된 사용자가 프로젝트에 접근할 수 있습니다.
    • Public - 모든 사용자가 인증 없이 프로젝트에 접근할 수 있습니다.
  5. Save changes를 선택합니다.

스니펫 가시성 기본값 구성하기

스니펫의 기본 가시성 수준을 설정하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에 있는 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. Default snippet visibility에 대해 원하는 가시성 수준을 선택합니다:
    • Private.
    • Internal. 이 설정은 GitLab.com의 새로운 프로젝트, 그룹 및 스니펫에는 사용되지 않습니다. Internal 가시성 설정을 사용하는 기존 스니펫은 이 설정을 유지합니다. 이 변경 사항에 대해 자세히 알아보려면 이슈 12388를 참조하세요.
    • Public.
  5. Save changes를 선택합니다.

그룹 가시성 기본값 구성하기

새 그룹의 기본 가시성 수준을 설정하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에 있는 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. Default group visibility에 대해 원하는 가시성 수준을 선택합니다:
    • Private - 오직 구성원만 그룹과 그 프로젝트를 볼 수 있습니다.
    • Internal - 외부 사용자를 제외한 모든 인증된 사용자가 그룹과 내부 프로젝트를 볼 수 있습니다.
    • Public - 그룹과 공개 프로젝트를 보려면 인증이 필요하지 않습니다.
  5. Save changes를 선택합니다.

그룹 가시성에 대한 자세한 내용은 그룹 가시성을 참조하세요.

가시성 수준 제한하기

  • 변경됨 GitLab 16.3에서 기본 프로젝트 및 그룹 가시성을 제한하지 않도록 prevent_visibility_restriction이라는 플래그가 추가되었습니다. 기본적으로 비활성화되어 있습니다.
  • prevent_visibility_restriction기본 활성화됨 GitLab 16.4에서.
  • prevent_visibility_restriction제거됨 GitLab 16.7에서.

가시성 수준을 제한할 때, 이러한 제한이 변경하려는 항목에서 가시성을 상속받는 하위 그룹 및 프로젝트의 권한과 어떻게 상호작용하는지 고려하세요.

그룹, 프로젝트, 스니펫 및 선택된 페이지에 대한 가시성 수준을 제한하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에 있는 Admin을 선택합니다.

  2. Settings > General을 선택합니다.

  3. Visibility and access controls를 확장합니다.

  4. Restricted visibility levels에서 제한할 원하는 가시성 수준을 선택합니다.
    • Public 수준을 제한하면:
      • 오직 관리자가만 공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
      • 사용자 프로필은 웹 인터페이스를 통해 인증된 사용자에게만 표시됩니다.
      • GraphQL API를 통한 사용자 속성은 다음과 같습니다:
    • Internal 수준을 제한하면:
      • 오직 관리자가만 내부 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
    • Private 수준을 제한하면:
      • 오직 관리자가만 비공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
  5. Save changes를 선택합니다.
note
새 프로젝트와 그룹에 제한된 기본 가시성 수준을 선택할 수 없습니다.

Git 접근 프로토콜 구성

GitLab 접근 제한을 통해 사용자가 GitLab과 통신할 수 있는 프로토콜을 선택할 수 있습니다. 접근 프로토콜을 비활성화해도 서버 자체에 대한 포트 접근은 차단되지 않습니다. 프로토콜에 사용되는 포트인 SSH 또는 HTTP(S)는 여전히 접근 가능합니다. GitLab 제한은 애플리케이션 수준에서 적용됩니다.

GitLab은 사용자가 선택한 프로토콜에 대해서만 Git 작업을 허용합니다:

  • SSH와 HTTP(S) 둘 다 활성화하면 사용자는 두 프로토콜 중 하나를 선택할 수 있습니다.
  • 하나의 프로토콜만 활성화하면 프로젝트 페이지에는 허용된 프로토콜의 URL만 표시되며, 변경할 옵션이 없습니다.

인스턴스의 모든 프로젝트에 대해 활성화된 Git 접근 프로토콜을 지정하려면:

필수 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 아래쪽에 있는 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.
  4. Enabled Git access protocols에서 원하는 프로토콜을 선택합니다:
    • SSH와 HTTP(S) 둘 다.
    • SSH만.
    • HTTP(S)만.
  5. Save changes를 선택합니다.

경고: GitLab은 HTTP(S) 프로토콜을 허용합니다 GitLab CI/CD 작업 토큰으로 수행된 Git 클론 또는 페치 요청에 대해 허용됩니다.

Only SSH를 선택하더라도, GitLab Runner 및 CI/CD 작업에서 이 설정이 필요합니다.

HTTP(S)용 Git 클론 URL 사용자 지정

HTTP(S)용 프로젝트 Git 클론 URL을 사용자 지정할 수 있으며, 이는 프로젝트 페이지에서 사용자에게 표시되는 클론 패널에 영향을 미칩니다. 예를 들어:

  • GitLab 인스턴스가 https://example.com일 경우, 프로젝트 클론 URL은 https://example.com/foo/bar.git와 같습니다.
  • 대신 https://git.example.com/gitlab/foo/bar.git와 같은 클론 URL을 원한다면, 이 설정을 https://git.example.com/gitlab/로 설정할 수 있습니다.

HTTP(S)에서의 사용자 지정 Git 클론 URL을 gitlab.rb에 지정하려면, gitlab_rails['gitlab_ssh_host']에 새 값을 설정합니다. GitLab UI에서 새 값을 지정하려면:

필수 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 아래쪽에 있는 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.
  4. Custom Git clone URL for HTTP(S)에 대한 루트 URL을 입력합니다.
  5. Save changes를 선택합니다.

RSA, DSA, ECDSA, ED25519, ECDSA_SK, ED25519_SK SSH 키의 기본값 구성

이러한 옵션은 SSH 키에 대한 허용된 유형과 길이를 지정합니다.

각 키 유형에 대한 제한을 지정하려면:

  1. 왼쪽 사이드바에서 아래쪽에 있는 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Visibility and access controls를 확장합니다.
  4. RSA SSH keys로 이동합니다.
  5. 각 키 유형에 대해 사용을 전혀 허용하지 않거나, 다음 길이를 허용할 수 있습니다:
    • 최소 1024 비트.
    • 최소 2048 비트.
    • 최소 3072 비트.
    • 최소 4096 비트.
    • 최소 1024 비트.
  6. Save changes를 선택합니다.

프로젝트 미러링 활성화

GitLab은 프로젝트 미러링을 기본적으로 활성화합니다. 이 기능을 비활성화하면
풀 미러링
푸시 미러링은 모든 저장소에서
더 이상 작동하지 않습니다. 관리자가 프로젝트별로 다시 활성화할 수 있습니다.

인스턴스의 프로젝트 유지 관리자가 프로젝트별로 미러링을 구성할 수 있도록 하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래의 관리를 선택합니다.
  2. 설정 > 저장소를 선택합니다.
  3. 저장소 미러링을 확장합니다.
  4. 프로젝트 유지 관리자가 저장소 미러링을 구성할 수 있도록 허용을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

전 세계적으로 허용된 IP 주소 범위 구성

관리자는 IP 주소 범위를
그룹별 IP 제한과 결합할 수 있습니다.
전 세계적으로 허용된 IP 주소를 사용하여 GitLab 설치의 일부가 그룹별 IP 주소 제한이 설정되어 있어도 작동하게 할 수 있습니다.

예를 들어, GitLab Pages 데몬이 10.0.0.0/24 범위에서 실행되는 경우,
해당 범위를 전 세계적으로 허용된 IP로 지정할 수 있습니다.
그룹의 IP 주소 제한에 10.0.0.0/24 범위가 포함되어 있지 않더라도
GitLab Pages는 여전히 파이프라인에서 아티팩트를 가져올 수 있습니다.

그룹의 허용 목록에 IP 주소 범위를 추가하려면:

사전 요구 사항:

  • 관리자가 되어야 합니다.
  1. 왼쪽 사이드바에서 맨 아래의 관리를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 접근 제어를 확장합니다.
  4. 전 세계적으로 허용된 IP 범위에서 IP 주소 범위 목록을 제공합니다. 이 목록:
    • IP 주소 범위의 수에 제한이 없습니다.
    • SSH 또는 HTTP 권한 IP 주소 범위 모두에 적용됩니다. 이 목록을 인증 유형별로 나누어서는 안 됩니다.
  5. 변경 사항 저장을 선택합니다.