ReferenceApplies to: Unified engine deployments
[secrets]
The encryption key is stored at <storage_root>/secrets/master.key. It is created once. Keep it with the encrypted metadata. See storage.
Settings
secret_providers
Defines where named external secret references obtain their actual values.
Example
An environment provider can map secret name warehouse_token to environment variable WAREHOUSE_TOKEN. The provider resolves that variable when the secret is requested.
secret_providers.<name> entry
Defines a named way to fetch secret values from an environment, file, or external secret service.
- Default: Set when used
- Type: choice:
environment, file, aws-secrets-manager, aws-ssm, azure-key-vault, gcp-secret-manager, vault
Example
A provider named warehouse with type = "environment" can map secret names to environment variables. Its type decides which other fields are required.
Environment provider
secret_providers.<name>.variables (environment)
Maps secret names to environment variable names read by the provider.
- Default: Set when used
- Type: map
Example
variables = { warehouse_token = "WAREHOUSE_TOKEN" } resolves warehouse_token from the process environment. The string is the variable name, not its value.
File provider
secret_providers.<name>.files (file)
Maps secret names to local files whose contents supply their values.
- Default: Set when used
- Type: map
Example
Map warehouse_token to "/run/credentials/warehouse-token" when that file is mounted in the secrets host.
secret_providers.<name>.max_bytes (file)
Limits how much of a file the file secret provider will read.
- Default: Set when used
- Type: integer (bytes)
Example
1048576 allows a secret file up to 1 MiB, preventing an unexpectedly large file from becoming an unbounded secret read.
AWS Secrets Manager
Uses the Rust AWS SDK. The secret-service process supplies the runtime identity.
secret_providers.<name>.region (aws-secrets-manager)
- Default: Unset; use the SDK Region chain
- Type: string; optional
secret_providers.<name>.profile (aws-secrets-manager)
- Default: Unset; use the SDK credential chain
- Type: string; optional
Grant the runtime identity secretsmanager:GetSecretValue and any required
KMS decryption permission. A reference may select a version ID.
AWS Parameter Store
Uses the Rust AWS SDK with decryption enabled for SecureString parameters.
secret_providers.<name>.region (aws-ssm)
- Default: Unset; use the SDK Region chain
- Type: string; optional
secret_providers.<name>.profile (aws-ssm)
- Default: Unset; use the SDK credential chain
- Type: string; optional
Grant the runtime identity ssm:GetParameter and any required KMS decryption
permission. Explicit versions are positive integers.
Azure Key Vault
Uses the Rust Azure SDK.
secret_providers.<name>.vault_url (azure-key-vault)
- Default: Set when used
- Type: string
Use the complete endpoint, such as https://warehouse.vault.azure.net/.
secret_providers.<name>.authentication (azure-key-vault)
- Default:
workload-identity
- Type: choice:
workload-identity, managed-identity, client-secret
Workload identity uses the standard AZURE_TENANT_ID, AZURE_CLIENT_ID, and
AZURE_FEDERATED_TOKEN_FILE settings. Managed identity uses the current workload’s
managed identity. Client-secret authentication reads AZURE_TENANT_ID,
AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET from the secret-service process.
Grant the selected identity permission to read the secret.
Google Secret Manager
Uses the Rust Google Cloud SDK with Application Default Credentials.
secret_providers.<name>.project (gcp-secret-manager)
- Default: Set when used
- Type: string
Grant the runtime identity permission to access secret versions in this project.
The SDK reads workload identity or Application Default Credentials from the
secret-service process. An omitted reference version requests latest.
HashiCorp Vault
Uses the Rust vaultrs client for KV v2.
secret_providers.<name>.address (vault)
- Default: Set when used
- Type: string
The Vault API endpoint, such as https://vault.example.com:8200.
secret_providers.<name>.token_env (vault)
- Default:
VAULT_TOKEN
- Type: string
The name of the environment variable holding the API token. The token needs read
permission for the selected KV paths. Set the variable in the secret-service
process environment.
secret_providers.<name>.namespace (vault)
- Default: Unset
- Type: string; optional
The Vault namespace sent with requests.
secret_providers.<name>.mount (vault)
- Default: Set when used
- Type: string
The KV v2 mount. References contain the path within that mount. The provider
returns the complete secret data object as JSON.
Migrate CLI provider configuration
Remove command from AWS Secrets Manager, Azure Key Vault, Google Secret Manager,
and Vault provider entries. Move identity settings to the secret-service process
or its SDK configuration. Old command fields are rejected at startup.
For AWS, set region and optional profile when needed. For Azure, replace the
vault name with vault_url and select authentication. Google keeps project.
Vault keeps mount and adds address, optional token_env, and optional
namespace. SQL references and saved local secrets keep their existing formats.Last modified on November 4, 2026