我有一个公共 github 存储库(我几年前创建的)。我启用了两因素身份验证。我想创建一个 github API 令牌,以便能够将一些更改推送到我的存储库。
为了能够将更改推送到此存储库,我必须在 github“新个人访问令牌”页面中选择的最小范围是什么?
我想避免授予代币任何不必要的权利。
根据 GitHub 文档,公共存储库的范围是
public_repo
,私有存储库的范围是 repo
。
具有这些范围之一的令牌是 Git 推送或拉取访问可能受到的最有限的访问;但是,该令牌可以访问所有公共(分别是私有)存储库,也可以用于某些 API 访问。如果您担心这一点,您可以为您的个人帐户使用 SSH 密钥,或者进一步限制它,为相关存储库使用读写部署密钥。
扩展 Yogev 的答案,您可以执行以下操作来创建一个细粒度的个人访问令牌(又名“PAT”),并具有对存储库进行更改所需的最低权限:
Repository Access
下选择 Only select repositories
并选择您想要使用的存储库(经过身份验证的拉取、提交、推送等)Permissions
下选择 Repository permissions
并仅将 Contents
设置为 Access level
-> Read and write
。然后将带有上下文
secrets
的 PAT 添加到您的 GitHub 工作流程/操作,例如:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.NAME_OF_YOUR_PAT }}
更多文档也这里。
注意:细粒度个人访问令牌仍处于测试阶段(截至 2023 年初),可能会发生变化。讨论这里。
虽然距离 @bk2204 提出问题并回答已经过去了两年,但 GitHub 已经推出了解决方案。
2022 年 10 月,GitHub 推出了一项名为“细粒度个人访问令牌”的功能。https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github
相比之下,个人访问令牌(经典)被授予广泛的读写范围的权限。 他们可以访问用户可以访问的所有存储库和组织,并且可以永远存在。例如,存储库范围提供对用户有权访问的私有存储库中所有数据的永久广泛访问。
请参阅细粒度的个人访问令牌获得了一组超过 50 个细粒度的权限,这些权限控制对 GitHub 组织、用户和存储库 API 的访问。每个权限都可以在“禁止访问”、“读取”或“读取和写入”的基础上授予。举个例子,您现在可以创建一个 PAT,它只能读取问题而不能执行任何其他操作 - 甚至不能读取存储库的内容。
@petezurich评论了解使用说明。