Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Onboard maintainers to the release process #561

Open
FFY00 opened this issue Jan 11, 2023 · 14 comments
Open

Onboard maintainers to the release process #561

FFY00 opened this issue Jan 11, 2023 · 14 comments

Comments

@FFY00
Copy link
Member

FFY00 commented Jan 11, 2023

Our release process requires that maintainers have their PGP key listed in https://pypa-build.readthedocs.io/en/stable/installation.html, and preferably have their key signed by one of the other maintainers.

@pypa/build-committers if you wish to get onboarded, please reply to the issue with your PGP key and preferred email (that is listed in the key).

I will send you an email with a simple file for you to sign, to verify you hold the key and have access to the key email. After that I will sign your key and push it to the keyserver. Afterwards, either me or you can open a PR adding the key to the install documentation page, I will add you as a PyPI maintainer when the PR lands.

@henryiii
Copy link
Contributor

henryiii commented Apr 7, 2023

@webknjaz
Copy link
Member

Looks like this would help solve things like #615...

@henryiii
Copy link
Contributor

henryiii commented May 19, 2023

We got stuck trying to get my PGP key signed during PyCON. I think I need to export it then reimport it to pick up the new signatures. I'll try to do that soonish.

@webknjaz
Copy link
Member

I think I need to export it then reimport it to pick up the new signatures.

If you're talking about GitHub or GitLab, then yes — this is my experience in the past..

I'm wondering why people still don't go for sigstore these days...

@henryiii
Copy link
Contributor

PGP support has been removed from PyPI:

https://blog.pypi.org/posts/2023-05-23-removing-pgp/

Personally, I'd be fine to move to trusted publisher releases.

@webknjaz
Copy link
Member

webknjaz commented May 23, 2023

Personally, I'd be fine to move to trusted publisher releases.

I talked to Filipe during PyCon and he had strong feelings about signing stuff locally IIRC 🤷‍♂️

By the way, it's a one-liner, to add sigstore signing to GHA..

@henryiii
Copy link
Contributor

Yes, but it's simply no longer supported to sign stuff locally with PGP. It will be deleted on upload to PyPI.

@layday
Copy link
Member

layday commented May 24, 2023 via email

@henryiii
Copy link
Contributor

henryiii commented May 25, 2023

The binaries were signed, I believe. How about this:

  • Require signed git tags (with a list of allowed signatures) to build in CI.
  • On a signed git tag, sigstore sign the binary on GHA.
  • Publish with trusted publisher deployment.

Assuming you can check that a tag is signed & verify that the signature against a set of public keys, this should be secure enough? We just need to be as secure as Flit, Pip, and Installer. :)

@webknjaz
Copy link
Member

The binaries were signed, I believe.

I verified that no release of build has signatures attached on PyPI, meaning they were never uploaded.

@webknjaz
Copy link
Member

Publish with trusted publisher deployment.

Also, the job generating the dists (or better — a separate one) should run the sigstore action.

@webknjaz
Copy link
Member

FWIW Filipe's reasoning was that since the GHA infra is a public platform with shared runners, it cannot be trusted at all because we can't rely on it isolating different jobs well enough.
So the attack vector he was thinking about is the runner compromise.

@henryiii
Copy link
Contributor

henryiii commented Jun 2, 2023

Wouldn't requiring several maintainers to sign-off on the deployment environment help with that? Then GitHub itself would have to be compromised, I think, as the runner waits for GitHub?

@webknjaz
Copy link
Member

webknjaz commented Jun 2, 2023

GH environments don't have minimum number of approvals IIRC + the attack vector was the compromise of the runner, that's after the approval, once the secrets are made available to the runner. So it's not about breaking into the entire platform, just a neighboring VM on the same runner, for example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants