액세스 및 가시성 제어

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

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

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

  1. GitLab에 관리자 액세스 수준의 사용자로서 로그인합니다.
  2. 왼쪽 사이드바에서 하단에 있는 관리 영역(Admin Area)을 선택합니다.
  3. 설정(Setting) > 일반(General)을 선택합니다.
  4. 가시성 및 액세스 제어(Visibility and access controls) 섹션을 확장합니다.

프로젝트를 생성할 수 있는 역할 정의

프로젝트 생성에 대한 인스턴스 수준의 보호는 인스턴스에서 그룹에 프로젝트를 추가할 수 있는 권한을 정의합니다. 프로젝트를 생성할 수 있는 역할을 변경하려면:

  1. GitLab에 관리자 액세스 수준의 사용자로서 로그인합니다.
  2. 왼쪽 사이드바에서 하단에 있는 관리 영역(Admin Area)을 선택합니다.
  3. 설정(Setting) > 일반(General)을 선택합니다.
  4. 가시성 및 액세스 제어(Visibility and access controls) 섹션을 확장합니다.
  5. 기본 프로젝트 생성 보호(Default project creation protection)에서 원하는 역할을 선택합니다:
    • 아무도 아님(No one).
    • Maintainers.
    • Developers and Maintainers.
  6. 변경 사항 저장(Save changes)을 선택합니다.

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

Tier: Premium, Ultimate Offering: Self-managed
  • GitLab 15.1에서 사용자 인터페이스가 변경됨.

기본적으로 관리자 및 소유자(Owner) 역할을 가진 사용자는 프로젝트를 삭제할 수 있습니다. 프로젝트 삭제를 관리자만으로 제한하려면:

  1. GitLab에 관리자 액세스로 로그인합니다.
  2. 왼쪽 사이드바에서 하단에 있는 관리 영역(Admin Area)을 선택합니다.
  3. 설정(Setting) > 일반(General)을 선택합니다.
  4. 가시성 및 액세스 제어(Visibility and access controls) 섹션을 확장합니다.
  5. 아래로 스크롤하여:
    • (GitLab 15.1 및 이후) 프로젝트 삭제 허용(Allowed to delete projects)을 해서 관리자(Administrators)를 선택합니다.
    • (GitLab 15.0 및 이전) 기본 프로젝트 삭제 보호(Default project deletion protection)을 선택하고 관리자만이 프로젝트를 삭제할 수 있음(Only admins can delete project)을 선택합니다.
  6. 변경 사항 저장(Save changes)을 선택합니다.

삭제 보호

Tier: Premium, Ultimate Offering: Self-managed

그룹 및 프로젝트의 우발적인 삭제로부터의 인스턴스 수준 보호.

보존 기간

그룹 및 프로젝트는 정의된 보존 기간 내에서 복구될 수 있습니다. 기본값은 7일이지만 변경할 수 있습니다. 보존 기간을 0으로 설정하면 그룹 및 프로젝트가 즉시 삭제되어 복구할 수 없게 됩니다.

GitLab 15.1 이상에서 보존 기간은 1에서 90 사이여야 합니다. 보존 기간이 15.1 업데이트 이전에 0이었다면 애플리케이션 설정을 다음으로 변경할 때 다음 번 삭제 보호가 설정되면 자동으로 1로 변경됩니다.

지연 프로젝트 삭제

  • GitLab 15.1에서 사용자 인터페이스가 변경됨.
  • GitLab 16.0에서 기본적으로 지연 삭제가 활성화되고 즉시 삭제하는 옵션은 GitLab.comSelf-managed도에서 제거됨.

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

  1. GitLab에 관리자 액세스 수준의 사용자로서 로그인합니다.
  2. 왼쪽 사이드바에서 하단에 있는 관리 영역(Admin Area)을 선택합니다.
  3. 설정(Setting) > 일반(General)을 선택합니다.
  4. 가시성 및 액세스 제어(Visibility and access controls) 섹션을 확장합니다.
  5. 아래로 스크롤하여:
    • GitLab 16.0 이상: 프로젝트 삭제 보호(Deletion protection)를 선택하고 보존 기간을 1에서 90 사이의 값으로 설정합니다.
    • always_perform_delayed_deletion 피처 플래그가 활성화된 GitLab 15.11에서: 프로젝트 삭제 보호(Deletion protection)를 선택하고 보존 기간을 1에서 90 사이의 값으로 설정합니다.
    • 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)를 선택한 후 보존 기간을 설정합니다.
  6. 변경 사항 저장(Save changes)을 선택합니다.

