지원되는 패키지 기능

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
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 (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
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 (mvn 사용) 예 (기본값으로 비활성화)
Maven (gradle 사용) 예 (기본값으로 비활성화)
Maven (sbt 사용) 예 (기본값으로 비활성화)
npm
NuGet N
PyPI
일반 패키지 N
Terraform N
Composer N
Conan N
Helm N
Debian N
Go N
Ruby gems N

패키지 삭제

패키지 요청이 공개 레지스트리로 전달될 때, 패키지를 삭제하는 것은 의존성 혼란 취약성으로 이어질 수 있습니다.

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

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

  • 패키지가 활발하게 사용되지 않는지 확인하세요.
  • 요청 전달을 비활성화하세요:
    • 인스턴스 관리자는 Admin 영역의 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
데비안 N
Go N
루비 젬 N

중복 허용 또는 방지하기

자세한 내용: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

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

패키지 유형 중복 허용?
Maven (mvn 사용) Y (configurable)
Maven (gradle 사용) Y (configurable)
Maven (sbt 사용) Y (configurable)
npm N
NuGet Y
PyPI N
일반적인 패키지 Y (configurable)
Terraform N
Composer N
Conan N
Helm Y
데비안 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 개인 액세스, 작업 토큰, 배포(프로젝트 또는 그룹)
데비안 개인 액세스, 작업 토큰, 배포(프로젝트 또는 그룹)
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 기본 인증
데비안 기본 인증
Go 기본 인증
루비 젬 토큰
  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만 해당)