지원되는 패키지 기능

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이나 패키지 가져오기 도구와 같은 다른 리포지터리에서 패키지를 가져올 수 있습니다.

패키지 유형 Importer 사용 가능?
Maven (mvn 사용) Y
Maven (gradle 사용) Y
Maven (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 (mvn 사용) Y (구성 가능)
Maven (gradle 사용) Y (구성 가능)
Maven (sbt 사용) Y (구성 가능)
npm N
NuGet Y
PyPI N
일반 패키지 Y (구성 가능)
Terraform N
Composer N
Conan N
Helm Y
Debian Y
Go N
Ruby gems Y

인증 토큰

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

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

다음 토큰이 지원됩니다:

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

인증 프로토콜

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

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

패키지 유형 지원되는 인증 프로토콜
Maven (mvn 사용) 헤더, 기본 인증
Maven (gradle 사용) 헤더, 기본 인증
Maven (sbt 사용) 기본 인증 (패키지 가져오기만) (1)
npm OAuth
NuGet 기본 인증
PyPI 기본 인증
일반 패키지 기본 인증
Terraform 토큰
Composer OAuth
Conan OAuth, 기본 인증
Helm 기본 인증
Debian 기본 인증
Go 기본 인증
Ruby gems 토큰
  1. Maven 패키지용 기본 인증은 GitLab 16.0에서 도입되었습니다.

지원되는 해시 유형

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

해시 값은 올바른 패키지를 사용하고 있는지를 보장하기 위해 사용됩니다. 이러한 값들은 사용자 인터페이스에서 또는 API를 통해 볼 수 있습니다.

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

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