PyPI je uradno skladišče programske opreme za aplikacije tretjih oseb v programskem jeziku Python.
Pred nekaj dnevi je bilo objavljeno, da repozitorij paketov Python PyPI (Python Package Index) zdaj ponuja novo varno metodo za objavljanje paketov , s čimer odpravlja potrebo po shranjevanju fiksnih gesel in žetonov za dostop do API-ja na zunanjih sistemih (npr. GitHub Actions).
Nova metoda preverjanja pristnosti se imenuje »Zaupanja vredni založniki« in je zasnovana za reševanje problema objavljanja zlonamernih posodobitev zaradi ogroženih zunanjih sistemov in vnaprej določenih gesel ali žetonov, ki pridejo v napačne roke.
Od danes naprej lahko vzdrževalci paketov PyPI sprejmejo nov, varnejši način objavljanja, ki ne zahteva dolgotrajnih gesel ali žetonov API za skupno rabo z zunanjimi sistemi.
Omenjeno je, da ta nova metoda preverjanja pristnosti zagotavlja pomembne uporabne in varnostne prednosti v primerjavi z drugimi tradicionalnimi metodami preverjanja pristnosti PyPI:
- Uporabnost: Z zaupanja vrednim objavljanjem uporabnikom ni več treba ročno ustvarjati žetonov API v PyPI ter jih kopirati in prilepiti v svojega ponudnika CI. Edini ročni korak je konfiguracija urejevalnika v PyPI.
- Varnost: običajni žetoni PyPI API so dolgoživi, kar pomeni, da lahko napadalec, ki ogrozi izdajo paketa, le-tega uporablja, dokler ga zakoniti uporabnik ne opazi in ročno prekliče. Podobno nalaganje z geslom pomeni, da lahko napadalec naloži kateri koli projekt, povezan z računom. Trusted Publishing se izogne obema težavama: izdani žetoni samodejno potečejo in so omejeni samo na pakete, v katere so pooblaščeni za nalaganje.
Glede te nove metode preverjanja pristnosti je omenjeno, da temelji na standardu OpenID Connect (OIDC), ki za potrditev objave paketa uporablja časovno omejene žetone za preverjanje pristnosti, izmenjane med zunanjimi storitvami in imenikom PyPI, namesto tradicionalnega uporabniškega imena/gesla ali trajnega API-ja, ki ga ročno generirajo žetoni za dostop.
»Zaupanja vredna objava« je naš izraz za uporabo standarda OpenID Connect (OIDC) za izmenjavo kratkotrajnih žetonov identitete med zaupanja vredno storitvijo tretje osebe in PyPI. Ta metoda se lahko uporablja v avtomatiziranih okoljih in odpravlja potrebo po uporabi kombinacij uporabniškega imena/gesla ali ročno ustvarjenih žetonov API za preverjanje pristnosti s PyPI pri objavi.
Po drugi strani pa je omenjeno tudi, da lahko vzdrževalci paketov na strani PyPI zaupajo identifikatorjem, posredovanim zunanjim ponudnikom OpenID (IdP), ki jih bo zunanja storitev uporabila za zahtevanje neživih žetonov PyPI.
Ustvarjeni žetoni OpenID Connect potrjujejo razmerje med projektom in gonilnikom, kar omogoča PyPI dodatno preverjanje metapodatkov, kot je preverjanje, ali je objavljeni paket povezan z določenim repozitorijem. Žetoni niso trajni, so vezani na določene API-je in po kratki življenjski dobi samodejno potečejo.
Namesto tega lahko vzdrževalci PyPI konfigurirajo PyPI tako, da zaupa identiteti, ki jo zagotovi dani ponudnik identitete OpenID Connect (IdP). To omogoča PyPI, da preveri in prenese zaupanje na to identiteto, ki je nato pooblaščena, da od PyPI zahteva kratkotrajne žetone API z omejenim obsegom. Teh žetonov API nikoli ni treba shranjevati ali deliti, samodejno se zamenjajo ob hitrem poteku in zagotavljajo preverljivo povezavo med objavljenim paketom in njegovim virom.
Trenutno je možnost uporabe mehanizma zaupanja vrednih založnikov že implementirana in deluje za krmilnike, ki so bili sproženi v dejanjih GitHub. Nenazadnje, in kar je pomembno, je omenjeno tudi, da se v prihodnosti pričakuje podpora za zaupanja vredne založnike tudi za druge zunanje storitve.
Nenazadnje, če vas zanima več o tem , lahko podrobnosti najdete na naslednji povezavi.