프로젝트만(그룹이 아닌 경우)에는 삭제 보호가 사용할 수 없습니다.

GitLab 15.1 이상에서는 이 설정이 그룹에 대해 비활성화되고 재정의할 수 없게 됩니다.

지연 그룹 삭제

  • GitLab 15.1에서 사용자 인터페이스가 도입됨.
  • GitLab 16.0에서 Premium 및 Ultimate 티어에서 기본 동작으로 변경됨.

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

GitLab 15.1 이상에서는 프로젝트 삭제 보호(Deletion projection)삭제된 그룹 유지(Keep deleted)로 설정하여 지연 그룹 삭제를 활성화할 수 있습니다. GitLab 15.11 이상에서 always_perform_delayed_deletion 피처 플래그가 활성화되거나 GitLab 16.0 이후:

  • 삭제된 그룹 유지(Keep deleted) 옵션이 제거됩니다.
  • 지연 그룹 삭제가 기본 동작이 됩니다.

기본값 재정의 및 즉시 삭제

대안으로, 제거 대상으로 표시된 프로젝트는 즉시 삭제할 수 있습니다. 다음과 같이 진행하세요:

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

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

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

  1. 관리자 액세스 수준을 가진 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 제어 섹션을 확장합니다.
  5. 원하는 기본 프로젝트 가시성을 선택합니다:
    • 비공개 - 프로젝트 액세스는 각 사용자에게 명시적으로 승인되어야 합니다. 이 프로젝트가 그룹의 일부인 경우, 해당 그룹의 멤버에게 액세스가 승인됩니다.
    • 내부 - 외부 사용자를 제외한 모든 인증된 사용자가 프로젝트에 액세스할 수 있습니다.
    • 공개 - 인증이 필요하지 않고 프로젝트에 액세스할 수 있습니다.
  6. 변경 사항 저장을 선택합니다.

프로젝트 가시성에 대한 자세한 내용은 프로젝트 가시성을 참조하십시오.

스니펫 가시성 기본값 구성

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

  1. 관리자 액세스 수준을 가진 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 제어 섹션을 확장합니다.
  5. 원하는 기본 스니펫 가시성을 선택합니다.
  6. 변경 사항 저장을 선택합니다.

스니펫 가시성에 대한 자세한 내용은 스니펫 가시성을 참조하십시오.

그룹 가시성 기본값 구성

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

  1. 관리자 액세스 수준을 가진 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 제어 섹션을 확장합니다.
  5. 원하는 기본 그룹 가시성을 선택합니다:
    • 비공개 - 그룹 및 해당 프로젝트는 멤버만 볼 수 있습니다.
    • 내부 - 그룹 및 내부 프로젝트는 외부 사용자를 제외한 모든 인증된 사용자가 볼 수 있습니다.
    • 공개 - 그룹과 공개 프로젝트는 인증이 필요하지 않고 볼 수 있습니다.
  6. 변경 사항 저장을 선택합니다.

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

가시성 수준 제한

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

가시성 수준을 제한할 때, 이러한 제한이 가시성을 변경하는 항목으로부터 상속하는 하위 그룹 및 프로젝트의 권한과 상호작용하는 방식을 고려해야 합니다.

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

  1. 관리자 액세스 수준을 가진 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 제어 섹션을 확장합니다.
  5. 제한된 가시성 수준 섹션에서 제한할 원하는 가시성 수준을 선택합니다.
    • 공개 수준을 제한하는 경우:
      • 관리자만 공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
      • 사용자 프로필은 웹 인터페이스를 통해 인증된 사용자에게만 표시됩니다.
      • GitLab 15.1 및 이후에서는 GraphQL API를 통해 보이지 않습니다.
      • GitLab 13.1부터 15.0까지는 인증된 사용자에게만 표시됩니다.
    • 내부 수준을 제한하는 경우:
      • 관리자만 내부 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
    • 비공개 수준을 제한하는 경우:
      • 관리자만 비공개 그룹, 프로젝트 및 스니펫을 만들 수 있습니다.
  6. 변경 사항 저장을 선택합니다.
