Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
teller — 面向开发者的云原生机密管理——无需离开命令行即可管理机密。 | Kitploit
工具/GitHubGitHub/tellerops/teller
云基础设施安全代码分析云安全DevSecOps秘密检测
GitHubtellerops/teller

teller

面向开发者的云原生机密管理——无需离开命令行即可管理机密。

查看仓库
3.2k2016个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享






:computer: 使用机密信息时,永远不必离开你的终端
:pager: 为云环境工作流创建简单而整洁的流程
:mag_right: 扫描机密信息,对抗机密泛滥


Teller —— 面向开发者的开源通用机密管理器

开发、测试和构建应用时,无需离开终端即可使用机密信息。

与其在工作站中四处使用自定义脚本、.zshrc 文件中的令牌、bash 历史中可见的 EXPORT、放错位置的 .env.production 文件等,不如直接使用 teller,并将其连接到任何你喜欢的保险库(vault)、密钥存储或云服务(Teller 支持 Hashicorp Vault、AWS Secrets Manager、Google Secret Manager 等众多服务)。

你可以使用 Teller 整理自己的环境,也可以作为团队的工作流程和最佳实践。

使用 teller 快速入门

下载二进制文件

从 releases 获取二进制文件

从源码构建

使用此方法可以让你查看源代码、进行审查,并自行构建一份副本。

这将在你的机器上本地安装二进制文件:

root@kitploit:~
$ cd teller-cli
$ cargo install --path .

创建新配置

root@kitploit:~
$ teller new
? Select your secret providers ›
⬚ hashicorp_consul
⬚ aws_secretsmanager
⬚ ssm
⬚ dotenv
⬚ hashicorp
⬚ google_secretmanager

然后,编辑新创建的 .teller.yml,为你的 provider 设置所需的 map 和 key。

看看 teller.yml

teller 的 YAML 描述了你的 provider,并且在每个 provider 内有一个 map,用于描述:

  • 要从哪里获取键值的根路径
  • 对于每个 map,其唯一 id 将用于后续操作
  • 对于每个 map,可选的特定键名映射——你可以重命名从源 provider 获取的键

以下是一个示例配置文件。请注意,它还包含模板构造——例如在加载配置时获取环境变量:

root@kitploit:~
providers:
  hashi_1:
    kind: hashicorp
    maps:
      - id: test-load
        path: /{{ get_env(name="TEST_LOAD_1", default="test") }}/users/user1
        # if empty, map everything
        # == means map to same key name
        # otherwise key on left becomes right
        # in the future: key_transform: camelize, snake_case for automapping the keys
        keys:
          GITHUB_TOKEN: ==
          mg: FOO_BAR
  dot_1:
    kind: dotenv
    maps:
      - id: stg
        path: VAR_{{ get_env(name="STAGE", default="development") }}

现在你可以通过 hashi_1 或 dot_1 来引用这些 provider。默认情况下,Teller 会从所有 provider 拉取指定数据。

功能特性

🏃 运行子进程

是否还在手动导出并设置环境变量,以使用类似演示/生产的环境运行进程?

曾经因为使用 .env.production 并将其暴露在本地项目中而踩过坑?

使用 teller 和一个不向窥探者暴露任何内容的 .teller.yml 文件,你可以零风险地流畅无缝工作,也无需引号:

root@kitploit:~
$ teller run --reset --shell -- node index.js

🔎 检查变量

这将输出 teller 当前获取到的变量。当然,每个变量只会显示前两个字母。

root@kitploit:~
$ teller show

📺 为本地 shell 注入环境变量

是否在 shell 脚本和 dotfiles 中硬编码了机密信息?

在某些情况下,将变量 eval 到当前 shell 中是合理的。例如,在你的 .zshrc 中,使用 teller 比把所有这些硬编码到 .zshrc 文件中要合理得多。

在这种情况下,你应该添加以下内容:

root@kitploit:~
eval "$(teller sh)"

🐳 便捷的 Docker 环境

是否厌倦了获取各种变量并进行设置,同时还担心它们出现在你的 shell 历史记录中?

从现在开始,使用这一行命令:

root@kitploit:~
$ docker run --rm -it --env-file <(teller env) alpine sh

⚠️ 扫描机密信息

Teller 可以帮助你对抗机密泛滥和硬编码机密,同时也是使用你的保险库时最高效的生产力工具。

它还可以集成到你的 CI 中,作为 DevSecOps 流水线的左移(shift-left)安全工具。

通过运行以下命令,在代码中查找存储在保险库中的机密:

root@kitploit:~
$ teller scan

你可以像这样在 CI 中将其作为 linter 运行:

