Skip to main content

zlayer_secrets/
lib.rs

1//! `ZLayer` Secrets Management
2//!
3//! Provides secure storage and retrieval of secrets for container workloads.
4//!
5//! ## Scoping
6//! Secrets are organized hierarchically:
7//! - Deployment-level: Shared by all services in a deployment
8//! - Service-level: Specific to a single service
9//!
10//! ## Syntax
11//! - `$S:secret-name` - Deployment-level secret
12//! - `$S:@service/secret-name` - Service-specific secret
13//! - `$secret://<env>/<KEY>` - Environment-scoped secret (requires an
14//!   [`EnvScopeProvider`] wired via [`SecretsResolver::with_env_resolver`])
15//! - `$secret://<env>/<KEY>/<field>` - With JSON field extraction
16
17pub mod cluster_dek;
18mod cluster_signer;
19mod encryption;
20mod error;
21mod jwt;
22mod key_manager;
23pub mod node_effects;
24mod provider;
25pub mod raft_sm;
26pub mod raft_store;
27pub mod sealed;
28mod types;
29mod worker_bootstrap;
30mod worker_ca;
31
32#[cfg(feature = "persistent")]
33pub mod client_keys;
34
35#[cfg(feature = "persistent")]
36mod persistent;
37
38#[cfg(feature = "persistent")]
39pub mod credentials;
40
41#[cfg(feature = "persistent")]
42pub mod registry_auth;
43
44#[cfg(feature = "persistent")]
45pub mod registry_credentials;
46
47#[cfg(feature = "persistent")]
48pub mod git_credentials;
49
50#[cfg(feature = "vault")]
51mod vault;
52
53pub use cluster_dek::ClusterDek;
54pub use cluster_signer::{
55    list_valid_pubkeys, load_signer_for_kid, prune_expired_grace, rotate_keystore, ClusterCa,
56    ClusterSigner, FileBackend, KeystoreRotationResult, PubkeyInfo, PubkeyStatus, SigningBackend,
57};
58pub use encryption::EncryptionKey;
59pub use error::{Result, SecretsError};
60pub use jwt::{JwtSecretManager, ENV_JWT_SECRET};
61pub use key_manager::{load_or_generate_node_keypair, node_secrets_key_path, KeyManager};
62pub use node_effects::NodeSideEffects;
63pub use provider::{EnvScopeProvider, SecretsProvider, SecretsResolver, SecretsStore};
64pub use raft_sm::SecretsState;
65pub use raft_store::{RaftSecretsHandle, RaftSecretsStore};
66pub use sealed::{RecipientPrivateKey, RecipientPublicKey, SealedError, SealedSecret};
67pub use types::{RotationResult, Secret, SecretMetadata, SecretRef, SecretScope};
68pub use worker_bootstrap::{
69    issue_worker_bootstrap_token, verify_worker_bootstrap_token, WorkerBootstrapClaims,
70    WorkerBootstrapToken,
71};
72pub use worker_ca::{
73    WorkerCa, DEFAULT_CA_VALIDITY_YEARS, DEFAULT_LEAF_VALIDITY_DAYS, WORKER_CA_CERT_FILE,
74    WORKER_CA_KEY_FILE,
75};
76
77#[cfg(feature = "persistent")]
78pub use client_keys::{ActorKind, ClientKeyStore, ClientPublicKey, PersistentClientKeyStore};
79
80#[cfg(feature = "persistent")]
81pub use persistent::PersistentSecretsStore;
82
83#[cfg(feature = "persistent")]
84pub use credentials::{CredentialStore, ExportedCredential};
85
86#[cfg(feature = "persistent")]
87pub use git_credentials::{GitCredential, GitCredentialKind, GitCredentialStore};
88
89#[cfg(feature = "persistent")]
90pub use registry_auth::{resolve_registry_auth_async, resolve_stored_registry_auth};
91
92#[cfg(feature = "persistent")]
93pub use registry_credentials::{RegistryAuthType, RegistryCredential, RegistryCredentialStore};
94
95#[cfg(feature = "vault")]
96pub use vault::VaultSecretsProvider;