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_credentials;
43
44#[cfg(feature = "persistent")]
45pub mod git_credentials;
46
47#[cfg(feature = "vault")]
48mod vault;
49
50pub use cluster_dek::ClusterDek;
51pub use cluster_signer::{
52    list_valid_pubkeys, load_signer_for_kid, prune_expired_grace, rotate_keystore, ClusterCa,
53    ClusterSigner, FileBackend, KeystoreRotationResult, PubkeyInfo, PubkeyStatus, SigningBackend,
54};
55pub use encryption::EncryptionKey;
56pub use error::{Result, SecretsError};
57pub use jwt::{JwtSecretManager, ENV_JWT_SECRET};
58pub use key_manager::{load_or_generate_node_keypair, node_secrets_key_path, KeyManager};
59pub use node_effects::NodeSideEffects;
60pub use provider::{EnvScopeProvider, SecretsProvider, SecretsResolver, SecretsStore};
61pub use raft_sm::SecretsState;
62pub use raft_store::{RaftSecretsHandle, RaftSecretsStore};
63pub use sealed::{RecipientPrivateKey, RecipientPublicKey, SealedError, SealedSecret};
64pub use types::{RotationResult, Secret, SecretMetadata, SecretRef, SecretScope};
65pub use worker_bootstrap::{
66    issue_worker_bootstrap_token, verify_worker_bootstrap_token, WorkerBootstrapClaims,
67    WorkerBootstrapToken,
68};
69pub use worker_ca::{
70    WorkerCa, DEFAULT_CA_VALIDITY_YEARS, DEFAULT_LEAF_VALIDITY_DAYS, WORKER_CA_CERT_FILE,
71    WORKER_CA_KEY_FILE,
72};
73
74#[cfg(feature = "persistent")]
75pub use client_keys::{ActorKind, ClientKeyStore, ClientPublicKey, PersistentClientKeyStore};
76
77#[cfg(feature = "persistent")]
78pub use persistent::PersistentSecretsStore;
79
80#[cfg(feature = "persistent")]
81pub use credentials::CredentialStore;
82
83#[cfg(feature = "persistent")]
84pub use git_credentials::{GitCredential, GitCredentialKind, GitCredentialStore};
85
86#[cfg(feature = "persistent")]
87pub use registry_credentials::{RegistryAuthType, RegistryCredential, RegistryCredentialStore};
88
89#[cfg(feature = "vault")]
90pub use vault::VaultSecretsProvider;