isle/tasks/secrets/propagation/README.md

30 lines
1.3 KiB
Markdown
Raw Normal View History

# Secret Propagation
Secrets are pieces of data which are not (necessarily) shared amongst all hosts
in a network. There are three clases of secrets:
* Secrets which are particular to a single host, and will never leave that host.
These values are not managed using the secrets manager, but rather are kept in
the bootstrap.
* Secrets which only a subset of hosts have. These secrets may be propagated to
other hosts, either automatically or by request of a user.
* Secrets which all hosts have. These are not really "secrets" from the
network's perspective, but are convenient to manage as such.
Secret propagation is related to the second two cases. Secrets to be propagated
are placed in a known sub-directory in the global bucket, destined either for a
single host or all hosts. When destined for a single host they are encrypted
using that host's public encryption key.
The known sub-directory is `/secrets`.
Secrets destined for all hosts are placed within that directory as-is, named for
the ID, in plaintext. These are never deleted, even though new hosts will be
given them as part of their initial bootstrap.
Secrets destined for a particular host are placed under `/secrets/<hostname>`,
named after the ID, encrypted using the destination host's public encryption
key. Once the destination host grabs a secret it will be deleted.