远程服务器上的 1Password 服务账号¶
当 T3 Code 服务器运行在一台你并不在跟前的机器上时,请使用 1Password 服务账号,例如无头主机、虚拟机,或你通过远程访问访问的后台服务。
通过 1Password 桌面应用登录会在服务器所在机器上请求批准。远程用户永远不会看到该提示,因此无法读取机密。服务账号改为使用令牌登录,因此无需批准任何内容。
有关基础知识,请参阅机密。如果要改用自托管的 Connect 服务器,请参阅 1Password Connect。
设置¶
- 在 1Password 中,打开 Developer,然后打开 Service Accounts,并创建一个服务账号。
- 仅为其授予 T3 Code 所需保险库的读取权限。访问权限在创建账号时即固定,服务账号无法访问 Personal、Private 或 Employee 保险库。
- 复制令牌。该令牌只显示一次。
- 在运行 T3 Code 服务器的机器上安装 1Password CLI(
op)。 - 将
OP_SERVICE_ACCOUNT_TOKEN放入服务器的环境中。对于后台服务,请将其添加到service.env并重启服务。请参阅配置服务环境。 - 在 Settings → Secrets 中,选择 Add provider。账号是必填项,但设置令牌后
op会忽略它,因此可输入任意登录地址,例如my.1password.com。
然后照常使用引用,例如 op://Automation/provider-token/credential。
检查是否正常¶
在服务器所在机器上,在 shell 中将 OP_SERVICE_ACCOUNT_TOKEN 设置为与服务器使用的相同令牌,然后在干净的环境中读取机密,以便只有该令牌可以登录:
env -i PATH="$PATH" HOME="$(mktemp -d)" OP_SERVICE_ACCOUNT_TOKEN="$OP_SERVICE_ACCOUNT_TOKEN" \
op read --no-newline "op://Automation/provider-token/credential" >/dev/null && echo "Secret read"
如果输出 Secret read,说明该令牌可以读取此机密。这只是检查你的 shell,而不是服务器自身的环境。要确认服务器能否读取,请在一个设置中使用该引用,然后使用需要它的功能。如果服务器无法读取该机密,该功能会显示一条错误,并指明机密提供方。
须知¶
- 代理以服务器的环境运行,因此代理可以使用该令牌读取服务账号可读取的任何内容。仅为其授予那些你愿意让代理读取其条目的保险库。
- 引用中的名称可以包含字母、数字、空格、
.、_和-。标题为Service Token: CI的条目无法写成引用,因此请改用其条目 ID,例如op://Automation/<item-id>/credential。 - T3 Code 最多等待 1Password 45 秒。超过该时间后,该机密会被视为不可读,需要该机密的功能会显示一条错误,并指明机密提供方。
- 不要在同一环境中同时设置
OP_CONNECT_HOST和OP_CONNECT_TOKEN。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 t3/t3code