GitHub 组织和权限如何发挥作用?

已完成

在上一单元中,你了解了用户向 GitHub 进行身份验证的不同方法。 在本单元中,你将了解每个层级的权限:

  • 存储库权限
  • 团队权限
  • 组织权限
  • 企业权限

存储库权限级别

可以通过分配特定的权限级别来自定义对每个存储库的访问权限。 有五个标准存储库级权限:

  • 阅读:建议为想要查看或讨论您的项目的非代码参与者提供的选项。 对于任何需要查看存储库中的内容但无需实际进行参与或更改的人,此级别的权限很适合他们。
  • 会审:建议分配给需要主动管理问题和拉取请求,但没有写入权限的参与者。 此级别对于跟踪问题和讨论而不修改代码的项目经理非常有用。
  • 写入:建议分配给积极推送内容到项目的参与者。 写入权限是大多数开发人员的标准权限。
  • 维护:建议分配给需要在没有敏感或破坏性操作权限的情况下管理存储库的项目经理。
  • 管理员:建议分配给需要对项目具有完全访问权限的人,包括管理安全性或删除存储库等敏感和破坏性操作。 这些人员是存储库所有者和管理员。

你可向组织成员、外部协作者和团队授予对组织拥有的存储库的不同级别访问权限。 每个权限级别将逐步授予对存储库内容和设置的更多访问权限。 为项目中的每个人或团队角色选择最适合他们的级别,不要向其授予超过其所需的项目访问权限。

管理员还可以在 GitHub Enterprise 中创建自定义角色,根据需要扩展其中一个具有其他权限的基本角色。

什么是存储库分叉?

分叉是在你自己的 GitHub 帐户下创建其他人存储库的个人副本的方法。 分叉存储库时,可以自由修改自己的版本,而不会影响原始项目。 此过程是一个常见工作流,用于参与开源或安全地试验更改。

还可以通过从原始存储库(通常称为“上游”存储库)拉取更改来使分支保持最新状态。

下面介绍如何分叉存储库:

  1. 在 GitHub.com 上,导航到要分叉的存储库主页。

  2. 在右上角,选择 “分叉”。

  3. 为分支(个人帐户或组织)选择所有者。

  4. (可选)重命名分叉存储库或包括所有分支。

  5. 选择“创建分支”。

    显示 GitHub 存储库右上角的分支按钮的屏幕截图。

管理分支权限(面向管理员)

对于组织拥有的存储库,管理员可以控制是否可以分叉存储库:

  • 公共存储库:始终允许分叉。
  • 专用存储库:只能禁用或限制为组织成员。
  • 内部存储库:只能在同一企业帐户内分叉这些存储库。

若要配置分支设置,请执行以下作:

  1. 转到组织存储库的设置。

  2. 在左侧边栏中的 Access 下,单击“ 成员特权”。

  3. 找到 存储库分支 选项,并根据需要更新它们。

    显示 GitHub 组织的分支权限的屏幕截图。

小窍门

如果禁用专用存储库的分叉,则没有人(包括组织成员)能够分叉它。

若要了解详细信息,请参阅有关 存储库分支的 GitHub Docs 文章。

查看存储库见解

GitHub 上的存储库见解提供了一种强大的方法来监视和分析项目的活动、贡献和依赖项。 利用这些见解,可以跟踪项目运行状况、识别瓶颈并确保安全性。 本部分将指导你完成访问存储库见解的步骤,并提供有效使用存储库见解的最佳做法。

查看存储库见解的步骤

  1. 导航到 GitHub 上的存储库。
  2. 在存储库名称下,单击“ 见解 ”选项卡。
  3. 在“见解”选项卡中浏览以下部分:
    • 参与者:查看一段时间内的贡献图,包括每个参与者的提交、添加和删除。
    • 流量:监视存储库流量,包括唯一访问者和页面视图。
    • 提交:分析一段时间内的提交活动。
    • 代码频率:跟踪随时间推移添加和删除的行数。
    • 依赖项图:查看存储库的依赖项并识别潜在的安全漏洞。

使用存储库见解的最佳做法

  • 监视贡献:使用“参与者”部分来识别最关注的存储库的活动参与者和区域。
  • 跟踪流量:使用“流量”部分了解用户如何与存储库交互并识别参与趋势。
  • 解决漏洞:定期查看 Dependency Graph,以确保存储库保持安全。

利用存储库见解,可以做出数据驱动的决策,以改善协作、安全性和项目管理。

用户获得存储库访问权限的方式

给定其存储库权限列表后,用户可以执行的操作

存储库中用户的有效权限受各种因素影响,包括:

  • 存储库角色: (例如管理员、写入、读取)
  • 团队成员身份: (例如,从团队继承的权限)
  • 组织成员身份: (例如默认组织权限、SSO 要求)

