-
Notifications
You must be signed in to change notification settings - Fork 279
Open
Labels
Description
Summary
Add a KeyVaultResolver to the Extension SDK (pkg/azdext) that resolves Azure Key Vault secret references embedded in environment variables. This eliminates ~100+ lines of duplicated Key Vault resolution logic across each extension.
Motivation
Extensions running scripts or managing environments need to resolve Azure Key Vault references embedded in environment variables. Without framework support, each extension imports duplicated infrastructure:
- azd-exec uses Key Vault resolution with a
StopOnKeyVaultErrorconfig flag and factory pattern - azd-app implements custom Config/AppConfig structs with Load(), Save(), and AtomicWriteJSON
- azd-core provides shared
keyvaultpackage that every extension depends on
Evidence: azd-exec KV resolution, azd-core keyvault package
Supported Reference Formats
akvs://<subscription>/<vault>/<secret>@Microsoft.KeyVault(SecretUri=https://<vault>.vault.azure.net/secrets/<name>[/<version>])@Microsoft.KeyVault(VaultName=...;SecretName=...)
Features
- KeyVaultResolver: Thread-safe per-vault client caching, batch resolution via
ResolveMap, structured error types withResolveReasonclassification, configurable vault suffix for sovereign clouds - Helper functions:
IsSecretReference,ParseKeyVaultAppReference,ResolveSecretEnvironmentfor bulk env var resolution - Integration point:
cmd/extensions.gocallsResolveSecretEnvironmentbefore passing env vars to extensions, so extensions receive plain secret values transparently - Core keyvault additions:
IsKeyVaultAppReference,ParseKeyVaultAppReference,SecretFromKeyVaultReference,ResolveSecretEnvironmentinpkg/keyvault
Files
cli/azd/pkg/azdext/keyvault_resolver.go— KeyVaultResolver with Resolve, ResolveMap, error typescli/azd/pkg/azdext/keyvault_resolver_test.go— comprehensive tests (577 lines)cli/azd/pkg/keyvault/keyvault.go— helper functions for @Microsoft.KeyVault format parsingcli/azd/cmd/extensions.go— integration: resolve KV refs before passing env to extensionscli/azd/internal/cmd/show/show.go— documentation comments for KV resolution
Related
- Part of #6853 Extension Framework Improvements
- Originally in #6945 P1 Integration Helpers (bundled with Config Helpers)
- Extracted from PR #7025 to reduce PR scope
Branch
feature/ext-sdk-kv-resolver on jongio/azure-dev
Reactions are currently unavailable