T3 Code 非官方中文翻译不是官方产品,也不是 T3 Tools 官方文档。源提交 d2c25950b4d9英文原文GitHub 源文件
Skip to content

远程服务器上的 1Password Connect ​

如果你已经在运行 1Password Connect 服务器,例如在家用服务器或 Kubernetes 上,可以用它让 T3 Code 服务器通过它读取密钥。Connect 不需要桌面端批准,因此可以在无界面或远程主机上工作。

如果没有运行 Connect,用服务账号更简单。基础知识见密钥。

配置 ​

  1. 在 1Password 中创建 Connect 服务器和访问令牌。把令牌限制在 T3 Code 需要的那些保险库上。
  2. 把 Connect API 和同步容器部署到 T3 Code 服务器能够访问的位置。
  3. 在运行 T3 Code 服务器的机器上安装 1Password CLI(op)。
  4. 把 OP_CONNECT_HOST 和 OP_CONNECT_TOKEN 放进服务器的环境变量。OP_CONNECT_HOST 是 Connect API 的地址;如果端口不是该协议的默认端口,需要带上端口。除非 Connect 运行在同一台机器上,或运行在你信任的私有网络中,否则请使用 https:// 地址,因为令牌和密钥会经过这条连接传输。对于后台服务,把两者都写入 service.env 并重启服务。参见配置服务环境。
  5. 在 设置 → 密钥 中选择 添加提供方(provider)。账号是必填项,但在已配置 Connect 时 op 会忽略它,因此可以填写任意登录地址,例如 my.1password.com。

然后照常使用引用,例如 op://Automation/provider-token/credential。

确认可用 ​

在服务器所在的机器上,把 shell 中的 OP_CONNECT_HOST 和 OP_CONNECT_TOKEN 设为服务器使用的值。先确认该地址是一台 Connect 服务器,再用一份干净的环境读取一条密钥,这样只有 Connect 的变量能够登录:

bash
curl -s "$OP_CONNECT_HOST/health"
env -i PATH="$PATH" HOME="$(mktemp -d)" OP_CONNECT_HOST="$OP_CONNECT_HOST" OP_CONNECT_TOKEN="$OP_CONNECT_TOKEN" \
  op read --no-newline "op://Automation/provider-token/credential" >/dev/null && echo "Secret read"

健康检查的响应会标明这是 1Password Connect API。如果看到其他页面,说明该地址指向了别的东西,例如会对每个主机名都应答的反向代理。

这里检查的是你 shell 中的 Connect 变量,不是服务器自己的环境变量。要确认服务器能够读取该密钥,请在某项设置里使用这条引用,然后使用需要它的功能。如果服务器读不到该密钥,该功能会显示一条错误,并点明密钥提供方(provider)。

须知 ​

  • 智能体带着服务器的环境变量运行,因此智能体可以用 Connect 令牌读取它能够读取的一切。只把令牌授予那些你愿意让智能体读取其中条目的保险库。
  • 通过 Connect,op 可以读取条目,但不能列出保险库或账号。请用 op read 测试,不要用 op vault list。
  • 引用中的名称可以包含字母、数字、空格、.、_ 和 -。标题为 Service Token: CI 的条目无法写成引用,请改用它的条目 ID,例如 op://Automation/<item-id>/credential。
  • Connect 令牌只能看到创建它时所指定的保险库。指向任何其他保险库的引用都无法读取。
  • T3 Code 最多等待 1Password 45 秒。超时之后,该密钥视为不可读,需要它的功能会显示一条错误,并点明密钥提供方。
  • 不要在同一环境中设置 OP_SERVICE_ACCOUNT_TOKEN。

非官方译文 · 源提交 d2c25950b4d9 · 不代表 T3 Tools