Π Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Python PyPI (Python Package Index) Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² Π·Π°ΡΠΈΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² GitHub Actions). ΠΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π΅ Π½Π°ΡΠ΅ΡΠ΅Π½ βTrusted Publishersβ ΠΈ ΠΈΠΌΠ° Π·Π° ΡΠ΅Π» Π΄Π° ΡΠ΅ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ°Ρ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½Π΅ Π² ΡΡΡΠ΅ΡΠ΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π»ΠΈΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ.
ΠΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenID Connect (OIDC), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΡΠΎΠΊ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΡΡ PyPI ΠΎΠ±ΠΌΠ΅Π½ΡΡ, Π·Π° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Π° ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΡΡΡΠ½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° βTrusted Publishersβ Π΅ Π²Π΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΡΡΠ°ΡΡΠΈΡΠ°ΡΠΈ Π² GitHub Actions. Π Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Trusted Publishers ΠΈ Π·Π° Π΄ΡΡΠ³ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
Π‘ΡΠΏΡΡΡΡΠ²Π°ΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΡ Π½Π°ΡΡΡΠ°Π½Π° PyPI ΠΏΡΠΈΠ·Π½Π°ΠΊ Π·Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° OpenID (IdP, OpenID Connect Identity Provider), ΠΊΠΎΠΈΡΠΎ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡ PyPI ΡΠΎΠΊΠ΅Π½ΠΈ Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°Π΅Π½ ΡΡΠΎΠΊ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈ OpenID Connect ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈΡ Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° PyPI Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ, ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ ΠΊΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. Π’ΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ, ΠΏΡΠΈΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠ° ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ API ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΡΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΡΠ°ΡΠΊΠΈΡ ΡΡΠΎΠΊ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΎΡΡΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Sonatype Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅Π· ΠΌΠ°ΡΡ 2023 Π³. 6933 Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° PyPI. ΠΡ 2019 Π³. Π½Π°ΡΠ°ΠΌ ΠΎΠ±ΡΠΈΡΡ Π±ΡΠΎΠΉ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² PyPI Π΅ Π½Π°Π΄Ρ
Π²ΡΡΠ»ΠΈΠ» 115 Ρ
ΠΈΠ»ΡΠ΄ΠΈ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΠΊΠ°ΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ΅Π· type-squatting (Π½Π°Π·Π½Π°ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠΌΠ΅Π½Π°, ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°ΡΠΈ ΡΠ΅ Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, exampl Π²ΠΌΠ΅ΡΡΠΎ example, djangoo Π²ΠΌΠ΅ΡΡΠΎ django, pyhton Π²ΠΌΠ΅ΡΡΠΎ python ΠΈ Ρ.Π½.) β Π·Π»ΠΎΡΡΠΎΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ°Ρ Π½Π° Π½Π΅Π±ΡΠ΅ΠΆΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π±Π΅Π»ΡΠ·Π²Π°Ρ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ Π² ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΏΡΠΈ ΡΡΡΡΠ΅Π½Π΅. ΠΠ»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, ΠΊΡΠΈΠΏΡΠΎΠ³Π°ΡΠ½ΠΈΡΠΈ, ΡΠΎΠΊΠ΅Π½ΠΈ, ΡΠ΅ΡΠΈΠΉΠ½ΠΈ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ ΠΈ Π΄ΡΡΠ³Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
