Skip to main content

Provider Reference

This page documents every field accepted by each supported secret provider — both the secret_providers connection block and the secrets per-reference lookup block. For an introduction to the model and reference syntax, see Secret Providers.

Each section follows the same shape: provider connection fields, supported auth methods, secret-entry lookup fields, and a copy-paste example showing both blocks together.


hashicorp_vault

Reads a field from a Vault KV v1 or v2 secret.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"hashicorp_vault"
addressYesVault server URL (e.g., https://vault.internal:8200)
namespaceNoVault Enterprise namespace
tls.ca_certNoPath to a custom CA certificate
tls.client_certNoPath to a client certificate (mutual TLS)
tls.client_keyNoPath to a client key (mutual TLS, must pair with client_cert)
tls.skip_verifyNoDisable TLS verification (development only, default: false)
authYesAuthentication is required — Vault has no default credential chain

Auth methods

MethodRequired fieldsDescription
approlerole_id or role_id_file or role_id_env, plus secret_id or secret_id_file or secret_id_envAppRole authentication. One source per credential.
kubernetesrole; token_file (default: /var/run/secrets/kubernetes.io/serviceaccount/token)Projected service-account token. role is the Vault role bound to the SA, not a Kubernetes RBAC role.
jwtrole; one of jwt, jwt_file, jwt_envGeneric OIDC/JWT — GitHub Actions, SPIFFE, customer-run OIDC issuer.
staticone of token, token_env, token_fileStatic Vault token.
filepathReads the token from a file on every refresh.

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
mountYesSecret engine mount (e.g., kv, secret)
secret_pathYesPath within the mount
fieldYesJSON field to extract from the secret
engine_versionNoKV engine version: v1 or v2. Default: v2. The /data/ segment for KV v2 is auto-computed.
versionNoPin a specific version (KV v2 only)
refreshNoOverride refresh interval (e.g., 30m)

Example

secret_providers:
vault:
provider: hashicorp_vault
address: https://vault.internal:8200
namespace: team-a
auth:
method: approle
role_id_file: /etc/expanso/vault-role-id
secret_id_file: /etc/expanso/vault-secret-id

secrets:
DB_PASSWORD:
from: vault
mount: kv
secret_path: database/prod
field: password
refresh: 15m

aws_secrets_manager

Reads a secret from AWS Secrets Manager, optionally extracting a single JSON field from the value.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"aws_secrets_manager"
regionYesAWS region (e.g., us-east-1)
profileNoAWS shared-config profile name
endpoint_urlNoCustom endpoint (LocalStack, PrivateLink, VPC endpoints)
authNoOmit for the AWS SDK default credential chain

Auth methods

MethodRequired fieldsDescription
(omitted)SDK default credential chain (env vars, IMDS, IRSA, ECS task role)
kubernetesrole; token_file (optional)IRSA — IAM Roles for Service Accounts
staticaccess_key_id, secret_access_keyStatic AWS credentials
filepathTwo-line file: access key ID on line 1, secret access key on line 2

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
secret_idYesSecret name or ARN
fieldNoExtract a single top-level JSON key from the secret value
version_stageNoVersion stage. Default: AWSCURRENT.
version_idNoSpecific version ID. Mutually exclusive with version_stage.
refreshNoOverride refresh interval

Example

secret_providers:
aws:
provider: aws_secrets_manager
region: us-east-1

secrets:
API_KEY:
from: aws
secret_id: prod/third-party-api-key
field: api_key

aws_parameter_store

Reads a parameter from AWS Systems Manager Parameter Store. A lower-cost alternative to Secrets Manager for config-like values.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"aws_parameter_store"
regionYesAWS region
profileNoAWS shared-config profile name
endpoint_urlNoCustom endpoint
authNoOmit for the AWS SDK default credential chain

Auth methods

Same set as aws_secrets_manager: omitted (default chain), kubernetes, static, file.

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
nameYesParameter name or ARN. The suffix syntax name:version or name:label selects a specific version or label.
with_decryptionNoDecrypt SecureString parameters. Default: true. Transparent for String and StringList parameters.
fieldNoExtract a top-level JSON key (the parameter value must be JSON)
refreshNoOverride refresh interval

Example

secret_providers:
ssm:
provider: aws_parameter_store
region: us-east-1

secrets:
DB_HOST:
from: ssm
name: /prod/db/host

aws_sts

Multi-value provider. Exchanges an identity for temporary AWS credentials via STS AssumeRole. Each secrets entry emits three variables under its key as the prefix: <NAME>_ACCESS_KEY_ID, <NAME>_SECRET_ACCESS_KEY, and <NAME>_SESSION_TOKEN.

When to use this

Use aws_sts when one node runs jobs that must authenticate as different AWS roles. For the single-identity case (one node, one role), the SDK default credential chain is enough — no STS entry needed.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"aws_sts"
role_arnYesIAM role ARN to assume
regionYesAWS region (regional STS endpoint)
session_nameNoCloudTrail session name. Default: expanso-edge. Appears in the assumed-role ARN.
external_idNoFor sts:ExternalId trust policies
duration_secondsNoSession duration in seconds, 900–43200. Default: 3600. The role's MaxSessionDuration may cap this lower; STS returns ValidationError if exceeded.
profileNoAWS shared-config profile name
endpoint_urlNoCustom STS endpoint
authNoOmit for the AWS SDK default credential chain

Auth methods

Same set as aws_secrets_manager. With kubernetes auth, the provider uses AssumeRoleWithWebIdentity instead of AssumeRole.

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers

The entry's map key is the prefix for the three emitted variables. There are no per-reference lookup fields beyond from. Refresh follows the standard cadence; the 70% rule against the STS session expiry usually wins in practice.

Example

secret_providers:
aws_writer:
provider: aws_sts
role_arn: arn:aws:iam::123456789:role/pipeline-writer
region: us-east-1

secrets:
AWS:
from: aws_writer
# Emits AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN.

Use the emitted variables in any pipeline component that takes AWS credentials:

output:
aws_s3:
bucket: pipeline-out
credentials:
id: ${AWS_ACCESS_KEY_ID}
secret: ${AWS_SECRET_ACCESS_KEY}
token: ${AWS_SESSION_TOKEN}

gcp_secret_manager

Reads a secret version from GCP Secret Manager.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"gcp_secret_manager"
projectYesGCP project ID
locationNoGCP location for regional or CMEK-pinned secrets. Omit for global secrets.
authNoOmit for Application Default Credentials (ADC)

Auth methods

MethodRequired fieldsDescription
(omitted)Application Default Credentials
staticservice_account_key_file; impersonate_service_account (optional)Service-account key JSON, with optional impersonation target
filepathReads a credential file on every refresh

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
secretYesGCP secret name
versionNoVersion name. Default: latest.
fieldNoExtract a top-level JSON key from the secret value
refreshNoOverride refresh interval

Example

secret_providers:
gcp:
provider: gcp_secret_manager
project: my-project

secrets:
OPENAI_KEY:
from: gcp
secret: openai-api-key

azure_key_vault

Reads a secret from Azure Key Vault. Honors the secret's attributes.exp (native TTL) when present.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"azure_key_vault"
vault_urlYesKey Vault URL (e.g., https://mykv.vault.azure.net)
authNoOmit for the DefaultAzureCredential chain

Auth methods

MethodRequired fieldsDescription
(omitted)DefaultAzureCredential (env vars, managed identity, Azure CLI, etc.)
static (managed identity)managed_identity_client_idUser-assigned managed identity. Required when a VM has multiple user-assigned identities. For system-assigned MI, omit auth and let DefaultAzureCredential handle it.
static (service principal)tenant_id, client_id, client_secret_envService principal with the secret pulled from an env var
filepathJSON file containing tenant_id, client_id, client_secret

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
secret_nameYesAzure Key Vault secret name
versionNoSecret version. Default: latest.
fieldNoExtract a top-level JSON key from the secret value
refreshNoOverride refresh interval

Example

secret_providers:
kv:
provider: azure_key_vault
vault_url: https://mykv.vault.azure.net

secrets:
DB_CONN:
from: kv
secret_name: database-connection-string

file

Reads a value from a local file on the node. Pairs with customer-side credential delivery tools — Vault Agent, Teleport Machine ID, SPIRE, custom scripts — without requiring a dedicated provider per tool.

Provider fields (secret_providers)

FieldRequiredDescription
providerYes"file"

The file provider has no connection or auth configuration. The provider declaration is still required for schema consistency.

Secret fields (secrets)

FieldRequiredDescription
fromYesProvider key in secret_providers
pathYesAbsolute file path on the node
encodingNoraw (default) or base64
refreshNoOverride refresh interval. The file is re-read on each refresh.

Example

secret_providers:
local:
provider: file

secrets:
API_KEY:
from: local
path: /run/secrets/api-key

TLS_CERT:
from: local
path: /run/secrets/tls-cert.pem
encoding: base64
refresh: 1h

For binary values, store them base64-encoded on disk and use encoding: base64. The lookup function returns a string; downstream pipeline components can decode with |base64decode in a Bloblang expression where binary input is required.


See also

  • Secret Providers — concept overview, reference syntax, refresh and rotation behavior.
  • Interpolation Guide — full syntax for ${VAR} and Bloblang ${! ... !} references.
  • Bloblang Guide — language reference for the mapping processor and interpolation expressions.