Expand description
§Secret Vault for Rust
Library provides the support for the secrets coming to your application from the following sources::
- Google Cloud Secret Manager
- Amazon Secrets Manager
- Environment variables
- Files source (mostly designed to read K8S secrets mounted as files)
- Temporarily available secret generator generated by cryptographic pseudo-random number generator
§Features
- Reading/caching registered secrets and their metadata in memory from defined sources;
- Extensible and strongly typed API to be able to implement any kind of sources;
- Memory encryption using AEAD cryptography (optional);
- Memory encryption using Google/AWS KMS envelope encryption (https://cloud.google.com/kms/docs/envelope-encryption) (optional);
- Automatic refresh secrets from the sources support (optional);
- Multi-sources support;
- Snapshots for performance-critical secrets;
ⓘ
// Describing secrets and marking them non-required
// since this is only example and they don't exist in your project
let secret_ref1 = SecretVaultRef::new("test-secret-xRnpry".into())
.with_required(false)
.with_secret_version("AWSCURRENT".into());
let secret_ref2 = SecretVaultRef::new("another-secret-222222".into()).with_required(false);
// Building the vault
let vault = SecretVaultBuilder::with_source(
aws::AwsSecretManagerSource::new(&config_env_var("ACCOUNT_ID")?).await?,
)
.with_encryption(ring_encryption::SecretVaultRingAeadEncryption::new()?)
.with_secret_refs(vec![&secret_ref1, &secret_ref2])
.build()?;
// Load secrets from source
vault.refresh().await?;
// Reading the secret
let secret_value: Option<Secret> = vault.get_secret_by_ref(&secret_ref1).await?;
// Or
let secret_value: Secret = vault.require_secret_by_ref(&secret_ref1).await?;
// Using the Viewer API to share only methods able to read secrets
let vault_viewer = vault.viewer();
vault_viewer.get_secret_by_ref(&secret_ref2).await?;§Complete examples, more detail docs and security considerations and benchmarks:
Available on github
Modules§
Structs§
- Encrypted
Secret Value - Files
Source - Files
Source Options - Files
Source Options Init - Insecure
EnvSource - Mock
Secrets Source - Multiple
Secrets Sources - Secret
- Secret
Init - Secret
Metadata - Secret
Metadata Annotation - Secret
Metadata Annotation Init - Secret
Metadata Init - Secret
Metadata Label - Secret
Metadata Label Init - Secret
Name - Secret
Namespace - Secret
Vault - Secret
Vault Auto Refresher - Secret
Vault Auto Refresher Options - Secret
Vault Auto Refresher Options Init - Secret
Vault Builder - Secret
Vault Hash MapSnapshot - Secret
Vault Hash MapSnapshot Builder - Secret
Vault Key - Secret
Vault KeyInit - Secret
Vault NoEncryption - Secret
Vault Ref - Secret
Vault Viewer - Secret
Version - Temp
Secret GenSource - Temp
Secret GenSource Options - Temp
Secret Options - Temp
Secret Options Init