
AWS CodeArtifact와 커스텀 프록시로 구현한 철통 보안 파이썬 패키지 관리 전략
최근 빈번해진 PyPI 공급망 공격에 대응하기 위해 당근 Python 챕터가 도입한 '디펜던시 쿨다운' 전략을 소개합니다. 단순한 프록시 서버를 넘어, PEP 691 표준을 활용해 악성 패키지가 생태계에서 검증될 시간을 벌어주는 기술적 구현 노하우를 담고 있습니다.
오픈소스 의존성 관리가 중요한 보안 요구사항인 팀에게 강력 추천합니다. 특히 다수의 개발자가 다양한 환경에서 PyPI를 이용한다면, 개별 클라이언트 설정에 의존하기보다 당근의 사례처럼 프록시 계층에서 일괄적인 보안 정책을 적용하는 것이 훨씬 효율적이고 안전한 선택이 될 것입니다.
LiteLLM 사례와 같이 악성 코드가 포함된 패키지가 PyPI에 업로드된 후 격리되기 전까지의 짧은 노출 시간 동안 사용자가 이를 설치하게 되는 공급망 공격 위험이 존재한다. 또한, AWS CodeArtifact를 직접 사용할 경우 모든 환경에서 복잡한 인증 과정을 거치고 토큰을 주기적으로 갱신해야 하는 운영상의 번거로움이 있다.
AWS CodeArtifact 앞에 씬(Thin) 프록시 레이어를 구축하여 인증을 자동화하고, PEP 691 JSON API를 활용해 패키지의 업로드 시간을 확인하여 최신 패키지 설치를 유예하는 '쿨다운(Cooldown)' 정책을 도입했다. 이 정책은 Central Dogma를 통해 실시간으로 활성화 여부와 대상 패키지를 동적으로 관리할 수 있도록 설계되었다.
쿨다운 정책 도입 이후 실제로 발생한 PyTorch Lightning 공급망 공격 시도에서 악성 버전의 다운로드를 프록시 단에서 성공적으로 차단하는 성과를 거두었다. 또한 전사적으로 일관된 보안 정책을 강제할 수 있게 되었으며, 개발자들은 복잡한 설정 없이도 안전하게 패키지를 설치할 수 있게 되었다.
Trade-off
긴급한 보안 패치나 버그 수정 버전도 쿨다운 정책에 의해 배포가 지연될 수 있으므로 수동으로 예외 목록을 관리해야 하는 운영 비용이 발생한다. 또한 정책 도입 이전에 이미 업로드된 기존 악성 패키지에 대해서는 대응이 어렵다는 한계가 존재한다.
소프트웨어의 개발, 배포, 업데이트 과정에 악성 코드를 삽입하여 해당 소프트웨어를 사용하는 최종 사용자에게 피해를 입히는 공격 방식이다.
새로 배포된 패키지 버전을 즉시 신뢰하지 않고, 보안 검토나 커뮤니티의 검증이 이루어질 때까지 일정 기간 설치를 유예하는 보안 전략이다.
기존의 HTML 기반(PEP 503) Simple API를 보완하기 위해 정의된 JSON 기반의 파이썬 패키지 인덱스 표준 인터페이스이다.




