Create a security program; make sure it eliminates bottlenecks
- Dominant language
- JavaScript
- Stars
- 27.2k
- Forks
- 5.6k
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 46
Description
From https://github.com/badges/shields/pull/2573#issuecomment-449486184:
> 1. Maybe we should even store our own internal documentation for shields.io separate from documentation that is applicable to contributors or self-hosting users.
I recently created a private repo for the secrets needed to deploy the server. I paused as I was filling it out though, because I realized we may want to make some careful decisions about what should be shared with whom.
This project is widely trusted by the community. We should take precautious to ensure our users' continued security, and maintain our reputation for privacy.
However, depending on one person is bad. Transparency is good. Trusting people is necessary. Security cannot be a roadblock to progress.
We are currently using branch protection and required checks. However, permissions have been ad hoc.
It would be good if 2+ active maintainers had access to the key areas of the project (DNS, CDN, servers, monitoring, github org, npmjs, twitter, discord, dev infrastructure).
In the interest of driving things forward on good footing, I asked some open-source maintainers about how their projects handle volunteer-run, user-facing infrastructure:
1. Do you enforce required code approvals before merge?
2. Do you have policies around security and privacy?
3. How do you ensure no one person becomes a bottleneck?
4. How do you ensure an appropriate amount of transparency?
I got advice about some aspects of this:
- Use PaaS which doesn't require SSH, provides permissions based on teams and orgs, provides activity logging transparency, and avoids access + knowledge bottlenecks
- Use [12-factor](https://12factor.net/), so there are no checked-in sensitive files; environment-specific information is only in the environment
- Use branch protection, reducing the chance of something shady getting merged or deployed
- Use required CI checks
- Use a bot which creates issues from log events to avoid bottleneck
However, I didn't get any information on training, or deciding who gets access to what.
I'd like to suggest we take the initiative to _design a program that addresses the most important aspects of security_.
We should:
1. Decide how we want to handle these things
2. Write down our decisions
3. Get everyone to approve it, and
4. Implement it.
_Ideally_ rather than reinvent the wheel, we should find someone else who has already has such a program, and adapt it to our needs.
Are folks on board?
Contributor guide
Research direction
No source file, test, or entry point is named. Start by reviewing the linked pull request discussion and the listed infrastructure, access, transparency, and bottleneck questions. Done means agreeing on a security program, documenting the decisions, obtaining maintainer approval, and implementing the agreed measures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github
- Domain
- devops, infrastructure, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100