[tahoe-lafs-trac-stream] [Tahoe-LAFS] #4177: Manage shared secrets required to interact with the infrastructure
Tahoe-LAFS
trac at tahoe-lafs.org
Mon May 19 09:37:35 UTC 2025
#4177: Manage shared secrets required to interact with the infrastructure
------------------------------------+-----------------------
Reporter: btlogy | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: undecided
Component: dev-infrastructure | Version: n/a
Resolution: | Keywords:
Launchpad Bug: |
------------------------------------+-----------------------
Description changed by btlogy:
Old description:
> ==== Scope ====
>
> While it is preferable to avoid them wherever possible, some recent
> changes have been highlighting a common need: sometime, shared secrets
> are required to integrate with some 3rd party services (e.g. GH deploy
> SSH key for CircleCI or API token for Upptime).
>
> More specifically:
>
> - #4162: requires a dedicated Hetzner account (not an org.) to manage the
> DNS zone.
> - #4175: requires a GH Personal Access Token which is tight to a single
> GH user account (not an org.)!
>
> Like any account, those shared accounts should be protected with 2FA/MFA,
> likely a TOTP, which makes it more difficult to share in the first place.
>
> SOPS (implemented in the [https://github.com/tahoe-lafs/infrastructure
> infrastructure] repository) already offers a solution to share some
> secrets (especially those consumed by the managed systems). But it lacks
> support for TOTP.
>
> Today, such secrets are either treated as individual ones and not
> actually shared, or shared by means that are not formalized (e.g.
> 1Password).
>
> This issue propose to:
>
> - add (Docker and Nix?) support for [https://www.passwordstore.org/ pass]
> with OTP extension,
> - store the shared secrets in a new repository (public or internal?),
> - use the relevant PGP keys to encrypt them.
>
> The first step would be limited to the secrets related to the recent
> changes worked on by Least Authority (e.g. !GitHub, Hetzner and Forgejo).
>
> If working, the solution could be extended to cover other services
> described in #4142.
>
> ==== Value ====
>
> - Avoid dependency on single member for feature used by the community
> (e.g. breaking CI when an individual key expires)
> - Mitigate bus-factor to make the community more resilient and flexible -
> see
>
> ==== Requirements ====
>
> - A group of contributors with push permissions and identified by their
> PGP key, should be able to MAC encrypted credentials (usernames,
> passwords, OTPs, ...);
> - Any contributor with read permissions would be able to list the
> credentials and see some metadata and which group is sharing it.
New description:
==== Scope ====
While it is preferable to avoid them wherever possible, some recent
changes have been highlighting a common need: sometime, shared secrets are
required to integrate with some 3rd party services (e.g. GH deploy SSH key
for CircleCI or API token for Upptime).
More specifically:
- #4162: requires a dedicated Hetzner account (not an org.) to manage the
DNS zone.
- #4175: requires a GH Personal Access Token which is tight to a single GH
user account (not an org.)!
Like any account, those shared accounts should be protected with 2FA/MFA,
likely a TOTP, which makes it more difficult to share in the first place.
SOPS (implemented in the [https://github.com/tahoe-lafs/infrastructure
infrastructure] repository) already offers a solution to share some
secrets (especially those consumed by the managed systems). But it lacks
support for TOTP.
Today, such secrets are either treated as individual ones and not actually
shared, or shared by means that are not formalized (e.g. 1Password).
This issue propose to:
- add (Docker and Nix?) support for [https://www.passwordstore.org/ pass]
with OTP extension,
- store the shared secrets in a new repository (public or internal?),
- use the relevant PGP keys to encrypt them.
The first step would be limited to the secrets related to the recent
changes worked on by Least Authority (e.g. !GitHub, Hetzner and Forgejo).
If working, the solution could be extended to cover other services
described in #4142.
==== Value ====
- Avoid dependency on single member for feature used by the community
- Mitigate bus-factor to make the community more resilient and flexible
==== Requirements ====
- A group of contributors with push permissions and identified by their
PGP key, should be able to MAC encrypted credentials (usernames,
passwords, OTPs, ...);
- Any contributor with read permissions would be able to list the
credentials and see some metadata and which group is sharing it.
--
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4177#comment:2>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list