InfoGrab Docs

지원되는 패키지 관리자 및 기능

요약

GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다. 패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다: API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.

GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 이 지원에는 패키지 게시 및 풀, 요청 전달, 중복 관리, 인증이 포함됩니다.

지원되는 패키지 관리자#

Warning

모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다.

패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다:

패키지 유형 상태
Composer 베타
Conan 1 베타
Conan 2 베타
Debian 실험적
Generic 패키지 일반적으로 사용 가능
Go 실험적
Helm 일반적으로 사용 가능
Maven 일반적으로 사용 가능
npm 일반적으로 사용 가능
NuGet 일반적으로 사용 가능
PyPI 일반적으로 사용 가능
Ruby gems 실험적

각 상태의 의미 보기.

API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.

패키지 게시#

패키지는 프로젝트, 그룹 또는 인스턴스에 게시할 수 있습니다.

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn 사용) 아니오 아니오
Maven (gradle 사용) 아니오 아니오
Maven (sbt 사용) 아니오 아니오 아니오
npm 아니오 아니오
NuGet 아니오 아니오
PyPI 아니오 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오 아니오
Conan 1 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오 아니오
Ruby gems 아니오 아니오

패키지 풀#

패키지는 프로젝트, 그룹 또는 인스턴스에서 풀할 수 있습니다.

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn 사용)
Maven (gradle 사용)
Maven (sbt 사용)
npm
NuGet 아니오
PyPI 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오
Ruby gems 아니오 아니오

요청 전달#

사전 요구사항:

  • GitLab.com에서: 그룹의 Owner여야 합니다.
  • GitLab Self-Managed에서: 관리자여야 합니다.

패키지를 프로젝트의 패키지 레지스트리에서 찾을 수 없는 경우, 패키지 관리자의 해당 공개 레지스트리로 요청이 전달됩니다.

기본 전달 동작은 패키지 유형에 따라 다르며 의존성 혼동 취약점이 발생할 수 있습니다. 아래 표는 패키지 전달을 지원하는 패키지 관리자를 보여줍니다.

관련 보안 위험을 줄이려면:

  • 패키지가 현재 사용 중인지 확인합니다.
  • Git과 같은 버전 관리 도구를 구현하여 패키지 변경 사항을 추적합니다.
  • 요청 전달 해제:
    • 인스턴스 관리자는 관리 영역에서 전달을 비활성화할 수 있습니다. 자세한 내용은 패키지 전달 제어를 참조하세요.
    • 그룹 오너는 그룹 설정에서 패키지 전달을 해제할 수 있습니다.

그룹에 대한 요청 전달을 해제하려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 왼쪽 사이드바에서 설정 > 패키지 및 레지스트리를 선택합니다.
  3. 패키지 전달에서 다음 체크박스 중 하나 또는 둘 다 선택을 취소합니다:
    • npm 패키지 요청 전달
    • PyPI 패키지 요청 전달
  4. 변경 사항 저장을 선택합니다.
