问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GitHub个人访问令牌(PATs)管理指南

创作时间:
作者:
@小白创作中心

GitHub个人访问令牌(PATs)管理指南

引用
github
1.
https://docs.github.com/zh/enterprise-server@3.10/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

个人访问令牌(PATs)是GitHub用于API和命令行身份验证的重要工具。本文将详细介绍PATs的类型、创建、使用和删除等关键操作,帮助开发者更好地管理和使用PATs。

关于个人访问令牌

使用GitHub API或命令行时,可使用个人访问令牌(PATs)替代密码向GitHub进行身份验证。PATs旨在代表你自己访问GitHub资源。 若要代表组织访问资源,或为长时间的集成而访问,应使用GitHub App。 有关详细信息,请参阅“关于创建GitHub应用”。

令牌具有与令牌所有者相同的访问资源和对这些资源执行操作的能力,并且还受到授予令牌的任何范围或权限的限制。 令牌无法向用户授予额外访问权限功能。 例如,可以为个人访问令牌配置admin:org作用域,但如果令牌的所有者不是组织所有者,则令牌不会授予对组织的管理访问权限。

个人访问令牌的类型

GitHub目前支持两种类型的个人访问令牌:细粒度个人访问令牌和经典个人访问令牌。GitHub建议尽可能使用细粒度个人访问令牌而不是经典个人访问令牌。

所有细粒度个人访问令牌和经典个人访问令牌都与生成它们的用户相关联,如果用户失去对资源的访问权限,则会变为非活动状态。

组织所有者可以设置策略来限制经典个人访问令牌对其组织的访问,并且企业所有者可以限制经典个人访问令牌对企业或企业所有的组织的访问。 有关详细信息,请参阅“为组织设置个人访问令牌策略”。

细粒度个人访问令牌

与经典个人访问令牌相比,细粒度个人访问令牌具有几个安全优势:

  • 每个令牌只能访问单个用户或组织拥有的资源。
  • 每个令牌只能访问特定的存储库。
  • 每个令牌都被授予特定的权限,这些权限比授予经典个人访问令牌的范围提供更多的控制。
  • 组织所有者可要求必须获取对可访问组织中资源的任何细粒度个人访问令牌的批准。
  • 企业所有者可要求必须获取对细粒度个人访问令牌的批准,它可以访问该企业拥有的组织中的资源。

经典个人访问令牌

经典个人访问令牌不太安全。 但是,某些功能目前仅适用于经典个人访问令牌:

  • 只有经典个人访问令牌对不由你或你所属的组织拥有的公共存储库具有写入访问权限。
  • 只有经典个人访问令牌对企业拥有的内部存储库自动具有写入访问权限。 细粒度个人访问令牌必须授予对内部存储库的访问权限。
  • 外部协作者只能使用经典个人访问令牌访问他们参与协作处理的组织存储库。
  • 只有经典个人访问令牌才能访问企业。 (细粒度个人访问令牌可以访问企业拥有的组织。)
  • 少数REST API终结点仅支持经典个人访问令牌。 若要检查某个终结点是否还支持细粒度个人访问令牌,请参阅该终结点的文档,或参阅“可用于细粒度的个人访问令牌的终结点”。

如果选择使用经典个人访问令牌,请记住它将授予对有权访问的组织内的所有存储库以及个人帐户中的所有个人存储库的访问权限。

确保个人访问令牌安全

个人访问令牌类似于密码,它们具有相同的固有安全风险。 创建新的个人访问令牌之前,请考虑是否有更安全的身份验证方法可供使用:

  • 若要从命令行访问GitHub,可以使用GitHub CLI或Git凭据管理器,而不是创建个人访问令牌。
  • 在GitHub Actions工作流中使用个人访问令牌时,请考虑是否可以改用内置GITHUB_TOKEN。 有关详细信息,请参阅“自动令牌身份验证”。

如果无法使用这些选项,但必须创建个人访问令牌,请考虑使用其他CLI服务安全地存储令牌。

在脚本中使用个人访问令牌时,可以将令牌存储为机密,并通过GitHub Actions运行脚本。 有关详细信息,请参阅“在GitHub Actions中使用机密”。

有关最佳做法的详细信息,请参阅“确保API凭证安全”。

创建细粒度个人访问令牌

