10个版本
| 0.2.3 | 2023年7月25日 | 
|---|---|
| 0.2.2 | 2023年7月25日 | 
| 0.1.5 | 2023年7月19日 | 
547 in 身份认证
25KB
486 代码行
Valensas Vault - Vault库
此库提供了一个方便的接口来与Vault交互。它允许身份认证、密钥管理以及令牌续订。
用法
有关详细信息,请访问: https://docs.rs/valensas-vault 仓库: https://github.com/Valensas/rust-vault
安装
将以下内容添加到您的 Cargo.toml 文件中
[dependencies]
valensas-vault = "0.2.3"
lib.rs:
此库提供了一个方便的接口来与Vault交互。它允许身份认证、密钥管理以及令牌续订。
安装
将以下内容添加到您的 Cargo.toml 文件中
[dependencies]
valensas-vault = "0.2.3"
功能
仅支持KV v2密钥引擎的操作。可以使用令牌或Kubernetes身份验证进行身份验证。
用法
手动配置
根据需要创建VaultConfig和AuthMethod
 let config = VaultConfig {
     address: "https://:8200".to_string(),
     mount_path: "asd".to_string(),
     client_timeout: std::time::Duration::from_secs(10),
     healthcheck_file_path: "/healthcheck".to_string(),
     login_retry_count: 10,
 };
 let auth_method: Arc<RwLock<dyn AuthMethod>> = Arc::new(RwLock::new(TokenAuth::new("some_token".to_string())));
从配置和身份验证方法创建VaultService
let vault_service = VaultService::new(config, Arc::clone(&auth_method)).await.unwrap();
环境配置
以下环境变量用于配置VaultService
 VAULT_ADDR: "https://:8200"
 VAULT_MOUNT_PATH: secret
 VAULT_HEALTH_CHECK_FILE: healthcheck_file
 VAULT_CLIENT_TIMEOUT: 5s
 VAULT_LOGIN_RETRY_COUNT: 5
Kubernetes身份验证
VAULT_AUTH_METHOD: Kubernetes
VAULT_KUBERNETES_TOKEN_PATH: /var/run/secrets/kubernetes.io/serviceaccount/token
令牌身份验证
VAULT_AUTH_METHOD: Token
VAULT_TOKEN: vault_token
给定值是变量的默认值。请确保用您的变量替换Vault配置中的变量。
示例用法
use std::time::Duration;
use valensas_vault::service::{HealthCheckData, VaultService};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
struct TestData {
    name: String,
}
#[tokio::main]
async fn main() {
    let (vault_service, _auth_method) = VaultService::from_env().await.unwrap();
    // Write a secret to Vault
    let secret_key = "my-new-secret-key";
    let secret_value = TestData {
        name: "data".to_string(),
    };
    vault_service.insert(secret_key, secret_value).await.unwrap();
    println!("Secret inserted successfully.");
    // Read a secret from Vault
    let value = vault_service.read::<TestData>(secret_key).await.unwrap();
    println!("Secret read successfully.");
}
令牌续订
 use std::time::Duration;
 use valensas_vault::service::{VaultService, TokenRenewable};
 use tokio::sync::RwLock;
 use std::sync::Arc;
 #[tokio::main]
 async fn main() {
     // Initialize the Vault service
     let (vault_service, auth_method) = VaultService::from_env().await.unwrap();
     let vault_service = Arc::new(RwLock::new(vault_service));
     // Start token renewal
     let handler = vault_service.start_token_renewal(auth_method);
     // Perform some operations...
     // ...
     // Stop token renewal
     // handler may be none in case if auth method is Kubernetes
     if let Ok(Some(token_renewal_handler)) = handler {
         vault_service.stop_token_renew_loop(token_renewal_handler).await;
     }
 }
依赖
~10–23MB
~357K SLoC