* New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc
* Existing User: user who already has access to the appropriate project
* Any User: either New User or Existing User
## 1. Onboarding: New User: create and add a gpg key
- please follow instruction on following link: https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
### 1b. Onboarding: Any User: Add new user to groups
Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
Most of the groups correspond directly to git repository names, aka "project name"
```bash
cd groups/<project_name>
ln -s ../../<path_to_key.gpg.pub>
```
## 2. Offboarding: Archive Expired Keys (EOL)
Note: this step can be performed by anyone (either new user or existing user), but it makes the most sense for an existing user to configure the groups since this is domain-specific knowledge (i.e. new users won't typically know the grups)
## 2. Offboarding: Any User: Archive Expired Keys (EOL)
To mark a key as expired, move it to the `archive/` dir as follows:
@ -38,7 +50,7 @@ To mark a key as expired, move it to the `archive/` dir as follows:
Context: This repo stores the keys used to encrypt secrets in other repos; these "consumer" repos each contain a sops config `.sops.yaml` which manages access to the encrypted files (e.g. `secrets.yaml`)