root@kitploit:~
run: teller scan --error-if-found

如果发现敏感信息,它将使你的构建失败(返回退出码 1)。

你还可以使用 --json 将结果导出为 JSON,并使用 -b 扫描二进制文件。

♻️ 对进程输出、日志和文件中的机密信息进行脱敏

你可以将 teller 作为基础设施中的脱敏工具,在运行进程时对其输出进行脱敏,同时还能清理日志和实时日志输出。

将任何进程输出、tail 或日志通过管道传给 teller,即可实时脱敏:

root@kitploit:~
$ cat some.log | teller redact

它同样适用于 tail -f:

root@kitploit:~
$ tail -f /var/log/apache.log | teller redact

最后,如果你有一些需要脱敏的文件,也可以这样操作:

root@kitploit:~
$ teller redact --in dirty.csv --out clean.csv

如果你省略 --in,Teller 将从 stdin 读取;如果省略 --out,Teller 将输出到 stdout。

📜 填充模板

你可以填充自定义模板:

root@kitploit:~
$ teller template --in config-templ.t

模板格式是 Tera,它与 liquid 或 handlebars 非常相似。

以下是一个示例模板:

root@kitploit:~
production_var: {{ key(name="PRINT_NAME")}}
production_mood: {{ key(name="PRINT_MOOD")}}

🔄 在 providers 之间复制/同步数据

当你需要在 providers 之间同步数据时,可以使用 teller copy 来完成。

特定映射键同步

你可以使用 <provider name>/<map id> 格式将某个 provider 的映射复制到另一个 provider:

root@kitploit:~
$ teller copy --from source/dev --to target/prod,<...>

在这个简单的示例中,我们使用以下配置文件:

root@kitploit:~
providers:
  dot1:
    kind: dotenv
    maps:
      - id: one
        path: one.env
  dot2:
    kind: dotenv
    maps:
      - id: two
        path: two.env

这将:

  1. 从源映射中获取所有映射值
  2. 对于每个目标 provider,找到匹配的映射,并将源中的值复制到其中

默认情况下,复制会 更新 目标映射(upsert 数据);如果你想替换,可以使用 --replace。

🚲 向 providers 写入和批量写入

Teller 的 provider 支持 write 用例,允许将值 写入 provider。

请记住,此功能仍围绕你的 teller.yml 文件中的定义展开:

root@kitploit:~
$ teller put --providers new --map-id one NEW_VAR=s33kret

在这个示例中,使用了以下配置:

root@kitploit:~
providers:
  new:
    kind: dotenv
    maps:
      - id: one
        path: new.env

几点说明:

  • 值采用 key=value 格式的键值对,你可以一次性指定多对
  • 当你指定字面量敏感值时,请确保使用 ENV 变量,以免敏感内容记录在你的历史记录中
  • 使用 --providers 标志可以同时推送到一个或多个 provider

❌ 从 providers 删除和批量删除

Teller 的 provider 支持从 provider 中 删除 值。

root@kitploit:~
$ teller delete --providers new --map-id one DELETE_ME

几点说明:

  • 你可以指定多个要删除的键,例如:
  • 使用 --providers 标志可以同时推送到一个或多个 provider

YAML:以 YAML 格式导出

XXX TODO:重写 export 命令的工作方式

你可以以 YAML 格式导出,适用于 GCloud:

root@kitploit:~
$ teller export yaml

示例格式:

root@kitploit:~
FOO: "1"
KEY: VALUE

JSON:以 JSON 格式导出

你可以以 JSON 格式导出,适用于通过 jq 或其他工作流进行管道处理:

root@kitploit:~
$ teller export json

示例格式:

root@kitploit:~
{
  "FOO": "1"
}

Providers

你可以在文档中获取 provider 列表及其描述的配置值。

测试检查清单:

  • Windows 上的 docker:如果你有使用 Docker 的基于容器的测试,请确保使用 #[cfg(not(windows))] 在 Windows 上排除它。

  • 资源语义:在构建 provider 时,应将 empty(空)和 not found(未找到)作为两种不同语义处理:如果 provider 支持显式的“未找到”语义(404、NotFound 等),请使用 Error::NotFound。否则,当 provider 用空数据包表示“未找到”语义时,返回空的 KV[](即不要将“空”的语义转换成“未找到”)。

测试

测试通过以下命令进行:

root@kitploit:~
$ cargo test --all --all-features

并且需要你的机器上安装 Docker(或等效工具)。

致谢:

感谢所有贡献者——是你们让这一切成为可能,谢谢!

行为准则

Teller 遵循 CNCF 行为准则

版权

版权所有(c)2024 @jondot。更多细节请参阅 LICENSE。

下载工具