Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 449 – PyPI 미러 자동 검색 및 명명 체계의 제거

Author:
Donald Stufft <donald at stufft.io>
BDFL-Delegate:
Richard Jones <richard at python.org>
Discussions-To:
Distutils-SIG list
Status:
Final
Type:
Process
Topic:
Packaging
Created:
04-Aug-2013
Post-History:
04-Aug-2013
Replaces:
381
Resolution:
Distutils-SIG message

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 PyPI 미러의 자동 검색과 pypi.python.org 아래의 도메인 이름을 제3자에게 위임해야 하는 하드코딩된 명명 체계를 폐기하고 궁극적으로 제거하기 위한 경로를 제공합니다.

근거

PyPI 미러링 인프라(PEP 381에 정의됨)는 자동 설치 프로그램에서 사용하는 PyPI 콘텐츠를 미러링할 수 있는 수단을 제공합니다. 또한 미러를 자동 검색하는 방법과 일관된 명명 체계를 제공합니다.

자동 검색 프로토콜과 명명 체계에는 여러 문제가 있습니다.

  • 이들은 *.python.org 도메인 이름에 대한 제어권을 제3자에게 부여하여, 해당 제3자가 pypi.python.org 및 python.org 도메인 이름에서 쿠키를 설정하거나 읽을 수 있도록 합니다.
  • pypi.python.org의 하위 도메인을 사용한다는 것은 미러 운영자가 자신의 SSL 인증서를 발급받을 수 없음을 의미하며, 이들에게 python.org 도메인 이름용 인증서를 제공하는 일도 일어날 가능성이 낮습니다.
  • 자동 검색은 인증되지 않은 프로토콜(DNS)을 사용합니다.
  • 이러한 도메인에 TLS 인증서가 없으므로 클라이언트는 자신이 DNS 포이즈닝이나 MITM 공격의 피해자가 되지 않았다고 확신할 수 없습니다.
  • 자동 검색 프로토콜은 클라이언트가 사용할 미러를 자동으로 선택할 수 있도록 설계되었습니다. 그러나 PyPI가 현재 전 세계에 분산된 서버 네트워크를 사용하는 CDN을 통해 클라이언트의 추가 노력 없이 클라이언트와 가까운 서버를 자동으로 선택하므로, 이는 더 이상 요구 사항이 아닙니다.
  • 자동 검색 프로토콜과 일관된 명명 체계의 사용은 지금까지 하나의 설치 프로그램(pip)에서만 구현되었으며, 그 구현은 안전하지 않을 뿐 아니라 성능에도 심각한 문제가 있어 다음 릴리스(1.5)에서 제거될 예정입니다.
  • 관련 PEP 381에는 전용 클라이언트에서 이러한 문제 중 일부를 해결할 수 있는 조항이 있지만, 사용자 브라우저에 영향을 미치는 문제는 해결하지 못합니다. 또한 현재까지 이러한 조항을 구현한 설치 프로그램은 없습니다.

문제의 수가 많고 그중 일부는 매우 심각하며, 자동 검색과 일관된 명명 체계의 이점 대부분을 제공하는 CDN이 있으므로, 이 PEP는 먼저 미러용 [a..z].pypi.python.org 이름과 자동 검색 프로토콜용 last.pypi.python.org 이름을 폐기하고 이후 제거할 것을 제안합니다. 미러링 기능과 미러링 방법에는 영향이 없으며, PEP 381에 작성된 대로 계속 존재합니다. 기존 미러 운영자는 미러를 계속 호스팅하려는 경우 미러에 사용할 자체 도메인과 인증서를 확보할 것을 권장합니다.

폐기 및 제거 계획

이 PEP가 승인되는 즉시 PyPI의 문서는 공식 공개 미러가 더 이상 사용되지 않음을 반영하도록 업데이트되며, 사용자가 비공식 공개 미러를 찾을 수 있도록 http://www.pypi-mirrors.org/ 같은 외부 리소스로 안내합니다.

