Skip to main content
Private Preview·Early access by invitation.Request access →
Kirimana.
Docs · Vaults

Configure Databricks Secret Scopes

Project YAML never carries a secret value. Anywhere a credential is needed, the YAML holds a ${vault:…} reference that resolves at run time. When your control plane runs next to a Databricks workspace, the natural place to keep those secrets is Databricks Secret Scopes — and Kirimana resolves refs directly against them, so a secret you already manage in the workspace is a secret Kirimana can read without a second copy anywhere.

How refs map to scopes

A ${vault:…} ref has a scheme, a secret id, and a key. With the Databricks backend, the secret id is the scope name and the key is the secret key within that scope:

auth:
  kind: bearer
  value_ref: "${vault:jira-credentials:bot-token}"

This resolves scope jira-credentials, key bot-token, and reads it from the workspace with GET /api/2.0/secrets/get. The value Databricks returns is base64-encoded on the wire; Kirimana decodes it and hands your run the plaintext. The provider holds no plaintext in Kirimana’s own storage — it forwards each read to Databricks and keeps the value in memory only for the lifetime of the run, with a per-process cache so the same secret isn’t re-fetched dozens of times during one apply.

Setup

Two things need to be true.

The secret exists in a scope. A workspace operator stores it in a Databricks Secret Scope — either a Databricks-managed scope or one backed by Azure Key Vault or AWS Secrets Manager. Kirimana reads whichever kind you use; the ref shape is identical.

Kirimana can read the scope. Reads authenticate as the Databricks service principal, and the SP needs READ on the scope’s ACL. If a ref fails to resolve, the error distinguishes the cause: a missing secret (not found), an expired or revoked token (authentication failed — refresh or rotate the token), or a scope the SP may not read (access denied — grant the SP READ on the scope). You are told which of the three it is, so you fix the right thing.

Once the scope and the ACL are in place, confirm the wiring end to end:

kiri databricks health --target prod

The vault-scope probe verifies that every ${vault:…} ref in kiri.yml resolves. A green probe means your refs are wired; a FAIL points at the ref that isn’t.

Rotation

Rotation is a re-set at the workspace. Because a ${vault:…} ref is indirection — the YAML points at a scope and key, never at a value — writing a new value over the same scope/key in Databricks means every ref resolves to the new value on the next run. No YAML changes, no redeploy, no contract edits.

After rotating a platform credential such as the service-principal token, re-run kiri databricks health to confirm the new value is readable through the whole chain before you rely on it.

When to choose this backend

Databricks Secret Scopes are the right home for secrets when Kirimana runs alongside a Databricks deployment and you want one place to manage credentials. Because the scope can itself be backed by a cloud key vault, you get the workspace’s own ACL model on top of your existing secret store without Kirimana ever holding a copy. Kirimana is in private beta at v1.0.0-beta.1; the Secret Scopes backend is available today.

Updated 5 July 2026 · v1.0.0-beta.1