Key vaults¶
The full guide is at Vaults. Two keys configure them.
key_vaults¶
- Type:
list[dict]· Default:[]
An ordered list of key-vault backends. unshackle queries them in order and reuses content
keys instead of re-licensing. Each entry needs a type (the backend module name) and a
name, plus backend-specific keys.
type |
Purpose | Required keys | Notes |
|---|---|---|---|
SQLite |
Local SQLite database | name, path |
Loaded critically; a failure aborts the run. |
MySQL |
Remote MySQL database | name, host, database, username |
Extra keys (e.g. password, port) forwarded to pymysql. |
API |
RESTful JSON API | name, uri, token |
Optional headers map is sent with every request. Honours vault_timeout. |
HTTP |
HTTP API with modes | name, host, one of password/api_key, and username in query mode |
api_mode: query (default), json, decrypt_labs. Honours vault_timeout. |
key_vaults:
- type: SQLite
name: Local
path: ~/.unshackle/keys.db
- type: MySQL
name: Team
host: db.example.com
database: keys
username: unshackle
password: hunter2
no_push: false
Per-entry options
no_push: truemakes a vault read-only (keys are fetched but never written to it).- A vault of
type: APIwhosenamecontainsdecrypt_labsauto-fills itstokenfromdecrypt_labs_api_keywhen not set inline. Vaulttypevalues are case-sensitive module names. - An all-zero content key (32 zeros) is treated as "no key" everywhere and is never stored.
vault_timeout¶
- Type:
float· Default:10.0
Timeout in seconds for vault operations. Injected automatically into any backend whose
constructor accepts a timeout parameter (a per-vault timeout still wins).