Dedicated .password-store
w/minimal-attack-surface Secrets Collaboration #18
Labels
No Label
availability
bug
deployment-usability
duplicate
enhancement
help-wanted
question
security
stack-auth
stack-chat
stack-cleanup
stack-git
stack-mesh
stack-site-support
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Total Time Spent: 31 seconds
Due Date
so-rose
31 seconds
No due date set.
Dependencies
No dependencies set.
Reference: python-support/python-support-infra#18
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
pass
is a very simple bash script, which encrypts each secret in its own file with GPG (which is hardware-backed) in some.password-store
git
repository. This approach has bare-minimal attack surface, while being incredibly solid and featureful by virtue ofgpg
s andgit
s features - quite ideal for developers.pass
Website: https://www.passwordstore.org/pass
Manpage: https://git.zx2c4.com/password-store/about/It is a very good idea to implement a dedicated
.password-store
directory to make it easier to separatepython-support
work from personal / other work, and to enable team collaboration.In practice, this means:
.password-store
for this repo, of course subject to.gitignore
as far as this repo is concerned.passwords
repository in thepython-support
organization, which all team members have access to. Note, though all team members can see the.gpg
files, they can only open the ones they've been granted access to.Then, add the following to
.password-store
(adapted from https://zwyx.dev/blog/shared-password-stores), do:.public-keys
folder in the.password-store
root, which contains a list of.asc
files that bind GPG users (ex.John Doe <johndoe@example.com>
) to GPG key fingerprints..gpg-id
file in the root of.password-store
, with each line containing one GPG user (ex.John Doe <johndoe@example.com>
) who may read all files in this and all subfolders of.password-store
..gpg-id
file in the root of any folder that has different access.main
, and do thorough PR approval whenever someone changes a secret.git
commit signatures (this is essential), and consider implementing some scripts to check those signatures against.public-keys
..gpg
secrets correctly according to.gpg-id
files, just re-runpass init
. It automatically reads.gpg-id
s, checks against who the files are currently encrypted for, and re-encrypts if they don't match..password-store
as the source of itslookup()
s.run.sh
would also need to take care ofgit clone
ing the passwords repo if needed, as part of its operation. As a result, any team member would be able to run any playbook, with secrets, so long as they've been given access to those secrets.