PyPI 프로젝트 페이지 개편 완료, 새 보안 탭에서 출처 증명 상태 표시
- PyPI가 7월에 예고한 프로젝트 페이지 UI 개편을 마치고 라이브에 올렸음. 새 보안 탭에서 릴리스별 provenance 상태와 파일별 attestation을 확인할 수 있음.
- Full Provenance는 릴리스 파일 100%가 attestation을 가진 상태로, PyPI Publish(Trusted Publisher가 배포했음을 확인)나 SLSA Build Provenance(소스 커밋, 빌드 플랫폼, 빌드 지시문까지 연결) 중 하나 이상을 포함함.
- No Provenance는 악성이라는 뜻이 아니라 파일 출처를 암호학적으로 검증할 수 없다는 의미이며, 이때는 관리자 이력이나 릴리스 패턴, 저장소 활동 같은 주변 신뢰 신호를 봐야 함.
- 일부 파일만 attestation이 있으면 Incomplete Provenance, 같은 릴리스 안에서 provenance가 서로 어긋나면 Inconsistent Provenance 경고가 뜨고, 계정 탈취나 배포 워크플로 장악 가능성을 알려줌.
- 디자인은 Kabu Creative와 함께 OpenSSF Attestations Style Guide 권고를 구현했고, 2024년 도입된 digital attestations가 바탕임.
Hacker News 의견들
이건 원래 멀쩡하던 프로젝트의 PyPI 항목이 해킹당한 걸 잡아내는 얘기지, 악성 프로젝트 자체를 걸러내는 게 아님. 덤으로 빌드 위치를 GitHub나 GitLab 밖으로 옮긴 프로젝트를 잡는 기능이기도 하고.
실제로 dlt는 provenance가 없고 datasette는 있음. 근데 링크 들어가 보면 sdist에는 아이콘이 붙는데 wheel에는 안 붙어서 좀 헷갈리더라.
솔직히 아무도 이 페이지 안 봄.
주제는 아니지만 Material for MkDocs에서 Zensical로 갈아탄 것도 있었음. Python에서 제일 큰 문서 시스템이 사용자 기반을 소외시켜서 포크가 나온 게 좀 슬프다.
provenance를 전면에 내세우는 건 반갑고, trusted publishing이 이제 reusable workflow만 지원해 주면 더 좋겠음. warehouse 이슈 11096에 올라와 있음.
빅테크가 통제하는 워크플로로 배포하지 않고 attestation을 붙일 방법이 없는 게 아쉬움. PyPI 계정에 내 공개키 등록해 놓고 개인키로 서명하면 attestation으로 인정해 주는 길이 왜 없나.
trusted publisher가 다 미국 영리기업뿐인 것 같은데 맞나? Codeberg나 Sourcehut은 어떻게 등록함? 나는 내 하드웨어에서 pypa/manylinux로 빌드하는데, 그럼 제3자 서비스 써서 'no provenance' 딱지를 떼야 하는 건가.
Codeberg 지원은 warehouse 이슈 19786에서 논의 중임. PyPI 쪽도 provider를 늘리고 싶어 하지만 키 관리와 회전 통제를 요구함. Codeberg는 OIDC 개인키를 디스크에 저장하는 게 걸림돌이라고 하더라.
결국 직접 OIDC provider를 세우고 PyPI가 그걸 신뢰하게 만드는 수밖에 없어 보임. Tailscale처럼 webfinger랑 OIDC discovery로 확장하면 될 텐데 아직 그 단계는 아님.
진짜 중요한 건 이거임. 한 패키지에 attestation 붙은 파일을 하나라도 올리면 그 뒤로는 모든 파일을 같은 방식으로 올려야 함. 아니면 PyPI가 계정 침해 의심 경고를 크게 띄움. 그런데 그 파일 올릴 때 메일을 안 보내 줌. GPG 서명 없앨 때는 파일마다 메일을 보내 주던 팀인데.
영구 전환은 아니라고 문서에 나와 있음. publisher provider도 요건만 맞추면 계속 추가할 생각이라고 하고.
이 댓글이 맨 위에 가야 함. PyPI가 또 프로젝트에 엉뚱한 낙인을 찍고 다님.
IP 주소가 사람이 아니라는 건 몇 년 전에 이미 배웠지 않았나. 원격 attestation도 위조 가능하다고 다들 웃고 넘긴 판인데. 결국 코드 자체를 검증해야 함.
무슨 말인지 잘 모르겠는데, attestation을 받은 코드도 악성일 수 있다는 얘기임?
신뢰 이야기가 결국 중앙화로 가는 게 못마땅함. 빅클라우드 요구하고 락인을 조장하는 구조라니, Python스럽지 않음.
빅테크나 VC 의존에 반대하는 개발자는 이제 소수 니치가 됐지. 이 스레드에도 ClosedAI 직원이 ClosedID 홍보하고 앉아 있음. PyPI가 PGP를 뽑아낸 데에도 이유가 있을 거임.