Secret > Secret backend
See also: How to manage secret backends
A secret backend is a service that is used to store sensitive content which Juju manages as secrets.
Secret backends are per model.
A secret backend is identified by a name and a type, and admits various configuration options, some of them generic and some backend-type-specific.
Contents:
Name
The name of a secret backend can be:
auto
(i.e.,internal
for machine models andlocal
for Kubernetes models)internal
<some custom name>
The name is set via the secret-backend
model configuration key.
See more: List of model configuration keys
Type
The type of a secret backend can be:
For production use, we recommend Vault.
controller
The controller
backend is the Juju model database.
It is the default secret backend for machine (VM) models.
kubernetes
The kubernetes
backend is the model’s Kubernetes namespace.
It is the default secret backend for container (Kubernetes) models.
Available starting with Juju 3.1.
vault
The vault
backend refers to the Hashicorp Vault.
It is available as an opt-in to both machine (VM) and container (Kubernetes) models.
Available starting with Juju 3.1.
Configuration options
Generic
The generic configuration keys currently include just the following:
token-rotate |
The maximum period for which an access token is valid for. Some time prior to the token expiring Juju will generate a new one. Possible values: standard Go duration (e.g., 2h, 7d). The minimum is 1h. |
The vault
backend is the only one that supports it for now.
Backend-specific
The vault
backend is the only one that supports specific configuration keys. These are:
ca-cert |
The path to a PEM-encoded CA certificate file on the local disk. This file is used to verify the Vault server’s SSL certificate. |
client-cert |
The path to a PEM-encoded client certificate on the local disk. This file is used for TLS communication with the Vault server. |
client-key |
The path to an unencrypted, PEM-encoded private key on disk which corresponds to the matching client certificate. |
endpoint |
|
namespace |
The namespace to use for the command. Setting this is not necessary but allows using relative paths. |
tls-server-name |
The name to use as the SNI host when connecting via TLS. |
token |
The vault authentication token. |
See more: Vault |
vault server
, Hashicorp | Vault commands.
(You will see more options there as we currently support only support a subset.)
A minimum configuration must include the endpoint
and token
. However, just that would not be insecure, as it wouldn’t establish an encrypted TLS connection to Vault. For production you should configure your Vault securely, following recommendations in the upstream Vault documentation.