External Secrets Operator integrates with Devolutions Server (DVLS) for secret management.
DVLS is a self-hosted privileged access management solution that provides secure password management, role-based access control, and credential injection for teams and enterprises.
DVLS authentication uses Application ID and Application Secret credentials.
Create a Kubernetes secret containing your DVLS credentials:
kubectl create secret generic dvls-credentials \
--from-literal=app-id="your-application-id" \
--from-literal=app-secret="your-application-secret"
{% include 'dvls-secret-store.yaml' %}
| Field | Description |
|---|---|
serverUrl |
The URL of your DVLS instance (e.g., https://dvls.example.com) |
insecure |
(Optional) Set to true to allow plain HTTP connections. Not recommended for production. |
auth.secretRef.appId |
Reference to the secret containing the Application ID |
auth.secretRef.appSecret |
Reference to the secret containing the Application Secret |
NOTE: For ClusterSecretStore, ensure you specify the namespace in the secret references.
Secrets are referenced using the format: <vault-id>/<entry-id>
You can find these UUIDs in the DVLS web interface by viewing the entry properties.
DVLS supports multiple credential types. The provider maps each type to specific properties:
| Credential Type | DVLS Entry Type | Available Properties |
|---|---|---|
| Default | Credential | username, password, domain |
| Access Code | Secret | password |
| API Key | Credential | api-id, api-key, tenant-id |
| Azure Service Principal | Credential | client-id, client-secret, tenant-id |
| Connection String | Credential | connection-string |
| Private Key | Credential | username, password, private-key, public-key, passphrase |
All entries also include entry-id and entry-name metadata properties.
Note: When no property is specified, the password field is returned by default.
Note: In the DVLS web interface, "Secret" entries appear as a distinct entry type and are mapped to the Access Code credential subtype internally.
To fetch specific properties from a credential entry:
{% include 'dvls-external-secret.yaml' %}
When using dataFrom.extract, all available properties from the credential entry will be synced to the Kubernetes secret.
The DVLS provider supports pushing secrets back to DVLS:
{% include 'dvls-push-secret.yaml' %}
Note: Push secret updates an existing entry's password field. The entry must already exist in DVLS.
find operation for discovering secrets is not currently supportedSSL_CERT_FILE environment variable as a workaroundvault-id/entry-id) are supported. Path/name-based lookups are planned for future releasesDocument/Certificate) are not currently supported. Only Credential entries are supportedIf you receive authentication errors:
If an entry cannot be found: