Secrets (core.secrets)¶
Base¶
Secrets management abstractions and models.
- class pyspark_pipeline_framework.core.secrets.base.SecretResolutionStatus(*values)[source]¶
-
Outcome of a secret resolution attempt.
- SUCCESS = 'success'¶
- NOT_FOUND = 'not_found'¶
- ERROR = 'error'¶
- class pyspark_pipeline_framework.core.secrets.base.SecretsReference(provider, key)[source]¶
Bases:
objectReference to a secret in a specific provider.
- Parameters:
- class pyspark_pipeline_framework.core.secrets.base.SecretResolutionResult(reference, status, value=None, error=None)[source]¶
Bases:
objectResult of resolving a secret reference.
The
valuefield is masked in__repr__to prevent accidental leakage in logs or tracebacks.- Parameters:
reference (SecretsReference) – The original reference that was resolved.
status (SecretResolutionStatus) – Outcome of the resolution.
value (str | None) – The secret value (only set on success).
error (str | None) – Error description (only set on failure).
- reference: SecretsReference¶
- status: SecretResolutionStatus¶
- class pyspark_pipeline_framework.core.secrets.base.SecretsProvider[source]¶
Bases:
ABCBase class for secrets providers.
Subclasses implement
resolve()to fetch secrets from a specific backend (environment variables, AWS Secrets Manager, etc.).- abstractmethod resolve(reference)[source]¶
Resolve a single secret reference.
- Parameters:
reference (SecretsReference)
- Return type:
- resolve_all(references)[source]¶
Resolve multiple secret references.
- Parameters:
references (list[SecretsReference])
- Return type:
Providers¶
Built-in secrets provider implementations.
- class pyspark_pipeline_framework.core.secrets.providers.EnvSecretsProvider[source]¶
Bases:
SecretsProviderResolve secrets from environment variables.
No external dependencies required.
- resolve(reference)[source]¶
Resolve a single secret reference.
- Parameters:
reference (SecretsReference)
- Return type:
- class pyspark_pipeline_framework.core.secrets.providers.AwsSecretsProvider(region_name=None)[source]¶
Bases:
SecretsProviderResolve secrets from AWS Secrets Manager.
Requires
boto3to be installed. The client is created lazily on the first call toresolve().- Parameters:
region_name (str | None) – AWS region. Defaults to boto3’s default region.
- resolve(reference)[source]¶
Resolve a single secret reference.
- Parameters:
reference (SecretsReference)
- Return type:
- class pyspark_pipeline_framework.core.secrets.providers.VaultSecretsProvider(url, token=None, mount_point='secret')[source]¶
Bases:
SecretsProviderResolve secrets from HashiCorp Vault (KV v2 engine).
Requires
hvacto be installed. The client is created lazily on the first call toresolve().Key format:
"path/to/secret"returns the"value"field, or"path/to/secret:field"returns a specific field.- Parameters:
- resolve(reference)[source]¶
Resolve a single secret reference.
- Parameters:
reference (SecretsReference)
- Return type:
Resolver¶
Secrets resolver and caching layer.
- class pyspark_pipeline_framework.core.secrets.resolver.SecretsResolver[source]¶
Bases:
objectComposite resolver that routes requests to registered providers.
Each
SecretsReferenceis dispatched to the provider whoseprovider_namematchesSecretsReference.provider.- register(provider)[source]¶
Register a secrets provider.
- Parameters:
provider (SecretsProvider)
- Return type:
None
- resolve(reference)[source]¶
Resolve a secret using the appropriate provider.
- Parameters:
reference (SecretsReference)
- Return type:
- resolve_all(references)[source]¶
Resolve multiple secret references.
- Parameters:
references (list[SecretsReference])
- Return type:
- class pyspark_pipeline_framework.core.secrets.resolver.SecretsCache(resolver, ttl_seconds=300, clock=None)[source]¶
Bases:
objectThread-safe caching wrapper for secret resolution.
Caches all resolution results (success, not-found, and error) with a configurable TTL. Use
clear()to manually invalidate.- Parameters:
resolver (SecretsResolver) – The underlying resolver to delegate to on cache miss.
ttl_seconds (int) – Cache entry lifetime in seconds. Defaults to 300.
clock (Callable[[], float] | None) – Injectable monotonic clock for testing. Defaults to
time.monotonic.
- resolve(reference)[source]¶
Resolve a secret, returning a cached result if available.
- Parameters:
reference (SecretsReference)
- Return type:
- resolve_all(references)[source]¶
Resolve multiple secret references with caching.
- Parameters:
references (list[SecretsReference])
- Return type:
Audit¶
Audit-aware wrapper for secrets resolution.
- class pyspark_pipeline_framework.core.secrets.audit.SecretsAuditLogger(resolver, sink, actor='secrets_resolver')[source]¶
Bases:
objectDecorator that emits audit events for secret access.
Wraps a
SecretsResolverorSecretsCacheand emits anAuditEventwithAuditAction.SECRET_ACCESSEDfor everyresolve()call. The secret value is never included in the audit trail.- Parameters:
resolver (SecretsResolver | SecretsCache) – The underlying resolver or cache to delegate to.
sink (AuditSink) – Audit sink that receives the events.
actor (str) – Actor name recorded in audit events. Defaults to
"secrets_resolver".
- resolve(reference)[source]¶
Resolve a secret and emit an audit event.
- Parameters:
reference (SecretsReference)
- Return type:
- resolve_all(references)[source]¶
Resolve multiple secrets, emitting an audit event for each.
- Parameters:
references (list[SecretsReference])
- Return type: