所有发行物附带 SHA-256 校验值与 GPG 签名,可自行比对。
brew install fountkey/tap/fk推荐方式,可随 brew upgrade 自动升级。
npm install -g @fountkey/cli适合已经在用 Node 工具链的团队。
curl -fsSL https://get.fountkey.com | sh自动识别发行版并安装到 /usr/local/bin。
scoop bucket add fountkey; scoop install fkPowerShell 窗口执行,自动加入 PATH。
docker pull ghcr.io/fountkey/fk:latest官方镜像,适合容器化流水线与临时使用。
需要 Go 1.22 或更高版本,源码与构建脚本完全公开,可自行审计与二次开发。
git clone https://github.com/fountkey/fk.git
cd fk && make build
sudo install -m 0755 bin/fk /usr/local/bin/fk
fk --version从安装到在脚本里用上,全程不需要在代码或环境变量文件里留下明文。
选择上面任意一种安装方式,验证一下版本。
fk --version用主密码派生密钥解锁本地保险库,会话有效期内无需重复输入。
fk login --profile personal按路径取用凭据,默认输出纯文本,方便直接管道使用。
fk get '生产环境/数据库' --field password把凭据注入环境变量或文件,整个过程不落盘明文。
export DB_PASSWORD="$(fk get '生产环境/数据库' --field password)"每个命令都支持 --help 查看完整参数,用 fk <命令> --help 即可。
| 命令 | 说明 | 示例 |
|---|---|---|
fk login | 登录源钥并解锁本地保险库,支持多账号与 profile。 | fk login --profile personal |
fk logout | 注销当前会话,清除本地缓存的凭据与解锁状态。 | fk logout |
fk list | 列出条目,支持按文件夹、标签与关键词过滤。 | fk list --folder '生产环境' |
fk get | 读取单条凭据或其中某个字段。 | fk get '生产环境/数据库' --field password |
fk set | 创建或更新条目,可自动生成强密码。 | fk set '开发环境/Redis' --generate=32 |
fk delete | 删除条目(进入回收站,可在客户端恢复)。 | fk delete '开发环境/Redis' --confirm |
fk generate | 生成密码、密码短语或 PIN,只输出不落盘。 | fk generate --length 32 --symbols |
fk sync | 同步本地保险库,--full 可做全量校验。 | fk sync --full |
fk serve | 在本地启动受控的凭据服务,供容器内其他进程读取。 | fk serve --port 8123 |
fk status | 查看当前会话、已解锁保险库与剩余 API 配额。 | fk status |
fk unlock | 解锁被锁定的保险库,支持调用系统生物识别。 | fk unlock --biometric |
fk secret | 凭据子命令:创建、轮换与吊销服务账号令牌。 | fk secret rotate '生产环境/数据库' |
表格中的路径与令牌均为占位符,示例使用$FOUNTKEY_TOKEN之类的环境变量。
优先级为:命令行参数 > 环境变量 > 配置文件 > 默认值。
用环境变量传递机器账号令牌与组织信息,是 CI 中最常见的做法。
# 访问令牌(CI 中建议使用短期令牌)
export FK_TOKEN=$FOUNTKEY_TOKEN
# 当前组织 ID
export FK_ORG_ID=org_9f2c8a41
# 当前 profile,对应 ~/.config/fountkey/config.toml 中的小节
export FK_PROFILE=personal
# 会话文件位置,默认 ~/.config/fountkey/session.json
export FK_SESSION=/tmp/fk-session.json
# 自建实例地址
export FK_API_URL=https://vault.internal.example.comGitHub Actions 的 OIDC 会把你的工作流身份换成一枚一小时有效的访问令牌,任务结束即失效。
name: deploy
on:
push:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
env:
FOUNTKEY_ORG_ID: ${{ secrets.FK_ORG_ID }}
steps:
- name: 换取短期令牌
uses: fountkey/actions/login@v2
with:
oidc-token: ${{ secrets.FOUNTKEY_OIDC_TOKEN }}
org-id: ${{ secrets.FK_ORG_ID }}
- name: 注入数据库凭据
run: |
export DB_PASSWORD="$(fk get '生产环境/数据库' --field password --raw)"
npm run migrate
- name: 清理会话
if: always()
run: fk logout --purge在源钥控制台为流水线创建服务账号并绑定 OIDC 主体,流水线无需保存任何长期凭据。
换到的访问令牌默认一小时过期,随时可吊销;泄露窗口被压缩到最小。
服务账号只授予所需集合的读取权限,写入与轮换能力分开授予。
每次取用都会写入审计日志,包含调用方、用途与时间,便于回溯。
命令行是自动化程度最高的一环,我们对它的要求比对图形界面更严格。
读取到的明文只存在于进程内存与标准输出,不写入 shell 历史、临时文件或系统钥匙串,除非你显式要求。
CI 中推荐使用 OIDC 换取一小时有效的短期令牌,而不是把长期密钥放进仓库变量。
每一次读取、写入与轮换都会写入组织的审计日志,包含调用方、用途与时间。
本机可调用 Touch ID、Windows Hello 或 Android 指纹解锁保险库,密钥不会离开安全隔区。
机器账号按集合与条目粒度授权,只读、只写、可轮换三种能力分开授予。
退出码是稳定的契约,写进 CI 的判断逻辑不会因为版本更新而失效。
| 退出码 | 含义 | 说明 |
|---|---|---|
0 | 成功 | 命令执行完毕且没有产生错误。 |
1 | 通用错误 | 参数不合法或出现未预期的内部错误。 |
2 | 未认证 | 会话不存在、已过期,或令牌无效。 |
3 | 未找到 | 目标条目、集合或路径不存在。 |
4 | 网络错误 | 无法连接源钥服务端,建议退避后重试。 |
5 | 权限不足 | 当前账号对该条目的权限被拒绝。 |