hexasync.dataprotection.azurekeyvault 1.10.35-pre.13
hexasync.dataprotection.azurekeyvault
Azure Key Vault KEK-custody adapter for hexasync.dataprotection.
Wraps/unwraps DEKs via Key Vault (the KEK never leaves the vault), version-pinned so DEKs stay unwrappable across
KEK rotations, and secretless (DefaultAzureCredential / Workload Identity). The Azure SDK is isolated to this
package; the core library has no Azure dependency.
Configuration (flat DATA_PROTECTION_* env vars)
House convention: flat UPPER_SNAKE_CASE env vars (no appsettings.json), mapped via [ConfigurationKeyName].
DATA_PROTECTION_KEK_PROVIDER=AzureKeyVault # switch custody to KV (core setting)
DATA_PROTECTION_KV_VAULT_URI=https://my-vault.vault.azure.net/
DATA_PROTECTION_KV_KEY_NAME=hexasync-kek
DATA_PROTECTION_KV_ALLOW_LOCAL_CREDENTIALS=false # true only for local dev against a real vault
kek_id is the KV key version (e.g. .../keys/hexasync-kek/<version>) — recorded per DEK so each stays
unwrappable under the exact version that wrapped it, even after the vault's current version rotates.
Wiring
services.AddDbContextFactory<MyDbContext>(o => o.UseNpgsql(cs));
services.AddHexaSyncDataProtectionWithEf<MyDbContext>(configuration); // Provider=AzureKeyVault → registers NO local wrapper
services.AddAzureKeyVaultKeyWrapper(configuration); // supplies the KV IKeyWrapper
- Order-independent relative to
AddHexaSyncDataProtectionfor the AzureKeyVault provider (it registers no wrapper, so the KV one fills the seam either way). - Do NOT mix with
Provider=Local.AddAzureKeyVaultKeyWrapperthrows if anIKeyWrapperis already registered — aLocalprovider registers one, so combining them is a fail-fast configuration error, not a silent override.
Credentials
Uses DefaultAzureCredential (Workload Identity on AKS / federated identity elsewhere) — no secrets in config.
The identity needs Key Vault wrap/unwrap (and get for version resolution) on the KEK. Environment-credential
fallback is excluded unless AllowLocalCredentials is set (local dev only).
Operations
KEK-retention (never delete a KEK version while any non-destroyed DEK records it, never faster than backups age out),
compromise/rotation, and the fleet re-wrap burst budget are in the core repo's ops runbook:
docs/data-protection/OPS_RUNBOOK.md.
No packages depend on hexasync.dataprotection.azurekeyvault.
.NET 10.0
- hexasync.dataprotection (>= 1.10.35-pre.13)
- Azure.Identity (>= 1.21.0)
- Azure.Security.KeyVault.Keys (>= 4.7.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.10.62 | 15 | 08/26/2026 |
| 1.10.61 | 43 | 08/12/2026 |
| 1.10.60 | 10 | 08/11/2026 |
| 1.10.59 | 0 | 08/10/2026 |
| 1.10.58 | 8 | 08/08/2026 |
| 1.10.57 | 19 | 08/05/2026 |
| 1.10.56 | 0 | 08/04/2026 |
| 1.10.55 | 10 | 08/03/2026 |
| 1.10.54 | 0 | 08/03/2026 |
| 1.10.54-pre | 0 | 08/01/2026 |
| 1.10.53 | 6 | 07/31/2026 |
| 1.10.49 | 0 | 07/29/2026 |
| 1.10.48 | 4 | 07/28/2026 |
| 1.10.47 | 12 | 07/27/2026 |
| 1.10.46 | 0 | 07/25/2026 |
| 1.10.45 | 0 | 07/25/2026 |
| 1.10.44 | 26 | 07/22/2026 |
| 1.10.43 | 4 | 07/21/2026 |
| 1.10.42 | 0 | 07/21/2026 |
| 1.10.41 | 0 | 07/21/2026 |
| 1.10.40 | 0 | 07/20/2026 |
| 1.10.39 | 8 | 07/15/2026 |
| 1.10.38 | 0 | 07/14/2026 |
| 1.10.38-pre.1 | 0 | 07/14/2026 |
| 1.10.37 | 0 | 07/13/2026 |
| 1.10.36 | 24 | 07/13/2026 |
| 1.10.35 | 0 | 07/10/2026 |
| 1.10.35-pre.13 | 0 | 07/10/2026 |
| 1.10.35-pre.8 | 6 | 07/09/2026 |
| 1.10.35-pre.7 | 0 | 07/08/2026 |