미러 운영자가 미러를 계속 운영하려는 경우 미러를 나타내는 도메인 이름을 확보해야 하며, 가능하다면 TLS 인증서도 확보해야 합니다. 도메인을 확보한 후에는 할당된 N.pypi.python.org 도메인 이름을 새 도메인으로 리디렉션해야 합니다. 2014년 2월 15일에 [a..z].pypi.python.org 및 last.pypi.python.org의 DNS 항목이 제거됩니다. 2014년 2월 15일 이전에는 언제든지 미러 운영자가 자신의 도메인 이름을 PyPI가 회수하여 마스터로 다시 지정하도록 요청할 수 있습니다.

2014년 2월 15일인 이유

이 PEP에서 가장 중요한 결정은 최종 중단 날짜입니다. 날짜가 너무 이르면 사람들에게 모든 일을 제쳐 두고 배포 스크립트를 업데이트하도록 강요하여 불필요하게 불이익을 줍니다. 날짜가 너무 늦으면 긴 기간이 마이그레이션 작업에 도움이 되지 않고 단지 마이그레이션을 나중으로 미루게 할 뿐입니다.

2014년 2월 15일이라는 날짜는 이 PEP의 날짜로부터 대략 6개월 후이기 때문에 선택되었습니다. 이는 중단 날짜를 단순히 늦추지 않으면서 사람들이 새 도메인 이름을 가리키도록 배포 절차를 업데이트할 수 있는 충분히 긴 기간을 보장해야 합니다.

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

미러에서 사용되던 도메인 이름을 그대로 회수하여 다시 PyPI로 향하게 함으로써 사용자들이 해당 도메인에서 벗어나도록 설정을 변경할 필요가 없게 만드는 것도 가능하겠지만, 여기에는 여러 문제가 있습니다.

  • 현재 이러한 이름을 설정에 하드코딩해 둔 사람이라면 누구나 이를 HTTP로 하드코딩해 두었습니다. 이는 이러한 이름들이 계속 해석되도록 허용함으로써, MITM 공격자가 클라이언트에게 전달하기 전에 리다이렉트를 HTTPS로 바꿔치기하여 사용자를 공격하는 일을 쉽게 만든다는 것을 의미합니다.
  • PyPI를 가리키는 여러 도메인을 유지 관리하는 데 드는 부담은, 이미 회수된 소수의 N.pypi.python.org 도메인들에서 골칫거리로 판명되었습니다. 이들은 서비스에 변경이 생길 때 종종 잘못 설정되곤 하며, 이로 인해 누군가 알아차릴 때까지 몇 달씩 고장 난 채로 방치되는 경우가 많습니다. 이들을 그대로 남겨 둠으로써 우리는 이러한 도메인의 사용자들을, 발견되거나 알아차려질 가능성이 낮은 무작위적인 장애에 노출시키게 됩니다.
  • 이러한 도메인을 사용하는 사람들은 이런저런 이유로 명시적으로 그것을 선택한 것입니다. 그런 이유 중 하나는 특정 국가에 위치한 호스트에서 배포하고 싶지 않기 때문일 수 있습니다. 만약 이러한 도메인들이 계속 해석은 되지만 기존 위치를 가리키지 않는다면, 우리는 그 도메인들의 기존 사용자들로부터 이러한 선택권을 조용히 없애버린 셈이 됩니다.

그렇다고는 하나, 항목을 제거하는 것은 설정을 변경한 사용자에게 마스터(PyPI)를 다시 가리키게 하거나 가리킬 새 미러 이름을 선택하도록 반드시 요구합니다. 이는 위에서 설명한 공격으로부터 PyPI 자체와 미러 사용자들을 보호하거나, 적어도 사용자들이 이러한 보안 취약점에 대해 정보에 입각한 결정을 내리도록 요구하기 위한 유감스럽지만 필요한 요건으로 간주됩니다.

공개 또는 비공개 미러

미러링 프로토콜은 PEP 381에 정의된 대로 계속 존재할 것이며, 원한다면 누구든 공개 또는 비공개 미러를 호스팅하는 것을 권장합니다. 권장되는 미러링 클라이언트는 Bandersnatch입니다.