使用访问令牌推送到GitHub的最小范围集

25

我有一个公共的Github仓库(是几年前创建的)。我已经启用了双因素身份验证。我想创建一个Github API令牌,以便能够推送一些更改到我的仓库。

在Github的“新个人访问令牌”页面上,我必须选择哪些最小范围的权限才能够将更改推送到该仓库?

我希望避免给予该令牌任何不必要的权限。

4个回答

23
根据 GitHub 文档,公共存储库的范围是 public_repo,私有存储库的范围是 repo
具有其中一个范围的令牌是 Git 推送或拉取访问最受限制的访问方式;但是,该令牌可以访问所有公共(分别是私有)存储库,并且还可用于某些 API 访问。如果您担心这一点,您可以为个人帐户使用 SSH 密钥,或者为所涉及的存储库使用读写部署密钥以进一步限制访问权限。

9
扩展Yogev的答案,您可以按照以下步骤创建一个细粒度个人访问令牌(也称为“PAT”),以获得对您的存储库进行更改所需的最少权限:
  • 创建一个细粒度的PAT,按照以下步骤进行操作
  • 在“存储库访问”下选择“仅选择存储库”,并选择要使用的存储库(验证拉取、提交、推送等)
  • 在“权限”下选择“存储库权限”,并将“内容”设置为“访问级别”的唯一选项 ->“读写”。
然后,在GitHub工作流/操作中添加具有上下文secrets的PAT,例如:
runs-on: ubuntu-latest
steps:
  - uses: actions/checkout@v3
    with:
      token: ${{ secrets.NAME_OF_YOUR_PAT }} 

更多文档也在这里。注意:细粒度个人访问令牌仍处于测试阶段(截至2023年初),可能会发生变化。有关讨论,请参见此处。

2
谢谢您。我正在尝试进行最基本的推送/拉取操作,这在GitHub文档中被完全埋没了。 - Frank Willmore
2
谢谢!权限列表太长,“内容”也太模糊,考虑到99%的人都会想用它。 - Kevin

3
虽然这个问题已经有两年了,但是GitHub现在提供了一个解决方案。
GitHub最近推出了一项新功能,称为“细粒度个人访问令牌”。 https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github “个人访问令牌”(传统的)具有广泛的读写权限。它们可以访问用户可以访问的所有存储库和组织,并允许永久存在。例如,repo范围提供对用户可以访问的私有存储库中的所有数据的广泛访问权限,永久存在。
相比之下,“细粒度个人访问令牌”从50多个细粒度权限集中控制对GitHub的组织、用户和存储库API的访问权限。每个权限都可以根据“无访问”、“只读”或“读写”基础进行授权。例如,您现在可以创建一个仅能阅读问题而不能做其他任何事情(甚至不能读取存储库内容)的PAT。

1
根据JetBrains的说法,所需的最小范围基本上是 -> repo、workflow、read:org、gist。

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接