액세스 및 가시성 제어

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

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

사전 요구 사항:

  • 귀하는 관리자여야 합니다.

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

  1. 왼쪽 사이드바에서 하단에 있는 Admin 를 선택합니다.
  2. Settings > General 를 선택합니다.
  3. 가시성 및 액세스 제어를 펼칩니다.

프로젝트를 만들 수 있는 역할 정의하기

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

사전 요구 사항:

  • 귀하는 관리자여야 합니다.
  1. 왼쪽 사이드바에서 하단에 있는 Admin 를 선택합니다.
  2. Settings > General 를 선택합니다.
  3. 가시성 및 액세스 제어를 펼칩니다.
  4. 기본 프로젝트 생성 보호에서 원하는 역할을 선택합니다:
    • 아무도 아님.
    • Maintainer.
    • Developer 및 Maintainer.
  5. 변경 사항 저장을 선택합니다.

프로젝트 삭제를 관리자로 제한하기

Tier: Premium, Ultimate Offering: Self-managed

사전 요구 사항:

  • 귀하는 관리자이거나 프로젝트에서 소유자 역할을 가져야 합니다.

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

  1. 왼쪽 사이드바에서 하단에 있는 Admin 를 선택합니다.
  2. Settings > General 를 선택합니다.
  3. 가시성 및 액세스 제어를 펼칩니다.
  4. 다음으로 스크롤합니다:
    • (GitLab 15.1 이후) 프로젝트 삭제 허용을 선택하고 Administrators를 선택합니다.
    • (GitLab 15.0 및 이전) 기본 프로젝트 삭제 보호을 선택하고 Only admins can delete project를 선택합니다.
  5. 변경 사항 저장을 선택합니다.

제한을 해제하려면:

  1. 소유자 및 관리자를 선택합니다.
  2. 변경 사항 저장을 선택합니다.

삭제 보호

Tier: Premium, Ultimate Offering: Self-managed
  • GitLab 15.1에서 기본 지연 프로젝트 삭제에서 이름이 변경되었습니다.
  • GitLab 15.1에서 개인 네임스페이스의 프로젝트에 대해 활성화되었습니다.
  • GitLab 15.3에서 개인 네임스페이스의 프로젝트에 대해 비활성화되었습니다.
  • GitLab 15.11에서 즉시 삭제 옵션을 제거하고 플래그 always_perform_delayed_deletion이 있는 채로 비활성화되었습니다. 기본적으로 비활성화됨.
  • GitLab 16.0에서 지연된 삭제가 기본적으로 활성화되었으며 GitLab.com셀프 관리에서 즉시 삭제 옵션을 제거했습니다.

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

보존 기간

그룹과 프로젝트는 여러분이 정의한 보존 기간 동안 복구할 수 있습니다. 기본적으로 이 기간은 7일이지만 수정할 수 있습니다. 보존 기간을 0으로 설정하면 GitLab이 삭제된 그룹과 프로젝트를 즉시 제거합니다. 이를 복구할 수 없습니다.

GitLab 15.1 이후, 보존 기간은 1에서 90일 사이여야 합니다. 15.1 이전에 보존 기간을 0으로 설정한 경우, 다음 응용 프로그램 설정 변경 시 GitLab은:

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

지연 프로젝트 삭제

  • GitLab 15.1에서 사용자 인터페이스가 변경되었습니다.
  • GitLab 16.0에서 지연된 삭제가 기본적으로 활성화되었으며 GitLab.com셀프 관리에서 즉시 삭제 옵션을 제거했습니다.

사전 요구 사항:

  • 귀하는 관리자여야 합니다.
  • 프로젝트에 대한 지연된 프로젝트 삭제를 활성화해야 그룹의 지연된 삭제를 활성화할 수 있습니다. 삭제 보호는 프로젝트만으로 사용할 수 없습니다.
  • 비활성화된 경우, GitLab 15.1 이후에서는 지연 삭제 설정이 강제되어 이를 무시할 수 없습니다.

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

GitLab 16.0 및 이후
  1. 왼쪽 사이드바에서 하단에 있는 Admin 를 선택합니다.
  2. Settings > General 를 선택합니다.
  3. 가시성 및 액세스 제어를 펼칩니다.
  4. 프로젝트 삭제 보호로 스크롤하고 보존 기간을 1에서 90일 사이의 값으로 설정합니다.
  5. 변경 사항 저장을 선택합니다.
GitLab 15.11 및 이전
  1. 왼쪽 사이드바에서 하단에 있는 Admin 를 선택합니다.
  2. Settings > General 를 선택합니다.
  3. 가시성 및 액세스 제어를 펼칩니다.
  4. 다음으로 스크롤합니다:
    • 15.11 버전의 GitLab에서 always_perform_delayed_deletion 기능 플래그가 활성화된 상태: 프로젝트 삭제 보호로 스크롤하고 보존 기간을 1에서 90일 사이의 값으로 설정합니다.
    • 15.1에서 15.10까지: 프로젝트 삭제 보호로 스크롤하고 삭제된 그룹 및 프로젝트 유지을 선택한 후 보존 기간을 설정합니다.
    • 15.0 및 그 이전: 기본 지연 프로젝트 보호로 스크롤하고 새로 생성된 그룹에 대해 기본적으로 지연된 프로젝트 삭제 활성화를 선택한 후 보존 기간을 설정합니다.
  5. 변경 사항 저장을 선택합니다.

지연된 그룹 삭제

  • GitLab 15.1에 도입된 사용자 인터페이스를 참조하십시오. (링크)[https://gitlab.com/gitlab-org/gitlab/-/issues/352960]
  • GitLab 16.0에서 Premium 및 Ultimate 티어의 기본 동작으로 변경되었습니다. (링크)[https://gitlab.com/gitlab-org/gitlab/-/issues/389557]

그룹은 보존 기간이 1일 이상인 경우 복원할 수 있습니다.

GitLab 16.0 이후에는 삭제된 항목 유지 옵션이 제거되었으며 지연된 그룹 삭제가 기본값입니다.

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

  1. GitLab 15.11에서만: always_perform_delayed_deletion 기능 플래그를 활성화합니다.
  2. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 컨트롤을 확장합니다.
  5. 삭제 예정에서 삭제된 항목 유지를 선택합니다.
  6. 변경 사항 저장을 선택합니다.

기본값 재정의 및 즉시 삭제

지연을 무시하고 즉시 제거할 프로젝트를 삭제하려면:

  1. 프로젝트 복원을 실행합니다.
  2. 프로젝트 관리 페이지에 설명된대로 프로젝트를 삭제합니다.

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

새로운 프로젝트에 대한 가시성 수준 기본값을 설정하려면:

전제 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 컨트롤을 확장합니다.
  4. 원하는 기본 프로젝트 가시성을 선택합니다:
    • 비공개 - 각 사용자에게 명시적으로 프로젝트 액세스 권한을 부여합니다. 그룹의 구성원에게 액세스 권한을 부여합니다.
    • 내부 - 외부 사용자를 제외한 모든 인증된 사용자가 프로젝트에 액세스할 수 있습니다.
    • 공개 - 인증 없이 누구나 프로젝트에 액세스할 수 있습니다.
  5. 변경 사항 저장을 선택합니다.

스니펫 가시성 기본값 구성

새로운 스니펫에 대한 기본 가시성 수준을 설정하려면:

전제 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 컨트롤을 확장합니다.
  4. 기본 스니펫 가시성에서 원하는 가시성 수준을 선택합니다:
    • 비공개.
    • 내부. GitLab.com의 새 프로젝트, 그룹, 및 스니펫에 대해 이 설정은 비활성화됩니다. 기존 스니펫은 내부 가시성 설정을 유지합니다. 이 변경에 대해 자세히 알아보려면 이슈 12388을 참조하십시오.
    • 공개.
  5. 변경 사항 저장을 선택합니다.

그룹 가시성 기본값 구성

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

전제 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 컨트롤을 확장합니다.
  4. 기본 그룹 가시성에서 원하는 가시성 수준을 선택합니다:
    • 비공개 - 구성원만 그룹 및 내부 프로젝트를 볼 수 있습니다.
    • 내부 - 외부 사용자를 제외한 모든 인증된 사용자가 그룹 및 내부 프로젝트를 볼 수 있습니다.
    • 공개 - 인증이 필요하지 않으며 누구나 그룹 및 공개 프로젝트를 볼 수 있습니다.
  5. 변경 사항 저장을 선택합니다.

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

가시성 수준 제한

  • GitLab 16.3에서 기본 프로젝트 및 그룹 가시성 제한 방지를 위해 변경되었으며, 기본적으로 prevent_visibility_restriction이라는 플래그가 사용되지 않았습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 16.4에서 기본적으로 prevent_visibility_restriction이 활성화되었습니다. (링크)[https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131203]
  • GitLab 16.7에서 prevent_visibility_restriction이 제거되었습니다. (링크)[https://gitlab.com/gitlab-org/gitlab/-/issues/433280]

가시성 수준을 제한할 때, 이러한 제한이 가시성을 상속하는 서브그룹 및 프로젝트에 어떻게 영향을 미치는지 고려하십시오.

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

전제 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 컨트롤을 확장합니다.
  4. 제한된 가시성 수준에서 원하는 제한할 가시성 수준을 선택합니다:
    • 공개 수준을 제한하는 경우:
      • 관리자만 공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
      • 사용자 프로필은 웹 인터페이스를 통해 인증된 사용자만 볼 수 있습니다.
      • GitLab 15.1 이후에는 GraphQL API를 통해 사용자 속성이 표시되지 않습니다.
      • GitLab 15.0에서는 인증된 사용자만 볼 수 있습니다.
    • 내부 수준을 제한하는 경우:
      • 관리자만 내부 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
    • 비공개 수준을 제한하는 경우:
      • 관리자만 비공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
  5. 변경 사항 저장을 선택합니다.

참고: 새 프로젝트 및 그룹에 대한 제한된 기본 가시성 수준을 선택할 수 없습니다.

활성화된 Git 액세스 프로토콜 구성

GitLab 액세스 제한을 통해 사용자가 GitLab과 통신할 수 있는 프로토콜을 선택할 수 있습니다. 액세스 프로토콜을 비활성화해도 서버 자체의 포트 액세스가 차단되지는 않습니다. 프로토콜에 사용된 포트는 여전히 접근 가능합니다. GitLab 제한 사항은 응용프로그램 수준에서 적용됩니다.

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

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

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

전제 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드바에서 맨 아래에서 관리자를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 컨트롤을 확장합니다.
  4. 활성화된 Git 액세스 프로토콜에서 원하는 프로토콜을 선택합니다:
    • SSH 및 HTTP(S) 둘 다.
    • SSH만.
    • HTTP(S)만.
  5. 변경 사항 저장을 선택합니다.

경고: GitLab은 GitLab CI/CD 작업 토큰을 사용하여 수행되는 Git 클론 또는 가져오기 요청에서 HTTP(S) 프로토콜을 허용합니다. 이 설정을 통하여 Only SSH를 선택하더라도 GitLab Runner 및 CI/CD 작업에서 이 설정이 필요합니다.

HTTP(S)를 위한 사용자 정의 Git 클론 URL

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

  • 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/로 설정할 수 있습니다.

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

사전 조건:

  • 관리자여야 합니다.
  1. 왼쪽 사이드 바에서 가장 아래쪽에서 관리를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 제어를 확장합니다.
  4. HTTP(S)를 위한 사용자 정의 Git 클론 URL에 루트 URL을 입력합니다.
  5. 변경 사항 저장을 선택합니다.

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

이러한 옵션들은 SSH 키의 허용된 유형 및 길이를 지정합니다.

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

  1. 왼쪽 사이드 바에서 가장 아래쪽에서 관리를 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 제어를 확장합니다.
  4. RSA SSH 키로 이동합니다.
  5. 각 키 유형에 대해 전혀 사용을 금지하거나 허용하거나, 길이를 다음 중 하나로만 허용하도록 할 수 있습니다:
    • 적어도 1024비트.
    • 적어도 2048비트.
    • 적어도 3072비트.
    • 적어도 4096비트.
    • 적어도 1024비트.
  6. 변경 사항 저장을 선택합니다.

프로젝트 미러링 활성화

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

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

사전 조건:

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

전역으로 허용된 IP 주소 범위 구성

관리자는 IP 주소 범위를 그룹별 IP 주소로 제한하는 것과 결합할 수 있습니다. 전역으로 허용된 IP 주소를 사용하여 IP 주소 제한이 그룹별로 설정될 때라도 GitLab 설치의 일부 기능을 허용할 수 있습니다.

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

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

사전 조건:

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