关于本指南
作为组织所有者,防止泄露专用或敏感数据应该是首要任务。 无论是有意还是意外,数据泄露都可能给相关方带来重大风险。 虽然 GitHub 采取措施来帮助防止数据泄漏,但你还负责管理组织来强化安全性。
在防范数据泄露方面,有几个关键组件:
- 采取主动的预防方法
- 及早检测可能的泄露
- 在事件发生时维护缓解计划
最佳方法取决于所管理的组织类型。 例如,专注于开放源代码开发的组织可能需要比完全商业化的组织更宽松的控制,以允许外部协作。 本文提供关于GitHub功能和设置的整体指导,您应根据您的需求来实施这些功能和设置。
保护帐户
通过实施安全最佳做法来保护组织的存储库和设置,包括启用 2FA 并要求所有成员使用 2FA,以及建立强密码准则。
-
要求组织成员、外部协作者和计费经理为其个人帐户启用 2FA,从而使恶意参与者更难访问组织的存储库和设置。 有关详细信息,请参阅“在你的组织中要求进行双因素身份验证”。
-
根据 GitHub 推荐的密码指导原则,鼓励用户设置强密码并按照指南适当保护它们。 有关详细信息,请参阅 创建强密码。
-
在其中 GitHub建立内部安全策略,以便用户知道要采取的适当步骤,以及如果怀疑发生事件,则与谁联系。 有关详细信息,请参阅“将安全策略添加到存储库”。
有关保护帐户的详细信息,请参阅 确保帐户安全的最佳做法。
防止数据泄露
作为组织所有者,应根据组织类型适当地限制和查看访问权限。 请考虑以下设置进行更严格的控制:
| 建议 | 详细信息 |
|---|---|
| 禁用创建存储库分支的功能。 |
[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-the-forking-policy-for-your-repository)
禁止更改存储库可见性。 |
限制在组织中更改仓库可见性
将存储库创建限制为专用或内部。 |
限制在组织中创建仓库
禁用存储库删除和传输。 |
设置删除或转让仓库的权限
| |
禁用使用部署密钥的功能。 |
限制在您的组织中使用部署密钥
| |
范围 personal access token限定为所需的最低权限。 | None
通过在适当的时候将公共存储库转换为专用存储库来保护代码。 可以使用GitHub App自动通知仓库所有者此更改。 |
中的 Prevent-Public-ReposGitHub Marketplace
通过验证域并将电子邮件通知仅限于已验证的电子邮件域来确认组织的标识。 |
验证或批准您组织的域名 和 限制组织的电子邮件通知
防止参与者进行意外提交。 |
从存储库中删除敏感数据
检测数据泄露
无论你如何加强组织以防止数据泄露,某些问题仍可能发生,可以通过使用 secret scanning、审核日志和分支保护规则来应对此类情况。
使用 secret scanning
Secret scanning 通过扫描和检测在存储库中每个分支的完整 Git 历史记录中意外提交的机密,帮助保护整个组织和存储库中的 GitHub 机密的安全。 与机密扫描合作伙伴、其他服务提供商匹配的任何字符串都报告为存储库 **“安全**”选项卡中的警报。
提示
无论secret scanning的启用状态和推送保护如何,GitHub Team和GitHub Enterprise上的组织都可以运行免费报告,扫描组织中代码以发现泄露的机密。 请参阅 关于 GitHub 的机密安全性。
站点管理员必须先为实例启用 secret scanning ,然后才能使用此功能。 有关详细信息,请参阅 [AUTOTITLE](/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-secret-scanning-for-your-appliance)。
有关 secret scanning 的详细信息,请参阅 关于机密扫描。
还可以启用 secret scanning 作为存储库或组织的推送保护。 启用此功能时,secret scanning 会阻止参与者用检测到的机密来推送代码。 有关详细信息,请参阅 [AUTOTITLE](/code-security/secret-scanning/protecting-pushes-with-secret-scanning)。 最后,还可以扩展检测以包含自定义机密字符串结构。 有关详细信息,请参阅“[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning)”。
审查组织的审核日志
你还可以利用组织的审核日志及 GraphQL 审核日志 API,主动保护 IP 并维护组织的合规性。 有关详细信息,请参阅 查看贵组织的审核日志 和 接口。
设置分支保护规则
要确保所有代码在合并到默认分支之前都经过适当的评审,可以启用分支保护。 通过设置分支保护规则,可以在参与者推送更改之前强制实施某些工作流或要求。 有关详细信息,请参阅“关于受保护分支”。
可以创建规则集作为分支保护规则的替代方法。 相比分支保护规则,规则集有更多的优势,例如它有状态,可发现性更好,而且无需管理员访问权限。 还可以同时应用多个规则集。 有关详细信息,请参阅“关于规则集”。
缓解数据泄露
如果用户推送了敏感数据,请要求他们使用 git filter-repo 工具将其删除。 有关详细信息,请参阅“从存储库中删除敏感数据”。 此外,如果敏感数据尚未推送,则只需在本地撤消这些更改;有关详细信息,请参阅 the GitHub Blog (但请注意, git revert 在 Git 历史记录中保留原始敏感提交时,无法撤消添加敏感数据的有效方法)。
如果无法直接与存储库所有者协调以删除你确信拥有的数据,可以填写 DMCA 删除通知表单并告知 GitHub 支持。 确保包含有问题的提交哈希值。 有关详细信息,请参阅 DMCA 删除通知。
注意
如果你的某个存储库因虚假声明而被下架,应填写 DMCA 抗辩通知表单并通知 GitHub 支持团队。 有关详细信息,请参阅 DMCA 抗辩通知。
后续步骤
-
[AUTOTITLE](/code-security/supply-chain-security/end-to-end-supply-chain/securing-code) -
[AUTOTITLE](/code-security/supply-chain-security/end-to-end-supply-chain/securing-builds)