지원되는 패키지 기능
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 |
Helm | Y | N | N |
Debian | Y | N | N |
Go | Y | N | N |
Ruby gems | 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 |
Helm | Y | N | N |
Debian | Y | N | N |
Go | Y | N | Y |
Ruby gems | 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 |
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 | 기본 인증 |
루비 젬 | 토큰 |
- Maven 패키지의 기본 인증은 GitLab 16.0에서 도입되었습니다.
지원되는 해시 유형
해시 값은 올바른 패키지를 사용하는지 확인하는 데 사용됩니다. 이러한 값을 사용자 인터페이스에서 확인하거나 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만 해당) |