Fix security issues with the Trusted Publishing example
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 230
- フォーク
- 14
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
https://github.com/simonw/python-lib/blob/4b825ed/%7B%7Bcookiecutter.hyphenated%7D%7D/.github/workflows/publish.yml#L44-L49 suggests that building the dists within the same job that publishes them is okay. But it's not.
Such a structure opens the workflow users to privilege escalation through poisoning the build dependencies, which is why I've always insisted on the separation — the build scripts must never have access to id-token: write.
- https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
- https://docs.pypi.org/trusted-publishers/security-model/
Another suggestion is to fix the GitHub Environment name to represent the deployment target as it's meant to. I usually go for pypi and testpypi so it's obvious that uploading to both is separate.
I saw release here https://github.com/simonw/python-lib/blob/4b825ed/%7B%7Bcookiecutter.hyphenated%7D%7D/.github/workflows/publish.yml#L33C5-L33C25, which is not an upload target but a process name which is very generic.
The declaration syntax can also be extended to include a URL:
- environment: release
+ environment:
+ name: pypi
+ url: https://pypi.org/project/{% endraw %}{{ cookiecutter.hyphenated }}{% raw %}/${{ github.ref_name }}
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
{{cookiecutter.hyphenated}}/.github/workflows/publish.yml から始め、特に 33 行目と 44-49 行目を確認してから、リンク先の PyPI Trusted Publishing のガイダンスを読んでください。build ステップと publish ステップで権限をどのように共有しているか、また release 環境がどのような名前になっているかを確認してください。完了条件は、workflow が build と publish を分離し、id-token へのアクセスを build スクリプトから遠ざけ、PyPI のターゲットをプロジェクト URL 付きで命名していることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- github-actions, python
- 領域
- ci-cd, release, security
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 45/100