hexasync.dataprotection.azurekeyvault 1.10.74-pre.6

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);   // registers Local too, if a master key is set
if (!string.IsNullOrWhiteSpace(configuration["DATA_PROTECTION_KV_VAULT_URI"]))
    services.AddAzureKeyVaultKeyWrapper(configuration);                 // adds the AzureKeyVault provider
  • Local and AzureKeyVault coexist. Each configured provider registers itself: Local whenever DATA_PROTECTION_MASTER_KEY_BASE64 is set, AzureKeyVault when you call AddAzureKeyVaultKeyWrapper. Registering both is not an error. DATA_PROTECTION_KEK_ACTIVE (default: DATA_PROTECTION_KEK_PROVIDER) picks the provider that wraps new and re-wrapped DEKs; unwrap routes to whichever provider wrapped a given DEK. This is the supported Local→AzureKeyVault cutover: keep both registered, flip KEK_ACTIVE, re-wrap — see the core package README ("Multiple KEK providers") and the integration guide §5b (docs/data-protection/README.md in the library repo).
  • Order-independent relative to AddHexaSyncDataProtection.
  • Gate the call on the vault URI. AddAzureKeyVaultKeyWrapper throws when DATA_PROTECTION_KV_VAULT_URI or DATA_PROTECTION_KV_KEY_NAME is unset, so an unconditional call breaks every environment that runs Local only.

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. The environment (client-secret) credential is always excluded, so a stray AZURE_CLIENT_SECRET can never become the route to the KEK. AllowLocalCredentials (local dev only) re-enables only the developer-tool credentials — Azure CLI, Azure Developer CLI, Azure PowerShell and Visual Studio — never the environment credential.

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

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