Signing in
Passwords are hashed with argon2id. A local account must have an authenticator,
because it is the way back in when single sign on is broken. Failed attempts lock
the account and are counted per address as well, so spraying one password across
many accounts is slowed too.
Between the nodes
The managers talk over mutual TLS with certificates from the cluster's own
authority, and every message is signed with the cluster secret on top of that.
Holding a certificate is the same thing as being a member, and the authority's key
never leaves the machine that made it.
Reaching the machine
The manager runs unprivileged in a container that cannot touch the host. Anything
needing root goes to an agent that will only do things on a fixed list and checks
the arguments of each. That list is the real boundary, not the container.
Saying what happened
Every action is written to an audit log that nothing in the interface can edit,
on the machine where it happened. Logs are deliberately not replicated, so no node
can write into another node's history.