PyPI — это официальный репозиторий программного обеспечения для сторонних приложений на языке программирования Python.
Несколько дней назад было объявлено, что репозиторий пакетов Python PyPI (Python Package Index) теперь предлагает новый безопасный метод публикации пакетов , устраняющий необходимость хранения фиксированных паролей и токенов доступа к API во внешних системах (например, GitHub Actions).
Новый метод аутентификации называется «Доверенные издатели» и предназначен для решения проблемы публикации вредоносных обновлений в результате компрометации внешних систем и попадания предопределенных паролей или токенов в чужие руки.
Начиная с сегодняшнего дня, сопровождающие пакетов PyPI могут использовать новый, более безопасный метод публикации, который не требует долгоживущих паролей или токенов API для обмена с внешними системами.
Упоминается, что этот новый метод аутентификации обеспечивает значительные преимущества в плане удобства использования и безопасности по сравнению с другими традиционными методами аутентификации PyPI:
- удобство и простота использования: Благодаря доверенной публикации пользователям больше не нужно вручную создавать токены API в PyPI, копировать и вставлять их в своего поставщика CI. Единственный ручной шаг — настроить редактор в PyPI.
- Безопасность: обычные токены API PyPI являются долговечными, а это означает, что злоумышленник, скомпрометировавший выпуск пакета, может использовать его до тех пор, пока его законный пользователь не заметит и не отзовет его вручную. Точно так же загрузка с паролем означает, что злоумышленник может загрузить любой проект, связанный с учетной записью. Надежная публикация позволяет избежать обеих этих проблем: Срок действия выпущенных токенов истекает автоматически, и они ограничены только пакетами, в которые им разрешено загружать.
Что касается этого нового метода аутентификации, то отмечается, что он основан на стандарте OpenID Connect (OIDC), который использует ограниченные по времени токены аутентификации, обмениваемые между внешними сервисами и каталогом PyPI для проверки операции публикации пакета, вместо использования традиционного логина/пароля или постоянного API, генерируемого вручную с помощью токенов доступа.
«Надежная публикация» — это наш термин для использования стандарта OpenID Connect (OIDC) для обмена недолговечными токенами идентификации между доверенной сторонней службой и PyPI. Этот метод можно использовать в автоматизированных средах и устраняет необходимость использования комбинаций имени пользователя и пароля или сгенерированных вручную токенов API для аутентификации с помощью PyPI при публикации.
С другой стороны, также упоминается, что сопровождающие пакеты могут на стороне PyPI доверять идентификаторам, предоставленным внешним поставщикам OpenID (IdP), которые внешняя служба будет использовать для запроса неживых токенов PyPI.
Сгенерированные токены OpenID Connect подтверждают связь между проектом и драйвером, позволяя PyPI выполнять дополнительную проверку метаданных, например, проверять, связан ли опубликованный пакет с конкретным репозиторием. Токены не являются постоянными, привязаны к определенным API и автоматически истекают через короткий срок действия.
Вместо этого сопровождающие PyPI могут настроить PyPI так, чтобы он доверял удостоверению, предоставленному данным поставщиком удостоверений OpenID Connect (IdP). Это позволяет PyPI проверять и делегировать доверие этому удостоверению, которое затем уполномочено запрашивать у PyPI краткосрочные токены API с ограниченной областью действия. Эти токены API никогда не нужно хранить или совместно использовать, они автоматически меняются по истечении срока действия и обеспечивают проверяемую связь между опубликованным пакетом и его источником.
В настоящее время возможность использования механизма «Доверенные издатели» уже реализована и работает для контроллеров, инициализируемых в GitHub Actions. Наконец, что немаловажно, следует также отметить, что в будущем ожидается поддержка механизма «Доверенные издатели» и для других внешних сервисов.
Наконец, если вас интересует более подробная информация по этому вопросу , вы можете найти ее по следующей ссылке.