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

add github management policies dir #155

Merged
merged 1 commit into from
May 31, 2023
Merged

add github management policies dir #155

merged 1 commit into from
May 31, 2023

Conversation

ljharb
Copy link
Member

@ljharb ljharb commented Apr 18, 2023

Closes #153, assuming the tooling should live in a separate repo.

This is just an initial doc to get things started; happy to take any and all feedback.

Signed-off-by: Jordan Harband <[email protected]>
Signed-off-by: ctcpip <[email protected]>
Signed-off-by: Amanda L Martin <[email protected]>

Co-authored-by: Jordan Harband <[email protected]>
Co-authored-by: ctcpip <[email protected]>
Co-authored-by: Amanda L Martin <[email protected]>
@ljharb ljharb requested a review from a team April 18, 2023 17:40
README.md Outdated Show resolved Hide resolved

## Github Org Membership

Membership in the Github org should be freely given - it inherently confers no permissions or privileges, only a badge on the user's profile if they enable it - and it _does_ allow for easier team management. Someone should only be removed from the org in extreme circumstances where their association with OpenSSF would be problematic, and people should be encouraged to remain in the org in perpetuity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels different than many open source projects. Especially for a relatively new and also broad umbrella foundation, I worry that this freely given perpetual membership even if only a weak badging, might encourage confusion on what is or is not officially part, sponsored by, under consideration within the auspices of the foundation. That type of confusion and contention has already been a bit of a problem for the OpenSSF org.

I personally would prefer a simple and collaborative open membership. But I also want clarity of mission and propose and that to be easily discovered and difficult to confuse.

Perhaps this is less of an issue if leadership (ie: certain team memberships in the org?) roles are clearly marked. But GitHub team memberships tend to be opaque. I’m not sure if there is maybe an org setting which would allow team members be viewed by non org members. Or if not…alternatively if anybody can get org membership, I guess anybody could ask for org membership to be able to see team membership? Or GH team members defined by in repo yaml configs? Still not great UX though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Except perhaps in orgs with a very small number of members, it's unlikely that anyone would interpret anything about an individual's org membership alone beyond baseline participation. (And if they did, that would be quite misguided.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tpepper OpenSSF is not itself an open source project, and this is how TC39 operates, which I think is more analogous.

I agree that it's not great UX that the only way to be on a team is to be in the org, but it seems a worthy tradeoff for me.

@bobcallaway
Copy link
Contributor

off of a quick glance, no concerns from me; tagging @di @lehors @steiza who may not have gotten the original notification to review.

Copy link
Member

@steiza steiza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love the proposal to use teams to manage access!

I have some questions about how to open up membership to the OpenSSF organization broadly, and how to manage the consequences of that.

policies/access.md Outdated Show resolved Hide resolved
policies/access.md Outdated Show resolved Hide resolved
policies/access.md Outdated Show resolved Hide resolved
Copy link
Member

@steiza steiza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: there's a bunch of places I'd like us to switch Github to the official GitHub.

Other than that, I'm a strong supporter of organizing permissions via teams, and I'm willing to give membership to github.com/ossf for anyone who asks a try.

@ljharb
Copy link
Member Author

ljharb commented May 8, 2023

@steiza thanks, brand compliance now achieved 👍

policies/access.md Outdated Show resolved Hide resolved
Copy link
Member

@steiza steiza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me; thanks!

Copy link
Contributor

@lehors lehors left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@hythloda hythloda requested review from tpepper and ctcpip May 30, 2023 13:53
Copy link
Member

@ctcpip ctcpip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor grammar/punctuation issues

policies/access.md Outdated Show resolved Hide resolved
policies/access.md Outdated Show resolved Hide resolved
policies/access.md Outdated Show resolved Hide resolved
@AevaOnline AevaOnline requested review from AevaOnline and removed request for tpepper May 30, 2023 15:16
Copy link
Contributor

@AevaOnline AevaOnline left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

This is the parent team for SIGs. Every SIG should have a subteam contained within this one. All SIG subteams must start with `sig-` for consistency.
- [Projects](https://github.com/orgs/ossf/teams/projects)
This is the parent team for projects. Every project (eg scorecard, AO) should have a subteam contained within this one.
Teams for individual repositories go under here, which start with `repo-`, but team names may otherwise be unconstrained.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following PLP(below) projects will need teams for each access level (eg scorecard-read, scorecard-traige, scorecard-write, scorecard-maintain)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the extreme yes, but we'd only create these as needed, since most repos don't need this granularity atm.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is just an extreme case. Take a look at the BP-WG group:
https://github.com/orgs/ossf/teams/wg-best-practices/members
https://github.com/orgs/ossf/teams/wg-best-practices/repositories

All those people who had some kind of access to any of the 6 repos now have write/maintain access to all of them. In an effort to reduce the manual configuration of groups. repos and access-levels will be consolidated and people will be getting access they don't need and/or shouldn't have.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, that's a fair point. However, when I created that specific team i was told that all members should have Write. There's a tradeoff here balancing convenience and "least privilege", and since Write is a pretty non-dangerous privilege, it seemed like a worthy one.

If we end up needing to do this for the majority of repos, then we should absolutely document it as the default approach, but we're not there yet today.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a tradeoff here balancing convenience and "least privilege"

This is exactly my point. Without granular teams per repo and access level, we are reducing our security and going against PLP. Without some sort of automation or config-as-code way to manage the teams, convenience will undermine the goals of the teams mandate.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that is something we can iterate on as well - automation is worth considering but in practice is often overkill, and the goal here isn't strict PLP, but a safer balance.


## Teams, not Individuals

Access to repositories will be granted only to GitHub teams, not to individuals. A repo may have any number of teams added to it, with the appropriate access levels.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How to we enforce this?

Allstar has a policy to nag if any individuals have write/admin access, we could use this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have an auditing tool; see https://github.com/ossf/github-org-access-scraper.


Permission levels should be as high as they need to be, and no higher.

- There's few settings that justify Admin access over Maintain, so prefer Maintain.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like Maintain doesn't allow setting up branch protection. A lot of or repos don't have this setup Will org admins set this up, if we don't have Admin access to our own repos?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes; org admins (the PM team, primarily) will be available to do any repo administration that repo owners lack access to do.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't seem like a tenable solution. If encouraging project owners to not have admin on the repos, they really need an easy way to read settings, and an automated way to apply changes.
https://gitlab.eclipse.org/eclipsefdn/security/otterdog is a tool we could use to do this, for example.

Copy link
Member Author

@ljharb ljharb May 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is definitely something we can iterate on; in my experience managing large github orgs (or in my own 400+ single-maintainer projects), maintainers rarely need Admin more than a handful of times over the lifetime of a repo, and as long as the friction is minimal when it's needed, it's "fine".

Note also that the language here is "prefer"; if anyone feels strongly that they want admin over a repo, then imo they can have it.

@ljharb ljharb force-pushed the policies branch 2 times, most recently from be0cea8 to cb7c1a9 Compare May 30, 2023 16:38
@ljharb
Copy link
Member Author

ljharb commented May 30, 2023

I believe all comments have been addressed and this seems to have sufficient approvals.

I'll land this later today if there's no further feedback/objections.

@SecurityCRob SecurityCRob self-requested a review May 30, 2023 17:50
Copy link
Contributor

@SecurityCRob SecurityCRob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

policies/access.md Outdated Show resolved Hide resolved
@ljharb ljharb merged commit 97efc10 into main May 31, 2023
@ljharb ljharb deleted the policies branch May 31, 2023 17:57
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

Successfully merging this pull request may close these issues.

TAC question: where should ossf github org policies/tools live?