지원되는 패키지 기능

GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다른 기능을 지원합니다. 이 지원은 패키지를 게시하고 가져오는 것, 요청을 전달하는 것, 중복을 관리하는 것 및 인증을 포함합니다.

패키지 게시

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

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

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn으로) Y N N
Maven (gradle로) Y N N
Maven (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
헬름 Y N N
Debian Y N N
Go Y N N
루비 젬 Y N N

패키지 가져오기

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

프로젝트, 그룹 또는 인스턴스에서 패키지를 가져올 수 있습니다.

패키지 유형 프로젝트 그룹 인스턴스
Maven (mvn으로) Y Y Y
Maven (gradle로) Y Y Y
Maven (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
헬름 Y N N
Debian Y N N
Go Y N Y
루비 젬 Y N N

요청 전달

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

GitLab 프로젝트에서 찾을 수 없는 패키지에 대한 요청은 공개 레지스트리로 전달됩니다. 예를 들어 Maven Central, npmjs 또는 PyPI와 같은 곳입니다.

패키지 유형 요청 전달 지원
Maven (mvn으로) 예 (기본값은 비활성화)
Maven (gradle로) 예 (기본값은 비활성화)
Maven (sbt으로) 예 (기본값은 비활성화)
npm
NuGet N
PyPI
일반 패키지 N
Terraform N
Composer N
Conan N
헬름 N
Debian N
Go N
루비 젬 N

패키지 삭제

패키지 요청이 공개 레지스트리로 전달되었을 때 패키지를 삭제하면 의존성 혼란 취약점이 발생할 수 있습니다.

시스템이 삭제된 패키지를 가져오려고 시도하면 요청이 공개 레지스트리로 전달됩니다. 공개 레지스트리에서 동일한 이름과 버전의 패키지가 발견되면 해당 패키지가 대신 가져와집니다. 레지스트리에서 가져온 패키지가 예상한 것과 다를 수 있고 심지어 악의적일 수도 있습니다.

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

  • 패키지가 활발하게 사용되고 있지 않은지 확인합니다.
  • 요청 전달을 비활성화합니다:
    • 인스턴스 관리자는 관리 영역의 Continuous Integration 섹션에서 전달을 비활성화할 수 있습니다.
    • 그룹 소유자는 그룹 설정의 Packages and Registries 섹션에서 전달을 비활성화할 수 있습니다.

다른 저장소에서 패키지 가져오기

GitLab 파이프라인을 사용하여 Maven Central 또는 Artifactory와 같은 다른 저장소에서 패키지를 가져올 수 있습니다. 패키지 가져오기 도구를 사용하세요.

패키지 유형 가져오기 도구 이용 가능 여부
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
루비 젬 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
루비 젬 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 개인 액세스, 작업 토큰, 프로젝트 액세스
루비 젬 개인 액세스, 작업 토큰, 배포 (프로젝트 또는 그룹)

인증 프로토콜

세부 정보: 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 전용)