GitHub Token

GitHub 令牌分类

GitHub Fine-grained Tokens

📝 笔记总结

  • 个人访问令牌(Personal Access Tokens,PATs)
    • 细粒度个人访问令牌(Fine-grained PAT)
    • 经典个人访问令牌(Classic PAT)
  • 其他用于自动化或应用集成的令牌
    • GitHub Actions 内置令牌 GITHUB_TOKEN
    • GitHub App 安装令牌 Installation Token
    • OAuth App 访问令牌

📖 内容来源

🌟 GitHub 令牌分类

GitHub 令牌主要分为两大类:个人访问令牌(Personal Access Tokens, PATs)其他用于自动化或应用集成的令牌。其中,个人访问令牌又分为更安全的细粒度令牌(Fine-grained PAT)和传统的经典个人访问令牌(Classic PAT)

  • 个人访问令牌(Personal Access Tokens,PATs)
    • 细粒度个人访问令牌(Fine-grained PAT)
    • 经典个人访问令牌(Classic PAT)
  • 其他用于自动化或应用集成的令牌
    • GitHub Actions 内置令牌 GITHUB_TOKEN
    • GitHub App 安装令牌 Installation Token
    • OAuth App 访问令牌

汇总 GitHub 主要令牌类型及其核心区别:

令牌类型 前缀 有效期 权限范围 适用场景
细粒度个人访问令牌
Fine-grained PAT
github_pat_ 最长1年或无到期 可精确到特定仓库特定权限,如“对A仓库的contents有只读权限” 推荐首选。适用于对安全性要求高的个人脚本或API调用。
经典个人访问令牌
Classic PAT
ghp_ 长寿命,可手动设置或自动删除 粗粒度,如repo范围将授权用户能访问的所有仓库 存在安全风险,建议仅在必要时(如需要访问企业级API或特定公共仓库写入权限时)使用。
GitHub Actions 内置令牌
GITHUB_TOKEN
工作流运行期间 默认只对当前仓库有读写权限,可在工作流中精确配置 GitHub Actions 自动化首选。无需手动创建,安全且权限最小化。
GitHub App 安装令牌
Installation Token
ghs_ 1小时 与App安装相关联,可访问该App有权访问的仓库 推荐用于组织级自动化,如CI/CD系统。权限隔离好,可独立于个人账号管理。
OAuth App 访问令牌 gho_ 长寿命 由第三方OAuth App代表用户请求的权限 用于将第三方Web应用或CLI工具与GitHub集成。

🛡️ 核心选择建议

为什么“细粒度”比“经典”更安全?

GitHub 官方强烈推荐优先使用细粒度个人访问令牌,原因在于其安全模型有显著提升:

  1. 权限更精细:经典令牌的权限是粗放型的(如repo范围),一旦拥有,就能访问用户有权访问的所有仓库。而细粒度令牌可以精确控制到特定仓库单个操作(如读/写)。
  2. 降低泄露风险:如果细粒度令牌泄露,攻击者能造成的破坏被限制在极小的范围内,大大缩小了“爆炸半径”。

⚠️ 仍需使用“经典”令牌?

由于功能迭代需要时间,在某些场景下,你仍然需要使用经典个人访问令牌:

  • 需要向自己不是成员的公共仓库贡献代码。
  • 需要访问企业级别的资源或API。
  • 作为外部协作者访问组织的仓库。

🤖 自动化场景的最佳实践

针对自动化任务,应遵循以下选择顺序:

  1. GitHub Actions 中优先使用 GITHUB_TOKEN:这是最安全、最便捷的方式,令牌由系统自动生成和管理,仅在当前工作流中有效。
  2. 组织级自动化优先考虑 GitHub App:GitHub App 的安装令牌具有短生命周期(1小时),且权限与特定的应用安装绑定,非常适合CI/CD等系统,比使用绑定个人账号的PAT更安全、更可控。
  3. 个人脚本首选细粒度PAT:只有在上述方案都无法满足需求时,才创建个人访问令牌,并务必选择细粒度类型。

🔑 快速识别令牌类型

可以通过令牌的前缀来快速识别其类型:

  • ghp_:经典个人访问令牌
  • github_pat_:细粒度个人访问令牌
  • gho_:OAuth App 访问令牌
  • ghu_:GitHub App 用户访问令牌
  • ghs_:GitHub App 安装访问令牌
  • ghr_:GitHub App 刷新令牌