GitHub introduces staged publishing and new install-time controls for NPM
GitHub에서 npm에 '단계별 게시(Staged publishing)' 기능과 새로운 설치 시간 제어 플래그를 도입하여 공급망 보안을 강화했습니다.
**무엇이 일어났는지**
npm에 '단계별 게시' 기능이 일반화되어, 패키지가 레지스트리에 즉시 공개되기 전에 유지보수자가 명시적으로 승인할 수 있는 스테이지 큐(stage queue)를 거치게 되었습니다. 또한, `--allow-file`, `--allow-remote`, `--allow-directory`와 같은 새로운 설치 소스 플래그가 추가되어 설치 시 명시적인 허용 목록(allowlist) 접근 방식을 적용할 수 있게 되었습니다.
**왜 중요한지**
이는 CI/CD 워크플로우와 같은 비대화형 환경에서도 패키지 게시 과정에 인간 유지보수의 승인(2FA 요구)을 추가하여 공급망 보안을 강화합니다. 개발자는 `npm publish` 대신 `npm stage publish`를 사용하도록 CI/CD 워크플로우를 업데이트해야 하며, 설치 시에는 `--allow-*` 플래그를 사용하여 의존성 해결에 대한 명시적인 제어를 할 수 있습니다.
**주의할 점 또는 맥락**
단계별 게시를 위해서는 신뢰할 수 있는 게시(Trusted publishing, OIDC)와 함께 사용하는 것을 권장하며, CI/CD 환경에서는 스테이지 큐에 게시한 후 유지보수자가 승인하는 흐름이 가장 권장됩니다. 또한, `--allow-git` 플래그의 기본값이 향후 버전에서 변경될 예정이므로, 새로운 설치 플래그를 활용하여 보안 정책을 설정하는 것이 중요합니다.
**무엇이 일어났는지**
npm에 '단계별 게시' 기능이 일반화되어, 패키지가 레지스트리에 즉시 공개되기 전에 유지보수자가 명시적으로 승인할 수 있는 스테이지 큐(stage queue)를 거치게 되었습니다. 또한, `--allow-file`, `--allow-remote`, `--allow-directory`와 같은 새로운 설치 소스 플래그가 추가되어 설치 시 명시적인 허용 목록(allowlist) 접근 방식을 적용할 수 있게 되었습니다.
**왜 중요한지**
이는 CI/CD 워크플로우와 같은 비대화형 환경에서도 패키지 게시 과정에 인간 유지보수의 승인(2FA 요구)을 추가하여 공급망 보안을 강화합니다. 개발자는 `npm publish` 대신 `npm stage publish`를 사용하도록 CI/CD 워크플로우를 업데이트해야 하며, 설치 시에는 `--allow-*` 플래그를 사용하여 의존성 해결에 대한 명시적인 제어를 할 수 있습니다.
**주의할 점 또는 맥락**
단계별 게시를 위해서는 신뢰할 수 있는 게시(Trusted publishing, OIDC)와 함께 사용하는 것을 권장하며, CI/CD 환경에서는 스테이지 큐에 게시한 후 유지보수자가 승인하는 흐름이 가장 권장됩니다. 또한, `--allow-git` 플래그의 기본값이 향후 버전에서 변경될 예정이므로, 새로운 설치 플래그를 활용하여 보안 정책을 설정하는 것이 중요합니다.