지원되는 패키지 기능
GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다른 기능을 지원합니다. 이 지원은 패키지를 게시하고 가져오는 것, 요청을 전달하는 것, 중복을 관리하는 것 및 인증을 포함합니다.
패키지 게시
프로젝트, 그룹 또는 인스턴스에 패키지를 게시할 수 있습니다.
패키지 유형 | 프로젝트 | 그룹 | 인스턴스 |
---|---|---|---|
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 |
패키지 가져오기
프로젝트, 그룹 또는 인스턴스에서 패키지를 가져올 수 있습니다.
패키지 유형 | 프로젝트 | 그룹 | 인스턴스 |
---|---|---|---|
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 |
요청 전달
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 |
중복 허용 또는 방지
기본적으로 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 |
인증 토큰
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 | 토큰 |
- 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 전용) |