지원되는 패키지 기능

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

패키지 발행

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

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

패키지 유형 프로젝트 그룹 인스턴스
Maven (with mvn) Y N N
Maven (with gradle) Y N N
Maven (with sbt) N N N
npm Y N N
NuGet Y N N
PyPI Y N N
일반 패키지 Y N N
Terraform Y N N
Composer N Y N
Conan Y N Y
Helm Y N N
Debian Y N N
Go Y N N
Ruby gems Y N N

패키지 추출

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

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

패키지 유형 프로젝트 그룹 인스턴스
Maven (with mvn) Y Y Y
Maven (with gradle) Y Y Y
Maven (with sbt) Y Y Y
npm Y Y Y
NuGet Y Y N
PyPI Y Y N
일반 패키지 Y N N
Terraform N Y N
Composer Y Y N
Conan Y N Y
Helm Y N N
Debian Y N N
Go Y N Y
Ruby gems Y N N

요청 전달

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

GitLab 프로젝트에 없는 패키지에 대한 요청은 공개 레지스트리로 전달됩니다. 예를 들어, Maven Central, npmjs, 또는 PyPI 등이 있습니다.

패키지 유형 요청 전달 지원
Maven (with mvn) 네 (기본적으로 비활성화됨)
Maven (with gradle) 네 (기본적으로 비활성화됨)
Maven (with sbt) 네 (기본적으로 비활성화됨)
npm
NuGet N
PyPI
일반 패키지 N
Terraform N
Composer N
Conan N
Helm N
Debian N
Go N
Ruby gems N

패키지 삭제

패키지 요청이 공개 레지스트리로 전달되는 경우, 패키지를 삭제하는 것은 의존성 혼란 취약점을 초래할 수 있습니다.

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

관련 보안 위험을 줄이기 위해 패키지를 삭제하기 전에 다음을 수행할 수 있습니다:

  • 해당 패키지가 활발하게 사용되지 않는지 확인합니다.
  • 요청 전달을 비활성화합니다:
    • 인스턴스 관리자는 관리 영역의 연속 통합 섹션에서 전달을 비활성화할 수 있습니다.
    • 그룹 소유자는 그룹 설정의 패키지 및 레지스트리 섹션에서 전달을 비활성화할 수 있습니다.

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

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

패키지 유형 가져오기 도구 이용 가능 여부
Maven (with mvn) Y
Maven (with gradle) Y
Maven (with sbt) Y
npm Y
NuGet Y
PyPI Y
일반 패키지 N
Terraform N
Composer N
Conan N
Helm N
Debian N
Go N
Ruby gems N

중복 허용 또는 방지

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

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

패키지 유형 중복 허용 여부
Maven (with mvn) Y (구성 가능)
Maven (with gradle) Y (구성 가능)
Maven (with sbt) Y (구성 가능)
npm N
NuGet Y
PyPI N
일반 패키지 Y (구성 가능)
Terraform N
Composer N
Conan N
Helm Y
Debian Y
Go N
루비 젬 Y

인증 토큰

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

GitLab 토큰은 GitLab 패키지 레지스트리와의 인증에 사용됩니다.

다음 토큰이 지원됩니다:

패키지 유형 지원되는 토큰
Maven (with mvn) 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (with gradle) 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Maven (with sbt) 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
npm 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
NuGet 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
PyPI 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
일반 패키지 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Terraform 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Composer 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스
Conan 개인 액세스, 작업 토큰, 프로젝트 액세스
Helm 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹)
Debian 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹)
Go 개인 액세스, 작업 토큰, 프로젝트 액세스
루비 젬 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹)

인증 프로토콜

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

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

패키지 유형 지원되는 인증 프로토콜
Maven (with mvn) 헤더, 기본 인증
Maven (with gradle) 헤더, 기본 인증
Maven (with sbt) 기본 인증 (패키지 추출 전용) (1)
npm OAuth
NuGet 기본 인증
PyPI 기본 인증
일반 패키지 기본 인증
Terraform 토큰
Composer OAuth
Conan OAuth, 기본 인증
Helm 기본 인증
Debian 기본 인증
Go 기본 인증
루비 젬 토큰
  1. Maven 패키지에 대한 기본 인증은 GitLab 16.0에서 도입되었습니다.

지원되는 해시 유형

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

해시 값은 올바른 패키지를 사용 중임을 보장하는 데 사용됩니다. 이러한 값을 사용자 인터페이스에서 또는 API로 볼 수 있습니다.

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

패키지 유형 지원되는 해시
Maven (with mvn) MD5, SHA1
Maven (with gradle) MD5, SHA1
Maven (with sbt) MD5, SHA1
npm SHA1
NuGet 해당 없음
PyPI MD5, SHA256
일반 패키지 SHA256
Composer 해당 없음
Conan MD5, SHA1
Helm 해당 없음
Debian MD5, SHA1, SHA256
Go MD5, SHA1, SHA256
루비 젬 MD5, SHA1, SHA256 (gemspec 전용)