# 为企业建立治理框架

可以使用可用的 GitHub Enterprise功能和工具管理企业的治理和合规性。

企业所有者负责在企业中保持强大的安全态势，遵守法规，减轻风险，以及保护知识产权。
GitHub 提供了可帮助处理此问题的工具。

将贵公司的代码存储在 GitHub 上，可在一个地方轻松进行协作、跟踪和部署。 虽然允许人员在摩擦尽可能少的存储库中工作对于文化和生产力非常重要，但你需要对人员的工作实施一些控制，以确保代码保持安全可靠。

借助 GitHub Enterprise，你可以访问 GitHub各种治理功能，从而能够：

* 控制人员如何更新代码
* 控制人员如何使用存储库
* 监视活动
* 检测泄露的机密
* 为重要操作设置审批流程
* 检测代码中的漏洞或错误

<!-- Please note that we may move the sections below around once we've written them -->

## 保护分支

对于企业存储库中的重要分支（例如包含生产代码的分支），合规性框架应降低错误或恶意代码进入生产环境的的风险。

使用规则集，可以应用规则来控制人员如何与特定分支交互\*\*\*\*。 还可以向某些用户授予显式绕过规则的权利，从而提供灵活性，同时仍明确预期限制。

许多企业添加了以下规则：

* **限制删除**，以便你可以确信用户不会意外删除分支
* **要求对所有更改提出拉取请求**，以便你有书面记录并能强制实施审查
* **要求状态检查和部署成功**，然后再合并拉取请求，这样可以防范在生产环境中出错

其他规则（例如需要签名的提交或线性提交历史记录）更具有情境性，具体取决于合规性要求。

若要了解详细信息，请参阅 [关于规则集](/zh/enterprise-server@3.22/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)。

## 控制存储库的使用

由于存储库是存储公司代码和数据的位置，因此必须定义用户与存储库的交互方式，以减少数据泄露的风险。 在企业设置中，可以将策略设置为：

* 限制存储库的默认可见性
* 阻止非成员被邀请到存储库
* 阻止存储库在组织外部分叉或转移

策略的目标是维护安全要求，同时仍促进协作和减少开发人员的摩擦。 例如，可以为所有企业的公共存储库创建“开放源代码”组织，并阻止在其他任何组织中创建公共存储库。

要了解如何设置策略，请参阅[在企业中实施仓库管理策略](/zh/enterprise-server@3.22/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)。

## 使用元数据定位策略

通过自动执行策略，可以实现更好的治理。 这可以通过自定义属性实现，使你可以向资源添加结构化元数据。 请参阅 [自定义属性](/zh/enterprise-server@3.22/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/custom-properties)。

使用 **存储库自定义属性**，可以按风险级别、团队所有权或合规性要求等属性对存储库进行分类。 通过此元数据，可以根据存储库特征自动应用不同的治理规则。

借助 **组织自定义属性**，可以按数据敏感度、法规框架或业务部门对企业中的组织进行分类。 然后，您可以使用这些属性有选择地定向组织，应用企业规则集。

这两种类型的自定义属性都与规则集集成，使你能够创建功能强大的治理框架，这些框架可根据元数据自动强制实施正确的策略，而不是手动选择存储库。

请参阅 [管理组织中存储库的自定义属性](/zh/enterprise-server@3.22/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization) 和 [管理组织的自定义属性](/zh/enterprise-server@3.22/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/managing-custom-properties-for-organizations)。

## 监视活动

如果出现问题，能够搜索企业中的活动来调查问题的原因或范围就显得非常重要了。

GitHub 的审核日志包括与您的企业账户、组织以及（如果您使用 Enterprise Managed Users）托管用户相关的详细事件。 可以筛选审核日志中的主题（例如计费活动）或搜索与已泄露令牌关联的事件。

若要访问审核日志，请参阅 [访问企业的审核日志](/zh/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/accessing-the-audit-log-for-your-enterprise)。

GitHub 不会无限期保留审核日志数据。 建议将审核日志流式传输到外部位置，这样就可以根据需要保留数据，并使用外部工具查询数据。 请参阅“[流式处理企业审核日志](/zh/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise)”。

## 阻止敏感信息进入代码库

为了保护知识产权并防止安全事件，必须实现一个系统来确保敏感信息（如令牌）不在代码库内。

### Secret scanning

