Skip to content
Integrations
Secrets Managers
Behavior Reference

Secrets manager behavior reference

This page defines how Astralis caches values from a secrets manager, behaves during an outage, reports manager health, and exposes managers through the API and deployment settings.

Secrets manager integrations are part of Astralis Enterprise. For setup, see the secrets managers overview.

Caching and outages

Each Astralis process keeps its own in-memory cache per manager. Nothing read from a manager is written to disk or the database.

WindowDurationBehavior
Fresh15 minutes after a successful readThe cached value is used without contacting the manager.
StaleUp to 30 more minutesIf the manager cannot be reached, the last good value is used and the manager reads as Serving cached credentials.
ExpiredAfter 45 minutes without a successful readIntegrations reading from the manager fail until it is reachable again.
Retry cooldown30 seconds after a failed readAstralis waits before contacting the manager again.

Failures fall into three classes:

ClassExamplesBehavior
TransientNetwork timeout, DNS failure, Vault sealed or unavailableStale value served within the window.
PermanentSecret deleted, access denied, KMS decryption denied, AppRole rejected, untrusted certificateCache cleared; fails immediately.
Unusable payloadNot a JSON object, missing a required keyFails immediately; never served stale.

When a privacy request step or a connection test fails on a managed integration, Astralis fetches the secret again once and retries, so a rotated credential takes effect without waiting for the cache to expire. Background consent and DataHub tasks retry through a manager outage after 1, 2, and 4 minutes before dropping the work.

Health states

StateLabelMeaning
never_verifiedNever verifiedNot checked since it was added, edited, or had its ExternalId rotated. Verify it before pointing an integration at it.
okHealthyThe last check or read succeeded.
degraded_staleServing cached credentialsThe manager is unreachable and integrations are using cached values.
failingFailingThe last check or read failed. The row shows why.

A successful Test does not clear a failure recorded while reading a secret; the next successful read does. A failure of the Astralis deployment's own AWS identity is reported as such and never changes a manager's health.

Scheduled health checks

Astralis checks every manager's reachability every 6 hours, starting one minute after the server starts. A check authenticates to the manager and reads no secret.

Tests and checks

ActionWhereWhat it proves
Manager Test / Verify connectionSecrets managers page and formConfiguration is valid and Astralis can authenticate (assume the AWS role, or log in with the AppRole). Does not read a secret.
CheckAn integration's Credentials drawerThe secret resolves and holds every key the integration needs. Reads past the cache.
Test connectionAn integrationThree stages: Secrets manager reachable, Secret fetched and validated, Downstream connection. The last is skipped if the secret did not resolve.

Manager tests and checks are limited to one every 5 seconds per manager.

Payload rules

  • The secret is a JSON object (AWS secret string) or a KV object (Vault). AWS binary secrets are refused.
  • The keys are the integration type's credential fields, minus settings Astralis keeps for that type. See settings kept in Astralis.
  • A key that is empty or null counts as missing.
  • Extra keys depend on the integration type. Most types ignore them, SaaS integrations pass them to the integration, and email integrations refuse them. Jira ticket integrations refuse OAuth keys and ignore the rest.
  • If the secret includes a key Astralis keeps for the type, the value stored in Astralis wins.
  • Values from the secret override tokens Astralis refreshed and stored for the integration, such as OAuth access tokens, key by key.

Eligible integration types

By default, every integration type with credential fields can read them from a manager. A self-hosted deployment narrows this with FIDESPLUS__SECRETS_MANAGER__ELIGIBLE_CONNECTION_TYPES, a JSON array of connection types:

ValueEffect
UnsetEvery type with credentials is eligible.
["postgres", "saas"]Only those types can be linked. SaaS integrations are eligible or not as a whole, under saas.
[]No type is eligible: new links are refused and existing links stop resolving.

Removing a type refuses new links and makes existing links of that type fail. Unknown type names stop the server from starting. Restart the web server and every worker after changing the value.

Deleting a manager

A manager cannot be deleted while any integration reads from it, including integrations in other organizations. The delete dialog lists the integrations in your organization and counts the rest. Point each one at another manager, or switch it to credentials entered in Astralis, then delete.

Deleting removes the manager's configuration from Astralis. Nothing in your secrets manager changes. A connection that already holds a value in memory may finish its current operation.

Organizations

A manager belongs to the organization that created it. A manager created at the root is usable by every organization but changeable only by its owner. Manager keys are unique across all organizations.

API

All endpoints are under /api/v1/plus.

Method and pathPermissionPurpose
GET /secrets-managersecrets_manager:readList managers (paginated)
GET /secrets-manager-statussecrets_manager:read{"configured": true | false}
GET /secrets-manager/{key}secrets_manager:readOne manager, with its trust policy and dependents
POST /secrets-managersecrets_manager:create_or_updateCreate a manager
PATCH /secrets-manager/{key}secrets_manager:create_or_updateUpdate a manager. Sending details replaces it whole.
POST /secrets-manager/{key}/testsecrets_manager:create_or_updateTest authentication
POST /secrets-manager/{key}/rotate-external-idsecrets_manager:create_or_updateRotate an AWS manager's ExternalId
POST /secrets-manager/verify-allsecrets_manager:create_or_updateTest up to 25 managers, never-verified first
POST /secrets-manager/{key}/check-referenceconnection:create_or_update and secrets_manager:readCheck a reference for an integration type
DELETE /secrets-manager/{key}secrets_manager:deleteDelete a manager; 409 while integrations read from it

Callers without secrets_manager:create_or_update, or outside the owning organization, receive managers with details empty and details_redacted: true. Secret values, the Vault secret ID, and the Vault token are never returned. An integration's secrets_manager_reference is returned only to callers with connection:create_or_update.

The payload template for a type is at GET /api/v1/connection_type/{type}/secrets-template and returns 404 until a manager is configured.

Manager details

FieldAWS Secrets ManagerHashiCorp Vault
typeaws_secrets_managerhashicorp_vault
detailsregion, role_arn, reference_prefixaddr, mount, kv_version (default 2), namespace, auth_mount (default approle), ca_certificate, role_id, reference_prefix
secretsNonesecret_id

The ExternalId is generated by Astralis and cannot be set. reference_prefix must end in / or :.

Deployment settings

Self-hosted deployments configure secrets managers with these environment variables, also listed in the configuration reference. An invalid value stops the server from starting.

VariableDefaultPurpose
FIDESPLUS__SECRETS_MANAGER__AWS_PRINCIPAL_ARNUnsetThe IAM principal the deployment assumes customer roles from, shown as the principal in each AWS manager's trust policy. Unset, the form shows only the ExternalId. Must be an IAM role, user, or account-root ARN; see run your own deployment.
FIDESPLUS__SECRETS_MANAGER__HEALTH_CHECK_INTERVAL_SECONDS21600Seconds between scheduled health checks. 0 disables them; otherwise at least 60.
FIDESPLUS__SECRETS_MANAGER__ELIGIBLE_CONNECTION_TYPESUnsetSee eligible integration types.
FIDES__SECRETS__AWS_SECRETS_MANAGER__CACHE_TTL_SECONDS900Fresh window for AWS managers
FIDES__SECRETS__AWS_SECRETS_MANAGER__CACHE_STALE_TTL_SECONDS1800Stale window for AWS managers
FIDES__SECRETS__HASHICORP_VAULT__CACHE_TTL_SECONDS900Fresh window for Vault managers
FIDES__SECRETS__HASHICORP_VAULT__CACHE_STALE_TTL_SECONDS1800Stale window for Vault managers