【发布时间】:2022-01-09 09:20:23
【问题描述】:
我正在尝试处理以下安全与 DX 问题:
- 我正在开发一个代码存储在 GitHub 上的项目,我有时必须在服务器上部署后端
- 我不想为每次拉取或其他操作输入 GitHub 凭据
- 由于其他一些团队成员可以访问
root用户,我不想以其他人可以使用这些凭据访问我的任意 repo(不仅是那个项目的那些)的方式存储凭据
现在,据我所知,这些天我有 2 个选项可以从服务器连接到 GitHub:
-
SSH:创建密钥,添加到ssh-agent,添加公钥到GitHub账号,使用
git remote set-url origin git@github.com:account/repo.git -
PAT:创建 GitHub 令牌,使用 at 作为密码,通过
git config --global credential.helper store或git config --global credential.helper 'cache --timeout=3600'或(如 GitHub docs 建议 GitHub CLI Git Credential Manager)存储它
问题是,它们似乎都有缺点:
- 让
root用户访问我所有的 github 存储库(他们可以简单地执行sudo su - username并访问)或 - 要求我每次都输入一些密码或
- 两者的混合:缓存超时允许在一段时间内不输入凭据,但在此期间他们也可以无限制地访问其他存储库
例如,我要么用密码保护我的 ssh 密钥并且必须输入它,要么不保护它并且访问是无限制的。使用 PAT 的访问权限更有限(例如,我可以 give PAT(参见 8.)仅访问 repo 操作而不是各种 admin 操作,但我仍然不能将其限制为特定的回购或组织。
我在这里错过了一些选择吗?我或多或少地查看了here 和here 的所有答案,但没有注意到任何解决方案。
注意:我使用 SSH 在服务器上进行 CLI 操作。
【问题讨论】:
-
最好的方法是使用 CI/CD 工具来做到这一点。但是,是否可以在本地机器上挂载服务器目录。然后你可以进行复制和粘贴或类似的操作
-
@MarkusMeyer 听起来很合理,感谢您的建议。我想我会研究一些类似 this one 的教程(当前项目不使用 Kubernetes,所以 GitOps 不是一个选项)