보호된 패키지
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
기본적으로 Developer, Maintainer 또는 Owner 권한을 가진 사용자는 패키지를 생성, 편집 및 삭제할 수 있습니다. GitLab은 npm, PyPI, Maven 및 Conan 패키지에 대한 패키지 보호를 지원하지만 에픽 5574에서는 추가 기능 및 패키지 형식을 추가할 것을 제안합니다.
히스토리
- GitLab 16.5에서
packages_protected_packages라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 17.1에서 보호 규칙 설정 Push protected up to access level이 Minimum access level for push로 이름 변경됨.
- GitLab 17.6에서 일반 제공. 기능 플래그
packages_protected_packages제거. - GitLab 17.6에서 Conan 보호 패키지가
packages_protected_packages_conan이라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 17.9에서 Maven 보호 패키지가
packages_protected_packages_maven이라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 17.10에서
packages_protected_packages_delete라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 17.11에서 Maven 보호 패키지가 일반 제공됨. 기능 플래그
packages_protected_packages_maven제거. - GitLab 17.11에서 Conan 보호 패키지가 일반 제공됨. 기능 플래그
packages_protected_packages_conan제거. - GitLab 18.0에서 NuGet 보호 패키지가
packages_protected_packages_nuget이라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 18.1에서 보호된 Helm 차트가
packages_protected_packages_helm이라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 18.1에서 일반 보호 패키지가
packages_protected_packages_generic이라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. 이 기능은 실험입니다. - GitLab 18.2에서 일반 보호 패키지가 일반 제공됨. 기능 플래그
packages_protected_packages_generic제거. - GitLab 18.2에서 NuGet 보호 패키지가 일반 제공됨. 기능 플래그
packages_protected_packages_nuget제거. - GitLab 18.3에서 Helm 보호 패키지가 일반 제공됨. 기능 플래그
packages_protected_packages_helm제거.
기본적으로 Developer, Maintainer 또는 Owner 권한을 가진 사용자는 패키지를 생성, 편집 및 삭제할 수 있습니다. 패키지 보호 규칙을 추가하여 패키지 변경 가능한 사용자를 제한합니다.
GitLab은 npm, PyPI, Maven 및 Conan 패키지에 대한 패키지 보호를 지원하지만 에픽 5574에서는 추가 기능 및 패키지 형식을 추가할 것을 제안합니다.
패키지가 보호되면 기본 동작은 패키지에 대해 다음 제한을 적용합니다:
| 액션 | 최소 권한 또는 토큰 |
|---|---|
| 패키지 보호 | Maintainer 또는 Owner 권한. |
| 새 패키지 푸시 | Minimum access level for push에 설정된 최소 권한 이상. |
| 배포 토큰으로 새 패키지 푸시 | 유효한 배포 토큰. 단, 푸시된 패키지가 보호 규칙과 일치하지 않는 경우에만. 보호된 패키지는 배포 토큰으로 푸시할 수 없습니다. |
| 패키지 삭제 | Minimum access level for delete에 설정된 최소 권한 이상. |
패키지 보호#
히스토리
- GitLab 16.9에서 도입됨.
사전 요구 사항:
- Maintainer 또는 Owner 권한이 있어야 합니다.
패키지를 보호하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Packages and registries를 선택합니다.
- Package registry를 확장합니다.
- Protected packages 아래에서 Add protection rule을 선택합니다.
- 필드를 완성합니다:
- Name pattern은 보호하려는 패키지 이름 패턴입니다. 패턴에는 와일드카드(
*)를 포함할 수 있습니다. - Package type은 보호할 패키지 유형입니다.
- Minimum access level for push는 이름 패턴과 일치하는 패키지를 푸시하는 데 필요한 최소 권한입니다.
- Minimum access level for delete는 이름 패턴과 일치하는 패키지를 삭제하는 데 필요한 최소 권한입니다.
- Name pattern은 보호하려는 패키지 이름 패턴입니다. 패턴에는 와일드카드(
- Protect를 선택합니다.
패키지 보호 규칙이 생성되고 설정에 표시됩니다.
여러 패키지 보호#
와일드카드를 사용하여 동일한 패키지 보호 규칙으로 여러 패키지를 보호할 수 있습니다. 예를 들어 CI/CD 파이프라인 중에 빌드된 모든 임시 패키지를 보호할 수 있습니다.
다음 표에는 여러 패키지와 일치하는 패키지 보호 규칙의 예시가 포함되어 있습니다:
| 와일드카드가 있는 패키지 이름 패턴 | 일치하는 패키지 |
|---|---|
@group/package-* |
@group/package-prod, @group/package-prod-sha123456789 |
@group/*package |
@group/package, @group/prod-package, @group/prod-sha123456789-package |
@group/*package* |
@group/package, @group/prod-sha123456789-package-v1 |
동일한 패키지에 여러 보호 규칙을 적용할 수 있습니다. 패키지에 보호 규칙이 하나 이상 적용되면 패키지가 보호됩니다.
패키지 보호 규칙 삭제 및 패키지 보호 해제#
히스토리
- GitLab 16.10에서 도입됨.
사전 요구 사항:
- Maintainer 또는 Owner 권한이 있어야 합니다.
패키지 보호를 해제하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Packages and registries를 선택합니다.
- Package registry를 확장합니다.
- Protected packages 아래에서 삭제하려는 보호 규칙 옆의 Delete ([remove])를 선택합니다.
- 확인 대화 상자에서 Delete를 선택합니다.
패키지 보호 규칙이 삭제되고 설정에 표시되지 않습니다.
