#secret #passwords #reqwest-client #api-wrapper #infisical

infisical-api

A rust API 包装器,用于开源 Infisical 密钥管理 API

2 个版本

0.1.1 2023 年 4 月 8 日
0.1.0 2023 年 4 月 8 日

#17 in #secrets

MIT 许可证

50KB
1.5K SLoC

infisical-api


lib.rs:

infisical_api

注意:此包的作者非常新,很可能犯了许多错误。请随意为此包的任何可改进之处提交问题或拉取请求。

infisical-api 包提供了一个围绕 Infisical API 的 [Client] 包装器。客户端提供了 Infisical API 的所有功能,包括

  • 更新密钥
  • 访问密钥
  • 密钥回滚
  • 项目管理

infisical_api 基于 reqwest 构建,并使用异步功能。需要异步运行时才能运行。未来可能会提供允许使用阻塞调用的功能。

该包还包括用于轻松加密和解密密钥的实用函数

可以通过创建客户端并提供建设项目的 workspace id 以及环境(dev、test、prod 等)来执行简单的密钥检索。

let client = infisical_api::Client::new("Your API key here")?;
let secrets = client.get_encrypted_project_secrets("Your Infisical workspace ID", "Environment here");

Client 默认为 Infisical 云 API 端点,但提供了一个 ClientBuilder,以提供更多灵活性。它允许设置自定义 API 基础 URL 和自定义 Reqwest ClientBuilder。

let reqwest_client_builder = reqwest::Client::builder();
// ...
// Configure reqwest_client_builder as needed
// ...
let client = infisical_api::ClientBuilder::new()
    .api_base("Your custom API endpoint")
    .reqwest_client_builder(reqwest_client_builder)
    .build("Your API key");

如果需要,该包还提供在检索后解密密钥的选项。

let client = infisical_api::Client::new("Your API key here")?;
let secrets = client
    .get_decrypted_project_secrets("Your Infisical workspace ID", "Environment here", "Your project key").await?;

建议您提前确定项目密钥,因为它对于加密和解密功能是必需的。

let client = infisical_api::Client::new("Your API key here")?;
let private_key = client
    .get_user_decrypted_private_key("Your infisical password here")
    .await?;
let project_key = client
    .get_decrypted_project_key("Infisical workspace ID", &private_key)
    .await?;

依赖关系

~6–21MB
~282K SLoC