hexasync.dataprotection.azurekeyvault 1.10.64

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 AddHexaSyncDataProtection for the AzureKeyVault provider (it registers no wrapper, so the KV one fills the seam either way).
  • Do NOT mix with Provider=Local. AddAzureKeyVaultKeyWrapper throws if an IKeyWrapper is already registered — a Local provider 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.

Version Downloads Last updated
1.10.76-pre.4 7 10/29/2026
1.10.76-pre.3 12 10/28/2026
1.10.76-pre.2 6 10/28/2026
1.10.76-pre.1 4 10/27/2026
1.10.75 10 10/23/2026
1.10.75-pre 8 10/19/2026
1.10.74 8 10/19/2026
1.10.74-pre.7 0 10/19/2026
1.10.74-pre.6 15 10/17/2026
1.10.74-pre.5 0 10/17/2026
1.10.74-pre.3 24 10/14/2026
1.10.74-pre.2 2 10/14/2026
1.10.74-pre 1 10/14/2026
1.10.73 12 10/13/2026
1.10.72 0 10/13/2026
1.10.71 8 10/12/2026
1.10.71-pre 12 10/12/2026
1.10.70 2 10/10/2026
1.10.69 13 10/08/2026
1.10.68 0 10/08/2026
1.10.67 25 09/30/2026
1.10.67-pre 2 09/28/2026
1.10.66 108 09/22/2026
1.10.65 0 09/22/2026
1.10.64 0 09/08/2026
1.10.63 12 09/08/2026
1.10.62 73 08/26/2026
1.10.61 63 08/12/2026
1.10.60 10 08/11/2026
1.10.59 0 08/10/2026
1.10.58 64 08/08/2026
1.10.57 20 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