【问题标题】:Is it possible to store github credentials (on a remote server) limited to specific repository or organisation?是否可以存储仅限于特定存储库或组织的 github 凭据(在远程服务器上)?
【发布时间】:2022-01-09 09:20:23
【问题描述】:

我正在尝试处理以下安全与 DX 问题:

  • 我正在开发一个代码存储在 GitHub 上的项目,我有时必须在服务器上部署后端
  • 我不想为每次拉取或其他操作输入 GitHub 凭据
  • 由于其他一些团队成员可以访问 root 用户,我不想以其他人可以使用这些凭据访问我的任意 repo(不仅是那个项目的那些)的方式存储凭据

现在,据我所知,这些天我有 2 个选项可以从服务器连接到 GitHub:

  1. SSH:创建密钥,添加到ssh-agent,添加公钥到GitHub账号,使用git remote set-url origin git@github.com:account/repo.git

  2. PAT:创建 GitHub 令牌,使用 at 作为密码,通过 git config --global credential.helper storegit 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 操作,但我仍然不能将其限制为特定的回购或组织。

我在这里错过了一些选择吗?我或多或少地查看了herehere 的所有答案,但没有注意到任何解决方案。

注意:我使用 SSH 在服务器上进行 CLI 操作。

【问题讨论】:

  • 最好的方法是使用 CI/CD 工具来做到这一点。但是,是否可以在本地机器上挂载服务器目录。然后你可以进行复制和粘贴或类似的操作
  • @MarkusMeyer 听起来很合理,感谢您的建议。我想我会研究一些类似 this one 的教程(当前项目不使用 Kubernetes,所以 GitOps 不是一个选项)

标签: git github ssh


【解决方案1】:

为特定存储库部署代码的最简单方法是使用a deploy key。这是与存储库而不是用户关联的 SSH 密钥,并且只能访问该存储库的内容。访问权限可以是只读的,也可以是读写的。

那篇文章还讨论了服务器到服务器令牌,它们类似于 PAT,但可以限制在单个存储库中,并且在这种情况下也是可能的。

【讨论】:

  • 听起来不错,我会研究一下,谢谢!
猜你喜欢
  • 2010-12-31
  • 2015-05-25
  • 2012-06-01
  • 2019-04-28
  • 2014-10-12
  • 1970-01-01
  • 2016-12-16
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多