note
새 프로젝트 및 그룹에 대해 제한된 기본 가시성 수준을 선택할 수 없습니다.

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

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

활성화된 Git 액세스 프로토콜을 지정하려면:

  1. 관리자 액세스 수준을 가진 사용자로 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 가시성 및 액세스 제어 섹션을 확장합니다.
  5. 원하는 Git 액세스 프로토콜을 선택합니다:
    • SSH 및 HTTP(S) 모두
    • SSH만
    • HTTP(S)만
  6. 변경 사항 저장을 선택합니다.

SSH 및 HTTP(S) 둘 다 활성화되어 있는 경우 사용자는 둘 중 하나의 프로토콜을 선택할 수 있습니다. 한 가지 프로토콜만 활성화된 경우:

  • 프로젝트 페이지에는 허용된 프로토콜의 URL만 표시되며 변경 옵션이 없습니다.
  • 사용자 동작(예: SSH 키 추가 또는 암호 설정)이 필요한 경우 GitLab에서 URL에 대한 툴팁이 표시됩니다:

    SSH 전용 액세스를 허용하는 프로젝트 URL

GitLab은 지정한 프로토콜에 대한 Git 작업만 허용합니다.

caution
GitLab 10.7 이후에서 GitLab CI/CD 작업 토큰으로 수행된 Git 클론 또는 가져오기 요청에 대해 SSH 전용을 선택하더라도 HTTP(S) 프로토콜을 허용합니다. 이것은 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를 위한 사용자 정의 Git 클론 URL

HTTP(S)를 위한 사용자 정의 Git 클론 URL을 지정하려면:

  1. HTTP(S)를 위한 사용자 정의 Git 클론 URL에 루트 URL을 입력하세요.
  2. 변경 사항 저장을 선택하세요.
note
SSH 클론 URL은 gitlab.rb에서 gitlab_rails['gitlab_ssh_host'] 및 관련 설정을 설정함으로써 사용자 정의할 수 있습니다.

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

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

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

  1. 드롭다운 디렉터리에서 원하는 옵션을 선택하세요.
  2. 변경 사항 저장을 선택하세요.

자세한 내용은 SSH 키 제한을 참조하세요.


프로젝트 미러링 활성화

이 옵션은 기본적으로 활성화되어 있습니다. 이를 비활성화하면 모든 리포지터리에서 풀 미러링푸시 미러링이 더 이상 작동하지 않습니다. 이를 프로젝트별로 관리자 사용자에 의해 다시 활성화할 수 있습니다.

미러 설정


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

관리자는 그룹 수준 IP 제한과 결합할 IP 주소 범위를 설정할 수 있습니다. 전역으로 허용된 IP 주소를 사용하여 그룹 수준 IP 주소 제한이 설정되어 있을 때에도 GitLab 설치의 측면을 계속해서 작동할 수 있도록 할 수 있습니다.

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

그룹 수준 허용 디렉터리에 IP 주소 범위를 추가하려면:

  1. 관리자 액세스 수준을 갖춘 사용자로 GitLab에 서명하세요.
  2. 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택하세요.
  3. 설정 > 일반을 선택하세요.
  4. 가시성 및 액세스 제어 섹션을 확장하세요.
  5. 전역으로 허용된 IP 범위에서 IP 주소 범위 디렉터리을 제공하세요. 이 디렉터리은:
    • IP 주소 범위의 수에 제한이 없습니다.
    • 1GB의 크기 제한이 있습니다.
    • SSH 또는 HTTP 인증 IP 주소 범위 둘 다에 적용됩니다. 이 디렉터리을 인증 유형에 따라 분할할 수 없습니다.
  6. 변경 사항 저장을 선택하세요.