패키지 유형 요청 전달 지원 보안 고려사항
Maven (mvn 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
Maven (gradle 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
Maven (sbt 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
npm 비공개 패키지의 경우 비활성화를 고려하세요.
PyPI 비공개 패키지의 경우 비활성화를 고려하세요.
NuGet 아니오 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오 아니오
Conan 1 아니오 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오 아니오
Ruby gems 아니오 아니오

패키지 삭제#

패키지 요청이 공개 레지스트리로 전달되는 경우 패키지 삭제는 의존성 혼동 취약점을 유발할 수 있습니다.

시스템이 삭제된 패키지를 풀하려고 시도하면, 요청이 공개 레지스트리로 전달됩니다. 공개 레지스트리에 동일한 이름과 버전의 패키지가 있는 경우, 해당 패키지가 풀됩니다. 레지스트리에서 풀된 패키지는 예상한 것이 아닐 수 있으며 악성일 수 있습니다.

관련 보안 위험을 줄이려면 패키지를 삭제하기 전에:

패키지를 삭제하려면:

다른 리포지터리에서 패키지 가져오기#

패키지 가져오기 도구를 사용하여 GitLab 파이프라인으로 Maven Central 또는 Artifactory와 같은 다른 리포지터리에서 패키지를 가져올 수 있습니다.

패키지 유형 가져오기 사용 가능 여부
Maven (mvn 사용)
Maven (gradle 사용)
Maven (sbt 사용)
npm
NuGet
PyPI
Generic 패키지 아니오
Terraform 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오
Helm 아니오
Debian 아니오
Go 아니오
Ruby gems 아니오

중복 허용 또는 방지#

기본적으로 GitLab 패키지 레지스트리는 해당 특정 패키지 관리자 형식의 기본값에 따라 중복을 허용하거나 방지합니다.

패키지 유형 중복 허용 여부
Maven (mvn 사용) 예 (구성 가능)
Maven (gradle 사용) 예 (구성 가능)
Maven (sbt 사용) 예 (구성 가능)
npm 아니오
NuGet
PyPI 아니오
Generic 패키지 예 (구성 가능)
Terraform 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오
Helm
Debian
Go 아니오
Ruby gems

레지스트리 인증#

인증은 사용하는 패키지 관리자에 따라 다릅니다. 특정 패키지 유형에 대해 지원되는 인증 프로토콜을 알아보려면 인증 프로토콜을 참조하세요.

대부분의 패키지 유형의 경우 다음 인증 토큰이 유효합니다:

다음 표에는 주어진 패키지 관리자에 대해 지원되는 인증 토큰이 나열됩니다:

패키지 유형 지원되는 토큰
Maven (mvn 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (gradle 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (sbt 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
npm 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
NuGet 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
PyPI 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Generic 패키지 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Terraform 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Composer 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Conan 1 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Conan 2 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Helm 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Debian 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Go 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Ruby gems 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Note

패키지 레지스트리에 대한 인증을 구성할 때:

  • 패키지 레지스트리 프로젝트 설정이 해제된 경우, Owner 권한이 있더라도 패키지 레지스트리와 상호 작용할 때 403 Forbidden 오류가 발생합니다.
  • 외부 인증이 활성화된 경우 배포 토큰으로 패키지 레지스트리에 액세스할 수 없습니다.
  • 조직에서 2단계 인증(2FA)을 사용하는 경우 스코프가 api로 설정된 퍼스널 액세스 토큰을 사용해야 합니다.
  • CI/CD 파이프라인으로 패키지를 게시하는 경우 CI/CD 잡 토큰을 사용해야 합니다.

인증 프로토콜#

히스토리
  • Maven 패키지에 대한 기본 인증이 GitLab 16.0에서 도입되었습니다.

다음 인증 프로토콜이 지원됩니다:

패키지 유형 지원되는 인증 프로토콜
Maven (mvn 사용) 헤더, 기본 인증, OAuth
Maven (gradle 사용) 헤더, 기본 인증, OAuth
Maven (sbt 사용) 기본 인증 (만 해당)
npm OAuth
NuGet 기본 인증
PyPI 기본 인증
Generic 패키지 기본 인증
Terraform 토큰
Composer OAuth
Conan 1 OAuth, 기본 인증
Conan 2 OAuth, 기본 인증
Helm 기본 인증
Debian 기본 인증
Go 기본 인증
Ruby gems 토큰

지원되는 해시 유형#

해시 값은 올바른 패키지를 사용하고 있는지 확인하는 데 사용됩니다. 사용자 인터페이스 또는 API를 통해 이러한 값을 볼 수 있습니다.

패키지 레지스트리는 다음 해시 유형을 지원합니다:

패키지 유형 지원되는 해시
Maven (mvn 사용) MD5, SHA1
Maven (gradle 사용) MD5, SHA1
Maven (sbt 사용) MD5, SHA1
npm SHA1
NuGet 해당 없음
PyPI MD5, SHA256
Generic 패키지 SHA256
Composer 해당 없음
Conan 1 MD5, SHA1
Conan 2 MD5, SHA1
Helm 해당 없음
Debian MD5, SHA1, SHA256
Go MD5, SHA1, SHA256
Ruby gems MD5, SHA1, SHA256 (gemspec만 해당)

지원되는 패키지 관리자 및 기능

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다. 패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다: API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.

GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 이 지원에는 패키지 게시 및 풀, 요청 전달, 중복 관리, 인증이 포함됩니다.

지원되는 패키지 관리자#

Warning

모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다.

패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다:

패키지 유형 상태
Composer 베타
Conan 1 베타
Conan 2 베타
Debian 실험적
Generic 패키지 일반적으로 사용 가능
Go 실험적
Helm 일반적으로 사용 가능
Maven 일반적으로 사용 가능
npm 일반적으로 사용 가능
NuGet 일반적으로 사용 가능
PyPI 일반적으로 사용 가능
Ruby gems 실험적

각 상태의 의미 보기.

API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.

패키지 게시#

패키지는 프로젝트, 그룹 또는 인스턴스에 게시할 수 있습니다.

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn 사용) 아니오 아니오
Maven (gradle 사용) 아니오 아니오
Maven (sbt 사용) 아니오 아니오 아니오
npm 아니오 아니오
NuGet 아니오 아니오
PyPI 아니오 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오 아니오
Conan 1 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오 아니오
Ruby gems 아니오 아니오

패키지 풀#

패키지는 프로젝트, 그룹 또는 인스턴스에서 풀할 수 있습니다.

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn 사용)
Maven (gradle 사용)
Maven (sbt 사용)
npm
NuGet 아니오
PyPI 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오
Ruby gems 아니오 아니오

요청 전달#

사전 요구사항:

  • GitLab.com에서: 그룹의 Owner여야 합니다.
  • GitLab Self-Managed에서: 관리자여야 합니다.

패키지를 프로젝트의 패키지 레지스트리에서 찾을 수 없는 경우, 패키지 관리자의 해당 공개 레지스트리로 요청이 전달됩니다.

기본 전달 동작은 패키지 유형에 따라 다르며 의존성 혼동 취약점이 발생할 수 있습니다. 아래 표는 패키지 전달을 지원하는 패키지 관리자를 보여줍니다.

관련 보안 위험을 줄이려면:

  • 패키지가 현재 사용 중인지 확인합니다.
  • Git과 같은 버전 관리 도구를 구현하여 패키지 변경 사항을 추적합니다.
  • 요청 전달 해제:
    • 인스턴스 관리자는 관리 영역에서 전달을 비활성화할 수 있습니다. 자세한 내용은 패키지 전달 제어를 참조하세요.
    • 그룹 오너는 그룹 설정에서 패키지 전달을 해제할 수 있습니다.

그룹에 대한 요청 전달을 해제하려면:

  1. 상단 바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
  2. 왼쪽 사이드바에서 설정 > 패키지 및 레지스트리를 선택합니다.
  3. 패키지 전달에서 다음 체크박스 중 하나 또는 둘 다 선택을 취소합니다:
    • npm 패키지 요청 전달
    • PyPI 패키지 요청 전달
  4. 변경 사항 저장을 선택합니다.
패키지 유형 요청 전달 지원 보안 고려사항
Maven (mvn 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
Maven (gradle 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
Maven (sbt 사용) 예 (기본적으로 비활성화) 보안을 위해 명시적 opt-in이 필요합니다.
npm 비공개 패키지의 경우 비활성화를 고려하세요.
PyPI 비공개 패키지의 경우 비활성화를 고려하세요.
NuGet 아니오 아니오
Generic 패키지 아니오 아니오
Terraform 아니오 아니오
Composer 아니오 아니오
Conan 1 아니오 아니오
Conan 2 아니오 아니오
Helm 아니오 아니오
Debian 아니오 아니오
Go 아니오 아니오
Ruby gems 아니오 아니오

패키지 삭제#

패키지 요청이 공개 레지스트리로 전달되는 경우 패키지 삭제는 의존성 혼동 취약점을 유발할 수 있습니다.

시스템이 삭제된 패키지를 풀하려고 시도하면, 요청이 공개 레지스트리로 전달됩니다. 공개 레지스트리에 동일한 이름과 버전의 패키지가 있는 경우, 해당 패키지가 풀됩니다. 레지스트리에서 풀된 패키지는 예상한 것이 아닐 수 있으며 악성일 수 있습니다.

관련 보안 위험을 줄이려면 패키지를 삭제하기 전에:

패키지를 삭제하려면:

다른 리포지터리에서 패키지 가져오기#

패키지 가져오기 도구를 사용하여 GitLab 파이프라인으로 Maven Central 또는 Artifactory와 같은 다른 리포지터리에서 패키지를 가져올 수 있습니다.

패키지 유형 가져오기 사용 가능 여부
Maven (mvn 사용)
Maven (gradle 사용)
Maven (sbt 사용)
npm
NuGet
PyPI
Generic 패키지 아니오
Terraform 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오
Helm 아니오
Debian 아니오
Go 아니오
Ruby gems 아니오

중복 허용 또는 방지#

기본적으로 GitLab 패키지 레지스트리는 해당 특정 패키지 관리자 형식의 기본값에 따라 중복을 허용하거나 방지합니다.

패키지 유형 중복 허용 여부
Maven (mvn 사용) 예 (구성 가능)
Maven (gradle 사용) 예 (구성 가능)
Maven (sbt 사용) 예 (구성 가능)
npm 아니오
NuGet
PyPI 아니오
Generic 패키지 예 (구성 가능)
Terraform 아니오
Composer 아니오
Conan 1 아니오
Conan 2 아니오
Helm
Debian
Go 아니오
Ruby gems

레지스트리 인증#

인증은 사용하는 패키지 관리자에 따라 다릅니다. 특정 패키지 유형에 대해 지원되는 인증 프로토콜을 알아보려면 인증 프로토콜을 참조하세요.

대부분의 패키지 유형의 경우 다음 인증 토큰이 유효합니다:

다음 표에는 주어진 패키지 관리자에 대해 지원되는 인증 토큰이 나열됩니다:

패키지 유형 지원되는 토큰
Maven (mvn 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (gradle 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (sbt 사용) 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
npm 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
NuGet 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
PyPI 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Generic 패키지 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Terraform 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Composer 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Conan 1 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Conan 2 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Helm 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Debian 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Go 퍼스널 액세스, 잡 토큰, 프로젝트 액세스
Ruby gems 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹)
Note

패키지 레지스트리에 대한 인증을 구성할 때:

  • 패키지 레지스트리 프로젝트 설정이 해제된 경우, Owner 권한이 있더라도 패키지 레지스트리와 상호 작용할 때 403 Forbidden 오류가 발생합니다.
  • 외부 인증이 활성화된 경우 배포 토큰으로 패키지 레지스트리에 액세스할 수 없습니다.
  • 조직에서 2단계 인증(2FA)을 사용하는 경우 스코프가 api로 설정된 퍼스널 액세스 토큰을 사용해야 합니다.
  • CI/CD 파이프라인으로 패키지를 게시하는 경우 CI/CD 잡 토큰을 사용해야 합니다.

인증 프로토콜#

히스토리
  • Maven 패키지에 대한 기본 인증이 GitLab 16.0에서 도입되었습니다.

다음 인증 프로토콜이 지원됩니다:

패키지 유형 지원되는 인증 프로토콜
Maven (mvn 사용) 헤더, 기본 인증, OAuth
Maven (gradle 사용) 헤더, 기본 인증, OAuth
Maven (sbt 사용) 기본 인증 (만 해당)
npm OAuth
NuGet 기본 인증
PyPI 기본 인증
Generic 패키지 기본 인증
Terraform 토큰
Composer OAuth
Conan 1 OAuth, 기본 인증
Conan 2 OAuth, 기본 인증
Helm 기본 인증
Debian 기본 인증
Go 기본 인증
Ruby gems 토큰

지원되는 해시 유형#

해시 값은 올바른 패키지를 사용하고 있는지 확인하는 데 사용됩니다. 사용자 인터페이스 또는 API를 통해 이러한 값을 볼 수 있습니다.

패키지 레지스트리는 다음 해시 유형을 지원합니다:

패키지 유형 지원되는 해시
Maven (mvn 사용) MD5, SHA1
Maven (gradle 사용) MD5, SHA1
Maven (sbt 사용) MD5, SHA1
npm SHA1
NuGet 해당 없음
PyPI MD5, SHA256
Generic 패키지 SHA256
Composer 해당 없음
Conan 1 MD5, SHA1
Conan 2 MD5, SHA1
Helm 해당 없음
Debian MD5, SHA1, SHA256
Go MD5, SHA1, SHA256
Ruby gems MD5, SHA1, SHA256 (gemspec만 해당)