#env-var #secret #shell #variables #environment #vault #command

app lade

自动从您首选的保险库中将机密作为环境变量加载,并在您的shell命令完成后清除它们

28 个版本 (10 个重大更改)

0.11.2 2024年5月4日
0.10.0 2024年3月8日
0.9.1 2023年10月2日
0.7.0 2023年6月13日
0.4.0 2023年3月16日

#150身份验证

MPL-2.0 许可证

230KB
2K SLoC

Rust 1.5K SLoC // 0.0% comments Shell 286 SLoC // 0.3% comments Zsh 35 SLoC // 0.1% comments BASH 33 SLoC

Lade

Crates.io

Lade (/leɪd/) 是一个工具,允许您将您首选保险库中的机密自动加载到环境变量或文件中。它限制机密在需要机密的命令存在的时间内的暴露。

Demo

Lade 是 Metatype 生态系统 的一部分。请考虑查看此组件如何与整个生态系统集成,并浏览 文档 了解更多示例。

入门

您可以从 GitHub 上的 发行页面 下载二进制可执行文件,将其设置为可执行文件并将其添加到您的 $PATH 中,或者使用以下方法自动化这些步骤。

curl -fsSL https://raw.githubusercontent.com/zifeo/lade/main/installer.sh | bash

# via cargo
cargo install lade --locked
cargo install --git https://github.com/zifeo/lade --locked

# upgrade
lade upgrade

# install shell hooks (only required once)
lade install

兼容的shell: FishBashZsh

兼容的保险库: Infisical1Password CLIDopplerVault

用法

Lade 将通过由 lade install 安装的命令钩子运行您在 shell 中运行的任何命令之前和之后。在每次运行中,它将在当前目录及其父目录中递归查找 lade.yml 文件。然后,它将使用正则表达式匹配您正在运行的命令的任何机密,并在运行期间将它们加载到环境变量或文件中。

cd examples/terraform
terraform apply
# example = "hello world"

请参阅 lade.yml示例 文件夹以获取其他用例。

手动注入

如果您希望自行决定何时加载密钥,可以使用 inject 命令手动注入。请注意,当运行脚本或非交互式shell会话时,无法保证shell钩子会被触发。在这种情况下,inject 命令是加载密钥的唯一方法。

cd examples/terraform
lade inject terraform apply

以文件形式输出

默认情况下,Lade会将密钥加载到环境变量中。您可以通过将 . 设置为所需的文件名来更改此设置。内容将根据扩展名创建。目前,仅支持YAML和JSON。

command regex:
  .: file.yml
  ...

加载器

大多数vault加载器使用其本地的CLI进行操作。这意味着您必须在本地安装它们,并且您的登录/凭据必须是有效的。Lade可能会通过直接集成相应的API进行演化,但这留作未来工作。

Infisical加载器

command regex:
  EXPORTED_ENV_VAR: infisical://DOMAIN/PROJECT_ID/ENV_NAME/SECRET_NAME

频繁域名:app.infisical.com

注意:/api 会自动添加到DOMAIN。此源目前仅支持单个域名(您不能登录多个域名)。

1Password加载器

command regex:
  EXPORTED_ENV_VAR: op://DOMAIN/VAULT_NAME/SECRET_NAME/FIELD_NAME

频繁域名:my.1password.eumy.1password.commy.1password.ca

Doppler加载器

command regex:
  EXPORTED_ENV_VAR: doppler://DOMAIN/PROJECT_NAME/ENV_NAME/SECRET_NAME

频繁域名:api.doppler.com

Vault加载器

command regex:
  EXPORTED_ENV_VAR: vault://DOMAIN/MOUNT/KEY/FIELD

Passbolt加载器

command regex:
  EXPORTED_ENV_VAR: passbolt://DOMAIN/RESOURCE_ID/FIELD

文件加载器

支持INI、JSON、YAML和TOML文件。

command regex:
  EXPORTED_ENV_VAR: file://PATH?query=.fields[0].field

PATH 可以相对于lade目录,以 ~/$HOME 或绝对路径(不建议与他人共享项目,因为他们的路径可能不同)。

原始加载器

command regex:
  EXPORTED_ENV_VAR: "value"

使用 ! 前缀转义值强制使用原始加载器,双 !! 转义本身。

开发

eval "$(lade off)"
eval "$(cargo run -- on)"
echo a $A1 $A2 $B1 $B2 $B3 $C1 $C2 $C3
cargo run -- -vvv set echo a
eval "$(cargo run -- off)"
eval "$(lade on)"

依赖项

~26–65MB
~1M SLoC