-
Notifications
You must be signed in to change notification settings - Fork 5
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
Update config.yaml #10
Comments
I am definitely committed to being a maintainer of oqs-provider. Regarding liboqs, I feel like I haven't done enough work on it to be a maintainer, but I would want to be a committer for now, yes. Thank you btw @baentsch for updating this file.! |
Yep. I'm currently basically just holding the fort. |
This list of changes looks correct to me. |
@ryjones are you willing to implement these changes as part of your contributions to OQS or do you expect someone else to do this? If the latter, whom and how (documentation)? |
@baentsch the way to do it would be to file a PR against the config to make it reflect what the community wants. Here is an example. |
@dstebila I know you have other priorities than this project particularly as the term starts and most likely don't (have time to) read my longish arguments, but in this case, please make an exception. I promise I (already started) to not tag you anymore on other or concrete technical matters if not really necessary. This issue didn't make progress over the past few months and seems to be at the core of different problems. As much decision-making seems to have moved away from GH and on to meetings (which I still think is wrong, slows down the project substantially, leads to sub-optimal decisions and systematically disadvantages non-native speakers --maybe another topic of its own?) this is to request we put this on the agenda for the next meeting. To be agreed should be things on two levels: Basic principles: This is to propose we agree that OQS project access rights control, i.e., config.yml maintenance, adheres to these principles:
Second, concrete implementation: As per (slightly modified) original proposal by @SWilson4 this proposal is to agree that for every sub project the same rules apply:
The rationale for all this is to
The only truly new concept this proposal introduces is the notion ("team") of release managers. IMO those should be the OQS maintainers (you and me) as well as 100% committed (e.g., employed) core team members (Spencer and Pravek). This would allow us to return to the more efficient method of doing releases without introducing undue risks, again, incl. key person risk. Should anyone other on or off the @open-quantum-safe/tsc read this, please weigh in on this even before the meeting with comments/change suggestions, etc: I firmly believe that open discussion outside of meetings gets better results than snap decisions e.g., because one "has to run to the next meeting" or misunderstands a verbal cue. Particularly also tagging @ryjones for input as you (unlike me) know the syntax and semantics underlying this file as well as the interaction with CODEOWNER files and piece-part access controls required, e.g., during releases. |
Thanks for this proposal, Michael. I think the configuration largely makes sense, though I'd like to highlight a couple of points for discussion:
|
Good point. (These mistakes happening) also applies to me. Then strike that part. Push-to-main disallowed for all except in release situations -- except during releases: Release managers should be able to manually enable that for/before release and re-activate the restriction after release. Question remaining: What then is the conceptual difference (in rights required) for committers and contributors?
Yikes -- that indeed sounds pretty strange. Is there maybe some limitation/check as to how the credentials are created that are required for using the GH REST API (which in turn could be properly controlled)? But then again, what damage can be done this way? Someone can run GH jobs without proper authorization. Doesn't sound really bad. Anything else? What about other, non GH-related secrets, e.g., docker hub credentials, etc.? Are they also accessible via GH CLI? |
as far as branch protection, we can roll out default branch protection (no force pushes), but it is also settable on a per-repo basis. |
I'm not sure if/how we can control credential creation. I would guess that it's out of our hands for the most part.
Any secret that we store in a GitHub environment or repo variable can be overwritten (right now, this includes CircleCI and Docker Hub tokens for our "bot" accounts). Note that this is write-only access: the secret value itself can't actually be fetched. The same doesn't apply for organization-level secrets; those require admin access to manage. The worst-case scenario that I can think of (off the top of my head) for write-only access is denial of service. Somebody overwrites a token, preventing us from deploying Docker code or breaking our CI. Someone with push access can already do quite a bit more than this: they can run arbitrary code (via workflow files) with access to environment secrets. This would allow somebody, to, say, push an unauthorized Docker image to an official account. |
What do you mean by that? Reading token creation documentation this seems to be a controlled (or at least controllable) process:
--> So, what is the org setting for OQS? What should it be?
That doesn't sound overly bad -- particularly considering this can always be tracked to an individual responsible. If there's nobody seeing different and more negative attack potential, I'd suggest to accept the risk of your second bullet point, @SWilson4 . What would be good to confirm, though, is that indeed secrets cannot be read (for later use): Anyone (incl. @ryjones ) aware of such assertion? Regarding writes/changing secret values: Is there a record (or even better, notification) of such change?
AFAIK we already have (at least had at the time when I was trusted administrator) that protection set at least on "sensitive" repos. Admins (and ideally also release managers) can (and should be able to) set/configure that. That brings back the old question: Which privilege (level) is required to change the rule set/enable/disable branch protection? Does the proposal above make this possible? https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches seems to indicate this privilege to be admin only. In such case, what about enabling auto merge for specifically tagged PRs (release ones, created by the specifically nominated release managers as per the above proposal)? @SWilson4 : This would alleviate your concern to "accidentally" push to "main", right? It also would dovetail nicely with your new CI-task trigger logic. |
I was thinking of classic PATs as being a problem. But I missed this line in the docs:
Currently, it seems to be very permissive: I've created and used both classic PATs and fine-grained PATs with no issues. I'd say that this seems to be a good reason to disable classic PATs and require approval for fine-grained PATs (possibly with policy limiting them to committers?)
Makes sense to me. |
@baentsch secrets are hard to exfil. |
Reasonable proposal. Finally something setting committers and contributors apart :-) Doable, @ryjones ?
Sorry, I don't understand this sentence. Can you please elaborate (maybe providing a pointer as to why "exfil"(?) is hard), @ryjones ? |
It used to be easy to exfiltrate secrets by doing a MIME encoding or similar. GitHub has patched all of those paths I'm aware of. |
Thanks for such a detailed proposal around this, Michael. We have been rather inconsistent and ad hoc with this over the past few months, and you're right that we should be more systematic about it. I think by and large your proposal makes sense. In terms of operationalizing it, it does sound like there will be a lot of conditions to keep track of on what approvals are required for a certain type of access change, and that might change depending on the subproject. Do you have some ideas on how to make that easier for people to evaluate? For example, maybe some pull request templates that record the various situations? |
Such PR template (documenting the agreed-upon proposal for TSC members to check off when reviewing) would be a sensible step, I agree. Some PR-checking automation could also be deployed (e.g., evaluating MAINTAINER and COMMITTER files -- as and if established). But that's all icing on the cake: Let's first agree on the baseline proposal, @dstebila |
Signed-off-by: Michael Baentsch <[email protected]>
Signed-off-by: Michael Baentsch <[email protected]>
Originally posted by @ryjones in #6 (comment)
As requested: Ensure all (sub-)project roles of contributor- and maintainership are properly represented.
At the least implement #7 (comment)
Then I think @thomwiggers no longer maintains liboqs-rust, right?
@vsoftco in turn should be maintainer of all language wrappers
@baentsch is maintainer of oqs-provider and liboqs; @thb-sb: Would you want to commit being maintainer in either or just one project, too?
@dstebila is no maintainer of oqs-provider but surely of liboqs.
All other projects don't have maintainers, AFAIK (which is a problem and should be tackled -- as per #2
Anyone else, please chime in if I forgot about you(r commitments).
The text was updated successfully, but these errors were encountered: