企业所有者负责在企业中保持强大的安全态势,遵守法规,减轻风险,以及保护知识产权。 GitHub 具有可提供相关帮助的工具。
将公司的代码存储在 GitHub 上,可以轻松地从一个位置进行协作、跟踪和部署。 虽然允许人员在摩擦尽可能少的存储库中工作对于文化和生产力非常重要,但你需要对人员的工作实施一些控制,以确保代码保持安全可靠。
使用 GitHub Enterprise 可以访问 GitHub 的全系列治理功能,让你可以:
- 控制人员如何更新代码
- 控制人员如何使用存储库
- 监视活动
- 检测泄露的机密
- 为重要操作设置审批流程
- 检测代码中的漏洞或错误
保护分支
对于企业存储库中的重要分支(例如包含生产代码的分支),合规性框架应降低错误或恶意代码进入生产环境的的风险。
使用规则集,可以应用规则来控制人员如何与特定分支交互****。 还可以向某些用户授予显式绕过规则的权利,从而提供灵活性,同时仍明确预期限制。
许多企业添加了以下规则:
- 限制删除,以便你可以确信用户不会意外删除分支
- 需要针对所有更改的拉取请求,以便你具有书面记录并且可以强制实施审阅
- 要求状态检查和部署成功,然后再合并拉取请求,这样可以防范在生产环境中出错
其他规则(例如需要签名的提交或线性提交历史记录)更具有情境性,具体取决于合规性要求。
企业所有者可以在企业级别创建规则集,以灵活面向要应用规则的存储库和分支。 首先,可以向企业中的每个默认分支添加基本级别的保护,然后在此基础上生成框架。 若要开始操作,请参阅 使用规则集在企业中强制实施代码治理。
控制存储库的使用
由于存储库是存储公司代码和数据的位置,因此必须定义用户与存储库的交互方式,以减少数据泄露的风险。 在企业设置中,可以将策略设置为:
- 限制存储库的默认可见性
- 阻止非成员被邀请到存储库
- 阻止存储库在组织外部分叉或转移
策略的目标是维护安全要求,同时仍促进协作和减少开发人员的摩擦。 例如,可以为所有企业的公共存储库创建“开源”组织,并阻止在其他任何组织中创建公共存储库。
强制实施限制的最简单方法是创建存储库策略****。 这样就可以灵活针对企业中的组织和存储库,并围绕可见性、命名、创建、删除和传输应用限制。 请参阅“治理人员如何在企业中使用仓库”。
其他策略可用作全面限制。 这些功能虽然可让你更好地控制存储库生命周期,但没有存储库策略功能那么灵活。 请参阅 在企业中实施仓库管理策略。
监视活动
如果出现问题,能够搜索企业中的活动来调查问题的原因或范围就显得非常重要了。
GitHub 的审核日志包含与企业帐户、组织相关的详细事件,如果使用 Enterprise Managed Users,则包含与托管用户相关的详细事件。 可以筛选审核日志中的主题(例如计费活动)或搜索与已泄露令牌关联的事件。
若要访问审核日志,请参阅 访问企业的审核日志。
GitHub 不会无限期保留审核日志数据。 建议将审核日志流式传输到外部位置,这样就可以根据需要保留数据,并使用外部工具查询数据。 请参阅“流式处理企业审核日志”。
阻止敏感信息进入代码库
为了保护知识产权并防止安全事件,必须实现一个系统来确保敏感信息(如令牌)不在代码库内。
Secret scanning
使用 secret scanning,可以扫描代码以检测代码库中的敏感信息(例如 API 密钥、密码和其他凭据),从而防止未经授权的访问和潜在泄露。 Secret scanning 提示你代码库中存在敏感信息,让你可以通过更改密码或轮换令牌做出适当响应。对于密码等通用机密,secret scanning 由 GitHub Copilot 提供支持,并使用 AI。 请参阅 使用 Copilot 机密扫描负责任地检测通用机密
若要了解详细信息,请参阅 关于机密扫描。
Secret scanning 可以在企业、组织和存储库级别启用。 有关在企业级启用的信息,请参阅 关于安全配置。
推送保护
此外,还可以防止将敏感数据和凭据意外推送到具有推送保护的存储库****。
推送保护充当一种保护措施,可实时扫描机密和阻止可能包含敏感信息的推送。 组织所有者可以在组织级别配置推送保护策略,以在所有存储库中实行一致的安全标准。 推送被阻止后,开发人员会收到有关如何修正该问题的详细指导,例如从代码中删除机密。
请参阅“关于推送保护”。
可以在组织、存储库和用户帐户级别启用推送保护。 请参阅“为存储库启用推送保护”。
为敏感操作设置审批流程
为了更好地控制企业中谁可以执行敏感操作,你可能需要设置审批流程。 审批流程有助于减轻未经授权更改或恶意更改的风险,并可记录使用绕过的人员以及使用原因,确保所有操作都是可跟踪和可问责的。
Note
实施这些审批流程可能会导致一些摩擦,因此请务必确保安全管理团队具有足够的覆盖范围,然后才继续。
审批流程适用于:
-
绕过推送保护 - 可以选择允许谁绕过推送保护,并为包含所有其他参与者的机密的推送添加审阅和审批周期。 有关“委托绕过推送保护”的详细信息,请参阅 关于推送保护委派绕过。****
-
消除 code scanning 和 secret scanning 的警报 - 可以通过确保只有指定个人才能消除(或关闭)警报,从而提供对警报评估的额外控制和可见性。 有关委派警报消除的详细信息,请参阅 为代码扫描启用委派的警报消除 和 为代码扫描启用委派的警报消除****。
Note
委派的警报消除目前为 公共预览版,可能会更改。
发现安全漏洞和错误
许多行业都有要求定期进行安全评估和漏洞管理的规定。 Code scanning 通过发现和减轻代码中的安全风险(例如不安全模式),帮助确保符合行业标准。
Code scanning 可以集成到 CI/CD 管道中,从而持续监视和评估代码库。
若要快速开始使用 code scanning,建议使用默认设置。 请参阅“配置代码扫描的默认设置”。
Code scanning 可以在企业、组织和存储库级别启用。 有关在企业级启用的信息,请参阅 关于安全配置。