跳转至

在远程服务器上使用 1Password Connect

当你已经运行了一个 1Password Connect 服务器时,可以使用它,例如在家庭服务器或 Kubernetes 中,并希望 T3 Code 服务器通过它读取机密。Connect 不需要桌面批准,因此它可以在无头或远程主机上工作。

如果你没有运行 Connect,使用服务账号会更简单。基础知识请参阅机密。

设置

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

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

检查是否正常

在服务器的机器上,在 shell 中将 OP_CONNECT_HOST 和 OP_CONNECT_TOKEN 设置为服务器使用的值。确认该地址是 Connect 服务器,然后用干净的环境读取一个机密,以便只有 Connect 变量可以登录:

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 变量,而不是服务器自身的环境。要确认服务器能否读取该机密,请在设置中使用该引用,然后使用需要该机密的功能。如果服务器无法读取机密,该功能会显示一条错误,指明机密提供方。

注意事项

  • 代理使用服务器的环境运行,因此代理可以使用 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。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 t3/t3code