지원되는 패키지 관리자 및 기능
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다. 패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다: API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.
GitLab 패키지 레지스트리는 각 패키지 유형에 대해 다양한 기능을 지원합니다. 이 지원에는 패키지 게시 및 풀, 요청 전달, 중복 관리, 인증이 포함됩니다.
지원되는 패키지 관리자#
모든 패키지 관리자 형식이 프로덕션 사용에 준비된 것은 아닙니다.
패키지 레지스트리는 다음 패키지 관리자 유형을 지원합니다:
| 패키지 유형 | 상태 |
|---|---|
| Composer | 베타 |
| Conan 1 | 베타 |
| Conan 2 | 베타 |
| Debian | 실험적 |
| Generic 패키지 | 일반적으로 사용 가능 |
| Go | 실험적 |
| Helm | 일반적으로 사용 가능 |
| Maven | 일반적으로 사용 가능 |
| npm | 일반적으로 사용 가능 |
| NuGet | 일반적으로 사용 가능 |
| PyPI | 일반적으로 사용 가능 |
| Ruby gems | 실험적 |
API를 사용하여 패키지 레지스트리를 관리할 수도 있습니다.
패키지 게시#
패키지는 프로젝트, 그룹 또는 인스턴스에 게시할 수 있습니다.
| 패키지 유형 | 프로젝트 | 그룹 | 인스턴스 |
|---|---|---|---|
Maven (mvn 사용) |
예 | 아니오 | 아니오 |
Maven (gradle 사용) |
예 | 아니오 | 아니오 |
Maven (sbt 사용) |
아니오 | 아니오 | 아니오 |
| npm | 예 | 아니오 | 아니오 |
| NuGet | 예 | 아니오 | 아니오 |
| PyPI | 예 | 아니오 | 아니오 |
| Generic 패키지 | 예 | 아니오 | 아니오 |
| Terraform | 예 | 아니오 | 아니오 |
| Composer | 아니오 | 예 | 아니오 |
| Conan 1 | 예 | 아니오 | 예 |
| Conan 2 | 예 | 아니오 | 아니오 |
| Helm | 예 | 아니오 | 아니오 |
| Debian | 예 | 아니오 | 아니오 |
| Go | 예 | 아니오 | 아니오 |
| Ruby gems | 예 | 아니오 | 아니오 |
패키지 풀#
패키지는 프로젝트, 그룹 또는 인스턴스에서 풀할 수 있습니다.
| 패키지 유형 | 프로젝트 | 그룹 | 인스턴스 |
|---|---|---|---|
Maven (mvn 사용) |
예 | 예 | 예 |
Maven (gradle 사용) |
예 | 예 | 예 |
Maven (sbt 사용) |
예 | 예 | 예 |
| npm | 예 | 예 | 예 |
| NuGet | 예 | 예 | 아니오 |
| PyPI | 예 | 예 | 아니오 |
| Generic 패키지 | 예 | 아니오 | 아니오 |
| Terraform | 아니오 | 예 | 아니오 |
| Composer | 예 | 예 | 아니오 |
| Conan 1 | 예 | 아니오 | 예 |
| Conan 2 | 예 | 아니오 | 아니오 |
| Helm | 예 | 아니오 | 아니오 |
| Debian | 예 | 아니오 | 아니오 |
| Go | 예 | 아니오 | 예 |
| Ruby gems | 예 | 아니오 | 아니오 |
요청 전달#
사전 요구사항:
- GitLab.com에서: 그룹의 Owner여야 합니다.
- GitLab Self-Managed에서: 관리자여야 합니다.
패키지를 프로젝트의 패키지 레지스트리에서 찾을 수 없는 경우, 패키지 관리자의 해당 공개 레지스트리로 요청이 전달됩니다.
기본 전달 동작은 패키지 유형에 따라 다르며 의존성 혼동 취약점이 발생할 수 있습니다. 아래 표는 패키지 전달을 지원하는 패키지 관리자를 보여줍니다.
관련 보안 위험을 줄이려면:
- 패키지가 현재 사용 중인지 확인합니다.
- Git과 같은 버전 관리 도구를 구현하여 패키지 변경 사항을 추적합니다.
- 요청 전달 해제:
- 인스턴스 관리자는 관리 영역에서 전달을 비활성화할 수 있습니다. 자세한 내용은 패키지 전달 제어를 참조하세요.
- 그룹 오너는 그룹 설정에서 패키지 전달을 해제할 수 있습니다.
그룹에 대한 요청 전달을 해제하려면:
- 상단 바에서 검색 또는 이동을 선택하고 그룹을 찾습니다.
- 왼쪽 사이드바에서 설정 > 패키지 및 레지스트리를 선택합니다.
- 패키지 전달에서 다음 체크박스 중 하나 또는 둘 다 선택을 취소합니다:
- npm 패키지 요청 전달
- PyPI 패키지 요청 전달
- 변경 사항 저장을 선택합니다.
| 패키지 유형 | 요청 전달 지원 | 보안 고려사항 |
|---|---|---|
Maven (mvn 사용) |
예 (기본적으로 비활성화) | 보안을 위해 명시적 opt-in이 필요합니다. |
Maven (gradle 사용) |
예 (기본적으로 비활성화) | 보안을 위해 명시적 opt-in이 필요합니다. |
Maven (sbt 사용) |
예 (기본적으로 비활성화) | 보안을 위해 명시적 opt-in이 필요합니다. |
| npm | 예 | 비공개 패키지의 경우 비활성화를 고려하세요. |
| PyPI | 예 | 비공개 패키지의 경우 비활성화를 고려하세요. |
| NuGet | 아니오 | 아니오 |
| Generic 패키지 | 아니오 | 아니오 |
| Terraform | 아니오 | 아니오 |
| Composer | 아니오 | 아니오 |
| Conan 1 | 아니오 | 아니오 |
| Conan 2 | 아니오 | 아니오 |
| Helm | 아니오 | 아니오 |
| Debian | 아니오 | 아니오 |
| Go | 아니오 | 아니오 |
| Ruby gems | 아니오 | 아니오 |
패키지 삭제#
패키지 요청이 공개 레지스트리로 전달되는 경우 패키지 삭제는 의존성 혼동 취약점을 유발할 수 있습니다.
시스템이 삭제된 패키지를 풀하려고 시도하면, 요청이 공개 레지스트리로 전달됩니다. 공개 레지스트리에 동일한 이름과 버전의 패키지가 있는 경우, 해당 패키지가 풀됩니다. 레지스트리에서 풀된 패키지는 예상한 것이 아닐 수 있으며 악성일 수 있습니다.
관련 보안 위험을 줄이려면 패키지를 삭제하기 전에:
- 패키지가 현재 사용 중인지 확인합니다.
- 요청 전달을 비활성화합니다.
패키지를 삭제하려면:
다른 리포지터리에서 패키지 가져오기#
패키지 가져오기 도구를 사용하여 GitLab 파이프라인으로 Maven Central 또는 Artifactory와 같은 다른 리포지터리에서 패키지를 가져올 수 있습니다.
| 패키지 유형 | 가져오기 사용 가능 여부 |
|---|---|
Maven (mvn 사용) |
예 |
Maven (gradle 사용) |
예 |
Maven (sbt 사용) |
예 |
| npm | 예 |
| NuGet | 예 |
| PyPI | 예 |
| Generic 패키지 | 아니오 |
| Terraform | 아니오 |
| Composer | 아니오 |
| Conan 1 | 아니오 |
| Conan 2 | 아니오 |
| Helm | 아니오 |
| Debian | 아니오 |
| Go | 아니오 |
| Ruby gems | 아니오 |
중복 허용 또는 방지#
기본적으로 GitLab 패키지 레지스트리는 해당 특정 패키지 관리자 형식의 기본값에 따라 중복을 허용하거나 방지합니다.
| 패키지 유형 | 중복 허용 여부 |
|---|---|
Maven (mvn 사용) |
예 (구성 가능) |
Maven (gradle 사용) |
예 (구성 가능) |
Maven (sbt 사용) |
예 (구성 가능) |
| npm | 아니오 |
| NuGet | 예 |
| PyPI | 아니오 |
| Generic 패키지 | 예 (구성 가능) |
| Terraform | 아니오 |
| Composer | 아니오 |
| Conan 1 | 아니오 |
| Conan 2 | 아니오 |
| Helm | 예 |
| Debian | 예 |
| Go | 아니오 |
| Ruby gems | 예 |
레지스트리 인증#
인증은 사용하는 패키지 관리자에 따라 다릅니다. 특정 패키지 유형에 대해 지원되는 인증 프로토콜을 알아보려면 인증 프로토콜을 참조하세요.
대부분의 패키지 유형의 경우 다음 인증 토큰이 유효합니다:
다음 표에는 주어진 패키지 관리자에 대해 지원되는 인증 토큰이 나열됩니다:
| 패키지 유형 | 지원되는 토큰 |
|---|---|
Maven (mvn 사용) |
퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
Maven (gradle 사용) |
퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
Maven (sbt 사용) |
퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| npm | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| NuGet | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| PyPI | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| Generic 패키지 | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| Terraform | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| Composer | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹), 프로젝트 액세스 |
| Conan 1 | 퍼스널 액세스, 잡 토큰, 프로젝트 액세스 |
| Conan 2 | 퍼스널 액세스, 잡 토큰, 프로젝트 액세스 |
| Helm | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹) |
| Debian | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹) |
| Go | 퍼스널 액세스, 잡 토큰, 프로젝트 액세스 |
| Ruby gems | 퍼스널 액세스, 잡 토큰, 배포 (프로젝트 또는 그룹) |
패키지 레지스트리에 대한 인증을 구성할 때:
인증 프로토콜#
히스토리
- Maven 패키지에 대한 기본 인증이 GitLab 16.0에서 도입되었습니다.
다음 인증 프로토콜이 지원됩니다:
| 패키지 유형 | 지원되는 인증 프로토콜 |
|---|---|
Maven (mvn 사용) |
헤더, 기본 인증, OAuth |
Maven (gradle 사용) |
헤더, 기본 인증, OAuth |
Maven (sbt 사용) |
기본 인증 (풀만 해당) |
| npm | OAuth |
| NuGet | 기본 인증 |
| PyPI | 기본 인증 |
| Generic 패키지 | 기본 인증 |
| Terraform | 토큰 |
| Composer | OAuth |
| Conan 1 | OAuth, 기본 인증 |
| Conan 2 | OAuth, 기본 인증 |
| Helm | 기본 인증 |
| Debian | 기본 인증 |
| Go | 기본 인증 |
| Ruby gems | 토큰 |
지원되는 해시 유형#
해시 값은 올바른 패키지를 사용하고 있는지 확인하는 데 사용됩니다. 사용자 인터페이스 또는 API를 통해 이러한 값을 볼 수 있습니다.
패키지 레지스트리는 다음 해시 유형을 지원합니다:
| 패키지 유형 | 지원되는 해시 |
|---|---|
Maven (mvn 사용) |
MD5, SHA1 |
Maven (gradle 사용) |
MD5, SHA1 |
Maven (sbt 사용) |
MD5, SHA1 |
| npm | SHA1 |
| NuGet | 해당 없음 |
| PyPI | MD5, SHA256 |
| Generic 패키지 | SHA256 |
| Composer | 해당 없음 |
| Conan 1 | MD5, SHA1 |
| Conan 2 | MD5, SHA1 |
| Helm | 해당 없음 |
| Debian | MD5, SHA1, SHA256 |
| Go | MD5, SHA1, SHA256 |
| Ruby gems | MD5, SHA1, SHA256 (gemspec만 해당) |