使用 **secret scanning**，可以扫描代码以检测代码库中的敏感信息，例如 API 密钥、密码和其他凭据，从而防止未经授权的访问和潜在的泄露。
Secret scanning 向代码库中的敏感信息发出警报，允许你通过更改密码或轮换令牌来做出适当的响应。

若要了解详细信息，请参阅 [秘密扫描](/zh/enterprise-server@3.22/code-security/concepts/secret-security/secret-scanning)。

Secret scanning 可以在企业、组织和存储库级别启用。 有关在企业级启用的信息，请参阅 [为设备配置密码扫描](/zh/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-enterprise-security/configure-specific-tools/configure-secret-scanning)。

### 推送保护

此外，还可以防止将敏感数据和凭据意外推送到具有推送保护的存储库\*\*\*\*。

推送保护充当一种保护措施，可实时扫描机密和阻止可能包含敏感信息的推送。 组织所有者可以在组织级别配置推送保护策略，以在所有存储库中实行一致的安全标准。 推送被阻止后，开发人员会收到有关如何修正该问题的详细指导，例如从代码中删除机密。

请参阅“[推送保护](/zh/enterprise-server@3.22/code-security/concepts/secret-security/push-protection)”。

可以在组织、存储库和用户帐户级别启用推送保护。 请参阅“[为存储库启用推送保护](/zh/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/prevent-future-leaks/enable-push-protection)”。

> \[!NOTE]
> 企业和组织级别的推送保护模式配置目前处于 公开预览，可能会发生变化。

若要使机密检测与内部安全策略保持一致，并更有效地防止存储库中未经授权的敏感信息泄露，可以在企业或组织级别自定义推送保护中包含的机密模式。 请参阅“[为企业配置其他机密扫描设置](/zh/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-enterprise-security/establish-complete-coverage/configure-additional-settings#specifying-patterns-to-include-in-push-protection-for-your-enterprise)”和“[配置组织的全局安全设置](/zh/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-organization-security/establish-complete-coverage/configure-global-settings#specifying-patterns-to-include-in-push-protection)”。

## 为敏感操作设置审批流程

为了更好地控制企业中谁可以执行敏感操作，你可能需要设置审批流程。 审批流程有助于减轻未经授权更改或恶意更改的风险，并可记录使用绕过的人员以及使用原因，确保所有操作都是可跟踪和可问责的。

> \[!NOTE] 实施这些审批流程可能会导致一些摩擦，因此请务必确保安全管理团队具有足够的覆盖范围，然后才继续。

审批流程适用于：

* 绕过推送保护 - 可以选择允许谁绕过推送保护，并为包含所有其他参与者的机密的推送添加审阅和审批周期。 有关**委托绕过推送保护**的详细信息，请参阅 [推送保护委派绕过](/zh/enterprise-server@3.22/code-security/concepts/secret-security/delegated-bypass)。
* code scanning
  、Dependabot、和secret scanning的警报解除——您可以通过确保只有指定人员才能解除（或关闭）警报，为警报评估提供额外的控制能力和可见性。 了解有关**委托警报解除**的详细信息，请参阅以下文章：
  * [为代码扫描启用委派的警报消除](/zh/enterprise-server@3.22/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/enable-delegated-alert-dismissal)
  * [为 Dependabot 启用委托的警报关闭](/zh/enterprise-server@3.22/code-security/how-tos/manage-security-alerts/manage-dependabot-alerts/enable-delegated-alert-dismissal)
  * [为机密扫描启用委派的警报消除](/zh/enterprise-server@3.22/code-security/how-tos/manage-security-alerts/manage-secret-scanning-alerts/enable-delegated-dismissal)

## 发现安全漏洞和错误

许多行业都有要求定期进行安全评估和漏洞管理的规定。
\*\*
Code scanning
\*\* 通过识别和缓解代码中的安全风险（例如不安全模式），帮助确保符合行业标准。

Code scanning 可以集成到 CI/CD 管道中，提供对代码库的持续监视和评估。

要快速开始使用 code scanning，我们建议您使用默认设置。 请参阅“[配置代码扫描的默认设置](/zh/enterprise-server@3.22/code-security/how-tos/find-and-fix-code-vulnerabilities/configure-code-scanning/configure-code-scanning)”。

Code scanning 可以在企业、组织和存储库级别启用。 有关在企业级启用的信息，请参阅 [为设备配置代码扫描](/zh/enterprise-server@3.22/code-security/how-tos/secure-at-scale/configure-enterprise-security/configure-specific-tools/configuring-code-scanning-for-your-appliance)。