核心用法
Authy 是一款轻量级密钥注入工具,通过 authy run 命令将 secrets 以环境变量形式注入子进程,全程零明文暴露。
| 步骤 | 命令 |
|------|------|
| 列出可用密钥 | `authy list --scope <policy> --json` |
| 注入并执行命令 | `authy run --scope <policy> --uppercase --replace-dash '_' -- <cmd>` |
--uppercase --replace-dash '_' 可将 db-host 自动转为 DB_HOST,无缝兼容多数应用。
显著优点
1. 运行即焚(Run-only):AUTHY_TOKEN 仅用于执行,无法通过任何方式回显密钥值
2. 内存隔离:子进程结束后环境变量即销毁,不落盘、不进入 shell history
3. 最小权限:--scope 限定可访问的密钥子集,降低泄露面
4. 格式友好:自动大小写转换与符号替换,无需修改既有代码
5. CI/CD 友好:非交互式注入,适合自动化流水线
潜在局限
| 局限 | 说明 |
|------|------|
| 依赖本地二进制 | 需 `authy` 存在于 PATH |
| 单点密钥文件 | `AUTHY_KEYFILE` 若泄露仍可被利用 |
| 无审计日志 | 无内置访问记录,需外部监控 |
| 仅环境变量注入 | 不支持文件挂载、配置模板等高级形态 |
适合人群
- DevOps/SRE 工程师管理云密钥
- 本地开发需安全使用生产凭证
- CI/CD 流水线需要无残留密钥注入
- 多租户环境需 scope 隔离的场景
常规风险
- Token 泄露:
AUTHY_TOKEN虽为 run-only,但被盗仍可执行authy run - 子进程侧信道:恶意脚本仍可通过
/proc/self/environ读取环境变量 - Scope 配置错误:过宽的 policy 会扩大密钥暴露范围
- 二进制完整性:若
authy被篡改,注入逻辑可能失效
建议配合 AUTHY_KEYFILE 权限加固(0600)及定期 token 轮换使用。