注意:细粒度个人访问令牌目前为测试版,可能会有变动。 若要留下反馈,请参阅反馈讨论。

  1. 在GitHub任意页面的右上角,单击个人资料照片,然后单击“设置”。
  2. 在左侧边栏中,单击“开发人员设置”。
  3. 请在左侧边栏的“个人访问令牌”下,单击“细粒度令牌”。
  4. 单击“生成新令牌”。
  5. 在“令牌名称”下,输入令牌的名称。
  6. 在“过期时间”下,选择令牌的过期时间。 允许无限生存期,但可能被组织或企业所有者设置的最长生存期策略阻止。 有关详细信息,请参阅“为个人访问令牌强制实施最长生存期策略”。
  7. (可选)在“说明”下,添加说明来描述令牌的用途。
  8. 在“资源所有者”下,选择资源所有者。 令牌只能访问所选资源所有者拥有的资源。 除非你所属的组织选择加入细粒度个人访问令牌,否则不会显示该组织。 有关详细信息,请参阅“为组织设置个人访问令牌策略”。
  9. (可选)如果资源所有者是需要批准细粒度个人访问令牌的组织,请在资源所有者下方的框中输入请求的理由。
  10. 在“存储库访问权限”下,选择希望令牌访问的存储库。 应选择满足需求的最小存储库访问权限。 令牌始终包括对GitHub上所有公有存储库的只读访问权限。
  11. 如果在上一步中选择了“仅选择存储库”,则在“所选存储库”下拉列表下,选择希望令牌访问的存储库。
  12. 在“权限”下,选择要授予令牌的权限。 根据指定的资源所有者和存储库访问权限,有存储库、组织和帐户权限这几种可能性。 应根据需要选择最小权限。
  13. 每个终结点的REST API参考文档都说明终结点是否适用于细粒度个人访问令牌,并说明令牌使用终结点所需的权限。 某些终结点可能需要多个权限,而某些终结点可能需要多个权限之一。 有关细粒度个人访问令牌可通过各种权限访问哪些REST API终结点的概述,请参阅“细粒度个人访问令牌所需的权限”。
  14. 单击“生成令牌”。

如果选择了某个组织作为资源所有者,并且该组织需要批准细粒度个人访问令牌,则令牌将被标记为pending,直到组织管理员审核为止。 令牌在得到批准之前只能读取公共资源。 如果你是组织的所有者,请求将自动获得批准。 有关详细信息,请参阅“查看和撤销组织中的个人访问令牌”。

创建经典个人访问令牌

注意:组织所有者可以限制经典个人访问令牌对其组织的访问。 如果尝试使用经典个人访问令牌访问已禁用经典个人访问令牌访问权限的组织中的资源,则请求将失败并出现403响应。 相反,必须使用GitHub App、OAuth App或细粒度个人访问令牌。

警告:经典个人访问令牌可以访问你有权访问的每个存储库。 GitHub建议改用细粒度个人访问令牌,你可以将其限制为特定的存储库。 细粒度个人访问令牌还允许指定细粒度的权限,而不是宽泛的范围。

  1. 在GitHub任意页面的右上角,单击个人资料照片,然后单击“设置”。
  2. 在左侧边栏中,单击“开发人员设置”。
  3. 请在左侧边栏的“个人访问令牌”下,单击“令牌(经典)”。
  4. 选择“生成新令牌”,然后单击“生成新令牌(经典)”。
  5. 在“备注”字段中,为令牌提供一个描述性名称。
  6. 要为令牌提供到期时间,请选择“到期时间”,然后选择默认选项或单击“自定义”以输入日期。
  7. 选择要授予此令牌的作用域。 若要使用令牌从命令行访问存储库,请选择“存储库”。 没有指定范围的令牌只能访问公共信息。 有关详细信息,请参阅“OAuth应用的范围”。
  8. 单击“生成令牌”。

删除个人访问令牌

如果不再需要个人访问令牌,请删除。 如果删除用于创建部署密钥的个人访问令牌,则也会删除部署密钥。

  1. 在GitHub任意页面的右上角,单击个人资料照片,然后单击“设置”。
  2. 在左侧边栏中,单击“开发人员设置”。
  3. 在左侧边栏的“个人访问令牌”下,单击“细粒度令牌”或“令牌(经典)”,具体取决于要删除哪种类型的个人访问令牌。
  4. 在要删除的个人访问令牌的右侧,单击“删除”。

在命令行上使用个人访问令牌

如果你有个人访问令牌,则可以在通过HTTPS执行Git操作时输入它,而不是密码。

例如,若要在命令行上克隆存储库,请输入以下git clone命令。 然后,系统会提示你输入用户名和密码。 当系统提示输入密码时,请输入个人访问令牌而不是密码。

$ git clone https://HOSTNAME/USERNAME/REPO.git
Username: YOUR-USERNAME
Password: YOUR-PERSONAL-ACCESS-TOKEN

个人访问令牌只能用于HTTPS Git操作。 如果存储库使用SSH远程URL,则需要将远程URL从SSH切换到HTTPS。

如果没有提示你输入用户名和密码,说明你的凭据可能已缓存在计算机上。 可在密钥链中更新凭据,从而用令牌替换旧密码。

可以使用Git客户端缓存个人访问令牌,而不是为每个HTTPS Git操作手动输入个人访问令牌。 Git会将你的凭据临时存储在内存中,直到过期为止。 你还可以将令牌存储在Git可以在每个请求之前读取的纯文本文件中。 有关详细信息,请参阅“在Git中缓存GitHub凭据”。

其他阅读材料

  • 关于向GitHub验证
  • 令牌过期和吊销

本文原文来自GitHub官方文档

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号