[Final] PEP 449 - Removal of the PyPI Mirror Auto Discovery and Naming Scheme

원문 링크: PEP 449 - Removal of the PyPI Mirror Auto Discovery and Naming Scheme

상태: Final 유형: Process 작성일: 04-Aug-2013

PEP 449는 PyPI (Python Package Index) 미러의 자동 검색 및 명명 체계를 제거하기 위한 제안입니다. 이 PEP는 기존 미러링 인프라의 보안 취약점과 현대 PyPI CDN (콘텐츠 전송 네트워크)의 발전으로 인해 더 이상 필요 없게 된 기능을 제거하는 것을 목표로 합니다.

개요 (Abstract)

이 PEP는 PyPI 미러의 자동 검색 기능과 [a..z].pypi.python.org와 같이 타사에 도메인 이름을 위임해야 하는 고정된 명명 체계를 점진적으로 폐지하고 궁극적으로 제거하기 위한 방안을 제시합니다.

배경 (Rationale)

PEP 381에 정의된 PyPI 미러링 인프라는 자동 설치 프로그램이 PyPI 콘텐츠를 미러링하는 수단을 제공했습니다. 또한, 미러의 자동 검색 방법과 일관된 명명 체계를 제공했습니다.

그러나 이러한 자동 검색 프로토콜 및 명명 체계에는 여러 가지 문제가 있었습니다.

  • 보안 취약점: *.python.org 하위 도메인에 대한 제어권을 타사에 넘겨주어, 타사가 pypi.python.orgpython.org 도메인에서 쿠키를 설정하거나 읽을 수 있게 합니다. 또한, pypi.python.org의 하위 도메인을 사용하면 미러 운영자가 자체 SSL/TLS 인증서를 받을 수 없으며, DNS 기반 자동 검색은 인증되지 않은 프로토콜을 사용합니다. 이는 클라이언트가 DNS 스푸핑(poisoning)이나 중간자 공격(MITM attack)에 노출될 수 있다는 의미입니다.
  • 불필요성: PyPI가 현재 사용하는 CDN은 클라이언트의 노력 없이도 자동으로 가장 가까운 서버를 선택하는 전 세계적으로 분산된 네트워크를 사용하므로, 클라이언트가 미러를 자동으로 선택해야 할 필요성이 없어졌습니다.
  • 제한적인 구현 및 성능 문제: 자동 검색 프로토콜과 일관된 명명 체계는 pip이라는 단 하나의 설치 프로그램에 의해서만 구현되었으며, 그마저도 불안정하고 성능 문제가 심각하여 다음 릴리스(1.5)에서 제거될 예정이었습니다.

이러한 심각한 문제들과 CDN 도입으로 인한 자동 검색 및 일관된 명명 체계의 이점 감소로 인해, 이 PEP는 [a..z].pypi.python.org 및 자동 검색 프로토콜에 사용되는 last.pypi.python.org 미러 이름의 폐지 및 제거를 제안합니다. 미러링 기능 자체와 미러 방법은 PEP 381에 따라 계속 유지됩니다. 기존 미러 운영자는 계속해서 미러를 호스팅하려면 자체 도메인과 인증서를 확보하는 것이 권장됩니다.

폐지 및 제거 계획 (Plan for Deprecation & Removal)

이 PEP가 수락되는 즉시, PyPI 문서는 공식 공개 미러의 폐지된 특성을 반영하도록 업데이트되며, 사용자들은 비공식 공개 미러를 찾기 위해 http://www.pypi-mirrors.org/와 같은 외부 리소스로 안내됩니다.

미러 운영자는 미러를 계속 운영하려면 자체 도메인 이름을 확보하고 가능하다면 TLS 인증서를 획득해야 합니다. 도메인을 확보한 후에는 할당된 N.pypi.python.org 도메인 이름을 새 도메인으로 리디렉션해야 합니다.

2014년 2월 15일[a..z].pypi.python.orglast.pypi.python.org에 대한 DNS 항목이 제거되었습니다.

2014년 2월 15일로 정해진 이유

이 PEP의 가장 중요한 결정은 최종 마감일입니다. 너무 이르면 불필요하게 사용자를 불편하게 하고, 너무 늦으면 마이그레이션 노력을 돕지 못하고 단순히 마이그레이션을 미루게 됩니다.

2014년 2월 15일은 PEP 제안일로부터 약 6개월 후이기 때문에, 마감일을 불필요하게 늘리지 않으면서도 사용자들이 배포 절차를 새 도메인 이름으로 업데이트할 수 있는 충분한 시간을 제공하기 위해 선택되었습니다.

DNS 항목을 제거해야 하는 이유

이전에 사용되던 미러 도메인 이름을 PyPI로 되돌려 사용자들이 구성을 업데이트할 필요 없게 하는 것도 가능했지만, 이는 여러 문제를 야기합니다.

  • 보안 위험 증가: 현재 이 이름을 구성에 하드코딩한 모든 사용자는 HTTP로 하드코딩했을 것입니다. 이 이름들이 계속 확인되도록 허용하면 MITM 공격자가 클라이언트에게 HTTPS로의 리디렉션을 재작성하여 사용자를 공격하기 쉽게 만듭니다.
  • 유지보수 오버헤드: PyPI를 가리키는 여러 도메인을 유지하는 오버헤드는 이미 회수된 소수의 N.pypi.python.org 도메인에서 문제가 되는 것으로 입증되었습니다. 서비스 변경 시 종종 잘못 구성되어 몇 달 동안 작동하지 않는 경우가 많았습니다.
  • 사용자 선택권 박탈: 이러한 도메인을 사용하는 사람들은 특정 이유로 이를 명시적으로 선택했습니다. 예를 들어, 특정 국가에 위치한 호스트에서 배포하고 싶지 않은 경우입니다. 이러한 도메인이 계속 확인되지만 기존 위치를 가리키지 않는다면, 기존 사용자들의 이러한 선택권이 소리 없이 제거됩니다.

따라서 DNS 항목을 제거하는 것은 구성 변경을 한 사용자가 마스터(PyPI)로 다시 연결하거나 새로운 미러 이름을 선택하도록 요구하는 불가피한 결정이었습니다. 이는 PyPI 자체와 미러 사용자를 위에서 언급된 공격으로부터 보호하기 위한 조치로 간주됩니다.

공개 또는 비공개 미러 (Public or Private Mirrors)

미러링 프로토콜은 PEP 381에 정의된 대로 계속 존재하며, 사람들은 원하는 경우 공개 및 비공개 미러를 호스팅하는 것이 권장됩니다. 권장되는 미러링 클라이언트는 Bandersnatch입니다.

⚠️ 알림: 이 문서는 AI를 활용하여 번역되었으며, 기술적 정확성을 보장하지 않습니다. 정확한 내용은 반드시 원문을 확인하시기 바랍니다.

Comments