Hi all,

We now have an interface `UserSecretsManager` for safe storage of
secrets (thanks Dennis!).

With that interface we just have one implementation named
`UnsafeInMemorySecretsManager`, which is pretty much what the name
says. For posterity: it does not persist secrets but only keeps those
in memory. This means, all secrets a user thinks are stored, are
effectively lost when the single Polaris instance is stopped. Or very
clear: `UnsafeInMemorySecretsManager` is NOT for production use.

Even clearer: we have no `UserSecretsManager` implementation that can
be used by our users, meaning that our users cannot use for example
"IMPLICIT authentication".

I think this topic deserves some more attention and volunteers for
implementations against actual secret managers (hyperscalers and
Vault).

Honestly, I mostly missed the addition of the `UserSecretsManager`
interface and I think we can improve it.

The interface requires an entity (it's ID). I don't think that this
tight relationship is necessary in the `UserSecretsManager` interface.
I think we should also allow users to directly provide a secret, which
I don't see being implemented (or even possible?) today.
Regular rotation of secrets is a requirement. A secret for S3 for
example consists of the "access key ID" and the "secret key" - the
actual secret is therefore a tuple of both values. For that it's
necessary to have a composite object stored and retrieved atomically
in secret managers.

Given that there is no production implementation, it is fine to change it.

Thoughts on these topics?

Robert

Reply via email to