Documentation
¶
Overview ¶
Package omnivault provides a unified interface for secret management across multiple providers including password managers (1Password, Bitwarden), cloud secret managers (AWS, GCP, Azure), and enterprise vaults (HashiCorp Vault).
Basic usage:
client, err := omnivault.NewClient(omnivault.Config{
Provider: omnivault.ProviderEnv,
})
if err != nil {
log.Fatal(err)
}
defer client.Close()
secret, err := client.Get(ctx, "API_KEY")
Using a custom provider:
customVault := myprovider.New(...)
client, err := omnivault.NewClient(omnivault.Config{
CustomVault: customVault,
})
Using the resolver for URI-based secret references:
resolver := omnivault.NewResolver()
resolver.Register("op", onepasswordVault)
resolver.Register("env", envVault)
value, err := resolver.Resolve(ctx, "op://Development/api/token")
Index ¶
- Variables
- func IsSecretRef(s string) bool
- type BatchVault
- type Capabilities
- type Client
- func (c *Client) Capabilities() vault.Capabilities
- func (c *Client) Close() error
- func (c *Client) Delete(ctx context.Context, path string) error
- func (c *Client) Exists(ctx context.Context, path string) (bool, error)
- func (c *Client) Get(ctx context.Context, path string) (*vault.Secret, error)
- func (c *Client) GetField(ctx context.Context, path, field string) (string, error)
- func (c *Client) GetValue(ctx context.Context, path string) (string, error)
- func (c *Client) List(ctx context.Context, prefix string) ([]string, error)
- func (c *Client) MustGet(ctx context.Context, path string) *vault.Secret
- func (c *Client) MustGetValue(ctx context.Context, path string) string
- func (c *Client) Name() string
- func (c *Client) Set(ctx context.Context, path string, secret *vault.Secret) error
- func (c *Client) SetValue(ctx context.Context, path, value string) error
- func (c *Client) Vault() vault.Vault
- type Config
- type EnvConfig
- type ExtendedVault
- type FileConfig
- type Metadata
- type ProviderName
- type Resolver
- func (r *Resolver) Close() error
- func (r *Resolver) Get(scheme string) (vault.Vault, bool)
- func (r *Resolver) MustResolve(ctx context.Context, uri string) string
- func (r *Resolver) Register(scheme string, v vault.Vault)
- func (r *Resolver) Resolve(ctx context.Context, uri string) (string, error)
- func (r *Resolver) ResolveAll(ctx context.Context, uris []string) (map[string]string, error)
- func (r *Resolver) ResolveMap(ctx context.Context, m map[string]string) (map[string]string, error)
- func (r *Resolver) ResolveSecret(ctx context.Context, uri string) (*vault.Secret, error)
- func (r *Resolver) ResolveString(ctx context.Context, s string) (string, error)
- func (r *Resolver) Schemes() []string
- func (r *Resolver) Unregister(scheme string)
- type Secret
- type SecretRef
- type Timestamp
- type Vault
- type VaultError
- type Version
Constants ¶
This section is empty.
Variables ¶
var ( ErrSecretNotFound = vault.ErrSecretNotFound ErrAccessDenied = vault.ErrAccessDenied ErrInvalidPath = vault.ErrInvalidPath ErrReadOnly = vault.ErrReadOnly ErrNotSupported = vault.ErrNotSupported ErrConnectionFailed = vault.ErrConnectionFailed ErrAuthenticationFailed = vault.ErrAuthenticationFailed ErrVersionNotFound = vault.ErrVersionNotFound ErrAlreadyExists = vault.ErrAlreadyExists ErrClosed = vault.ErrClosed )
Re-export common errors from the vault package for convenience.
var ( // ErrNoProvider is returned when no provider is configured. ErrNoProvider = errors.New("no provider configured") // ErrUnknownScheme is returned when a secret reference has an unknown scheme. ErrUnknownScheme = errors.New("unknown scheme") // ErrInvalidSecretRef is returned when a secret reference is malformed. ErrInvalidSecretRef = errors.New("invalid secret reference") // ErrProviderNotRegistered is returned when a scheme has no registered provider. ErrProviderNotRegistered = errors.New("provider not registered for scheme") )
Client-specific errors.
var NewTimestamp = vault.NewTimestamp
NewTimestamp creates a Timestamp from a time.Time.
Functions ¶
func IsSecretRef ¶
IsSecretRef checks if a string looks like a secret reference URI.
Types ¶
type BatchVault ¶
type BatchVault = vault.BatchVault
BatchVault provides batch operations for providers that support them.
type Capabilities ¶
type Capabilities = vault.Capabilities
Capabilities indicates what features a provider supports.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps a vault provider with additional functionality.
func (*Client) Capabilities ¶
func (c *Client) Capabilities() vault.Capabilities
Capabilities returns the provider capabilities.
func (*Client) MustGetValue ¶
MustGetValue retrieves a secret value or panics if an error occurs.
type Config ¶
type Config struct {
// Provider is the name of a built-in provider to use.
// Ignored if CustomVault is set.
Provider ProviderName
// CustomVault allows injecting a custom vault implementation.
// When set, this takes precedence over Provider.
CustomVault vault.Vault
// ProviderConfig contains provider-specific configuration.
// The expected type depends on the provider being used.
ProviderConfig any
// HTTPClient is an optional HTTP client for providers that make HTTP requests.
HTTPClient *http.Client
// Logger is an optional structured logger.
Logger *slog.Logger
// Extra contains additional provider-specific options.
Extra map[string]any
}
Config holds configuration for creating a new Client.
type ExtendedVault ¶
type ExtendedVault = vault.ExtendedVault
ExtendedVault provides additional features beyond the basic Vault interface.
type FileConfig ¶
FileConfig is an alias for file.Config for convenience.
type ProviderName ¶
type ProviderName string
ProviderName represents a known vault provider.
const ( // OS-Level Credential Stores ProviderKeychain ProviderName = "keychain" // macOS Keychain ProviderWinCred ProviderName = "wincred" // Windows Credential Manager ProviderLibSecret ProviderName = "libsecret" // Linux Secret Service ProviderKeyring ProviderName = "keyring" // Cross-platform (auto-detect) // Password Managers Provider1Password ProviderName = "op" // 1Password ProviderBitwarden ProviderName = "bw" // Bitwarden ProviderLastPass ProviderName = "lp" // LastPass ProviderKeePass ProviderName = "kp" // KeePass/KeePassXC ProviderPass ProviderName = "pass" // pass/gopass ProviderDashlane ProviderName = "dashlane" // Dashlane // Cloud Secret Managers ProviderAWSSecretsManager ProviderName = "aws-sm" // AWS Secrets Manager ProviderAWSParameterStore ProviderName = "aws-ssm" // AWS Systems Manager Parameter Store ProviderGCPSecretManager ProviderName = "gcp-sm" // Google Cloud Secret Manager ProviderAzureKeyVault ProviderName = "azure-kv" // Azure Key Vault ProviderDigitalOcean ProviderName = "do" // DigitalOcean ProviderIBMSecretsManager ProviderName = "ibm-sm" // IBM Cloud Secrets Manager ProviderOracleVault ProviderName = "oracle" // Oracle Cloud Vault // Enterprise/Self-Hosted Vaults ProviderHashiCorpVault ProviderName = "vault" // HashiCorp Vault ProviderCyberArk ProviderName = "conjur" // CyberArk Conjur ProviderAkeyless ProviderName = "akeyless" // Akeyless ProviderInfisical ProviderName = "infisical" // Infisical ProviderDoppler ProviderName = "doppler" // Doppler // Development/Local ProviderEnv ProviderName = "env" // Environment variables ProviderFile ProviderName = "file" // File-based ProviderMemory ProviderName = "memory" // In-memory (testing) ProviderDotEnv ProviderName = "dotenv" // .env files ProviderSOPS ProviderName = "sops" // Mozilla SOPS ProviderAge ProviderName = "age" // age encryption // Kubernetes ProviderK8sSecrets ProviderName = "k8s" // Kubernetes Secrets )
Known provider names.
func (ProviderName) Scheme ¶
func (p ProviderName) Scheme() string
Scheme returns the URI scheme for this provider.
func (ProviderName) String ¶
func (p ProviderName) String() string
String returns the string representation of the provider name.
type Resolver ¶
type Resolver struct {
// contains filtered or unexported fields
}
Resolver handles URI-based secret resolution across multiple providers. It routes secret references to the appropriate provider based on the URI scheme.
func (*Resolver) MustResolve ¶
MustResolve resolves a secret reference or panics if an error occurs.
func (*Resolver) Register ¶
Register adds a vault provider for the given scheme. The scheme should match the URI scheme used in secret references (e.g., "op" for op://..., "env" for env://...).
func (*Resolver) Resolve ¶
Resolve resolves a secret reference URI and returns the secret value. The URI format is: scheme://path[#field]
Examples:
resolver.Resolve(ctx, "op://vault/item/field") resolver.Resolve(ctx, "env://API_KEY") resolver.Resolve(ctx, "aws-sm://my-secret#password")
func (*Resolver) ResolveAll ¶
ResolveAll resolves multiple secret references and returns a map of URI to value. If any resolution fails, it returns an error.
func (*Resolver) ResolveMap ¶
ResolveMap resolves all values in a map that are secret references. Non-reference values are passed through unchanged.
func (*Resolver) ResolveSecret ¶
ResolveSecret resolves a secret reference URI and returns the full Secret.
func (*Resolver) ResolveString ¶
ResolveString resolves a string if it's a secret reference, otherwise returns it as-is. This is useful for processing configuration values that may or may not be secret references.
func (*Resolver) Unregister ¶
Unregister removes a vault provider for the given scheme.
type Secret ¶
Secret represents a stored secret with its value and metadata.
func NewSecretBytes ¶
NewSecretBytes creates a new Secret with binary data.
func NewSecretWithFields ¶
NewSecretWithFields creates a new Secret with the given fields.
type VaultError ¶
type VaultError = vault.VaultError
VaultError is a structured error with additional context.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
omnivault
command
Package main provides the omnivault CLI.
|
Package main provides the omnivault CLI. |
|
examples
|
|
|
custom_provider
command
Example: Custom Provider Implementation
|
Example: Custom Provider Implementation |
|
internal
|
|
|
client
Package client provides a client for the OmniVault daemon.
|
Package client provides a client for the OmniVault daemon. |
|
config
Package config provides configuration and path management for OmniVault.
|
Package config provides configuration and path management for OmniVault. |
|
daemon
Package daemon provides the OmniVault daemon server.
|
Package daemon provides the OmniVault daemon server. |
|
store
Package store provides encrypted storage for OmniVault.
|
Package store provides encrypted storage for OmniVault. |
|
providers
|
|
|
env
Package env provides a vault implementation that reads secrets from environment variables.
|
Package env provides a vault implementation that reads secrets from environment variables. |
|
file
Package file provides a file-based vault implementation.
|
Package file provides a file-based vault implementation. |
|
memory
Package memory provides an in-memory vault implementation.
|
Package memory provides an in-memory vault implementation. |
|
Package vault defines the core interfaces for secret storage providers.
|
Package vault defines the core interfaces for secret storage providers. |