#env-var #vault #secret #load #fetch #retrieve #credentials

vault-credentials

Rust库,从Vault中获取秘密并将它们作为环境变量加载

8个版本 (3个稳定版)

1.0.2 2022年1月5日
1.0.0 2022年1月4日
0.4.1 2021年10月11日
0.4.0 2021年5月14日
0.1.0 2021年3月14日

#629身份验证

MIT/Apache

11KB
187

Vault Credentials

Rust库,从Vault中获取秘密并将它们作为环境变量加载。受Spring Cloud Vault启发。

入门

我们假设您想要从您本地的 Vault服务器检索一些秘密。

这是位于 secret/hello 的json秘密(从Vault的角度来看,可以通过使用Vault UI或Vault CLI获取)

{
  "my-key": "my-value",
  "github.com": {
    "api-key": "123456",
    "base-url": "https://127.0.0.1:8080"
  }
}

在您的程序中,您必须提供连接到Vault服务器并检索令牌所需的环境变量。您可以使用.dotenv crate并将变量放入.env文件中。

VAULT_ADDR=http://127.0.0.1:8200
VAULT_PATH=hello
VAULT_TYPE=approle
VAULT_ROLE_ID=9bf0581f-[...]-533ba207ec80
VAULT_SECRET_ID=55473ff2-[...]-0ab9ae6e499b

要在程序中使用vault_credentials crate,导入它并调用initialize方法。

use dotenv::dotenv;

#[tokio::main]
async fn main() {
    dotenv().ok();
    vault_credentials::initialize().await;

    println!("{}", std::env::var("github.com.api-key").unwrap());
    // Output: 123456
}

身份验证类型

您可以使用其他类型的身份验证,方法是在VAULT_TYPE中使用。 (默认设置为token)

Vault类型 必需的环境变量
token VAULT_TOKEN
approle VAULT_ROLE_ID,VAULT_SECRET_ID
kubernetes VAULT_K8S_AUTH_PATH,VAULT_ROLE_NAME
userpass,ldap VAULT_USERNAME, VAULT_PASSWORD

命名空间

如果您使用命名空间,则可以使用环境变量VAULT_NAMESPACE定义它。这将向请求添加一个标题。

依赖项

~5–18MB
~269K SLoC