合并这些不同的权限源时,GitHub 会向用户应用最高级别的访问权限。 例如,如果用户通过团队获得了读取访问权限,但同时由于被分配为协作者而直接获得了写入访问权限,则他们实际上拥有写入权限。

存储库成员资格选项

授予存储库访问权限时,用户可以通过多种方式成为协作者:

会员资格类型 DESCRIPTION
直接协作者 显式添加到具有特定角色(读取、会审、写入、维护或管理)的存储库。
建议用于外部参与者或小型团队。
团队成员身份 用户通过其团队成员身份继承存储库访问权限。
团队权限通常在组织级别设置,以便进行一致的可缩放管理。
组织默认权限 如果存储库是组织的一部分,则所有组织成员(例如 None、Read)可能具有默认权限级别。
所有者可以替换特定团队或用户的这些默认值。
外部协作者 不是组织成员但对存储库具有显式访问权限的用户。
适用于需要有限访问权限的承包商、自由职业者或开源参与者。

监视和审核存储库访问

定期审核谁有权访问存储库,可确保适当的安全性和合规性。 下面是一些建议的步骤和工具:

  • 在存储库设置中查看访问权限:

    • 导航到“设置”>“管理访问权限”(针对存储库)。
    • 查看用户和团队的列表及其权限级别。
  • 组织审核日志(GitHub Enterprise 或组织级别):

    • 组织所有者可以查看审核日志中成员身份、存储库访问权限和权限的更改。
    • 按存储库名称或访问更改来筛选事件,以获得更专注的视图。
  • 企业审核日志(GitHub Enterprise):

    • 如果管理多个组织,请使用企业帐户的审核日志跟踪所有组织和存储库中的更改。
    • 这对于合规性报告或大规模安全评审尤其有用。
  • 自动化脚本:

    • 使用 GitHub REST API 或 GraphQL API 以编程方式列出协作者、团队和权限。
    • 将脚本与 CI/CD 管道或安全仪表板集成,以持续监视和标记异常。

提示: 设置分支保护规则和所需的评审,为所有代码更改添加另一层安全性和责任。

团队权限级别

GitHub 组织中的团队是一组协作处理共享存储库的用户。 团队通过同时在多个存储库中应用一致的权限来帮助简化访问管理和通信。 主要优势包括:

  • 集中式访问控制: 将存储库权限(例如,读取、写入)分配给整个团队,而不是单独管理每个用户。
  • 结构化协作: 按部门、项目或角色组织成员,实现更高效的协作。
  • 可见性和通信: 每个团队都可以有自己的讨论板,以便更轻松地共享更新和协调工作。

团队提供了一种简单方法,可将存储库权限一次性分配给多个相关用户。 此外,子级团队成员还会继承父级团队的权限设置,这提供了一种简单方法,可以基于公司自然结构轻松地级联权限。

团队级别有两个权限级别:

权限级别 说明
成员 团队成员与组织成员拥有一组相同的能力
维护者 团队维护者可执行团队成员能够执行的所有操作,还可执行以下操作:
- 更改团队名称、描述和可见性。
- 请求团队更改父级和子级团队。
- 设置团队个人资料图片。
- 编辑和删除团队讨论。
- 在团队中添加和删除组织成员。
- 晋升团队成员,使其也具有团队维护者权限。
- 删除团队对存储库的访问权限。
- 管理团队的代码评审分配。
- 管理拉取请求的计划提醒。

组织所有者还可将任何组织成员晋升为团队维护者。

若要对你管理的存储库的访问权限进行审核,可在设置中查看具有存储库访问权限的团队和用户的组合列表:

“管理访问”屏幕的屏幕截图。

GitHub 提供多个可分配给团队的权限级别。 向团队授予对存储库的访问权限时,可以从以下权限模型中进行选择:

权限模型

权限级别 DESCRIPTION 最适用于
阅读 用户可以查看和克隆存储库。 可以建立问题和拉取请求并为其添加备注。 需要只读或审核访问权限的个人。
会审 用户可以管理问题和拉取请求(例如标签、分配、评论)。 无法将更改推送到存储库。 需要会审和组织问题但不贡献代码的项目经理或参与者。
写入 用户可以推送到分支(受保护的分支除外)。 可以管理问题和拉取请求。 需要提交代码或更新文档的活动参与者。
维护 用户可以管理存储库设置、问题和拉取请求。 无法删除或传输存储库。 处理常规存储库管理但不需要完全管理员权限的项目维护人员。
管理员 用户完全控制存储库,包括设置权限、删除存储库和管理所有设置。 需要顶级管理访问权限的人员。

提示: 始终遵循最低特权原则— 为每个团队分配有效执行其任务所需的最低权限级别。 此方法可降低意外或未经授权的更改的风险。