# 系统概览

详细了解 GitHub Enterprise Server'系统内部、功能和安全性。

## 关于 GitHub Enterprise Server

GitHub Enterprise Server 是 GitHub 平台的自承载版本。
GitHub 将 GitHub Enterprise Server 作为独立虚拟设备分发。 当你预配虚拟机并安装设备后，该实例运行带自定义应用程序堆栈的 Linux 操作系统。 有关详细信息，请参阅 [关于 GitHub Enterprise Server](/zh/enterprise-server@3.22/admin/overview/about-github-enterprise-server)。

## 存储体系结构

GitHub Enterprise Server 需要两个存储卷，一个装载到 *根文件系统* 路径（`/`），另一个装载到 *用户文件系统* 路径（`/data/user`）。 这种架构将运行软件环境与持久应用程序数据分离，从而可以简化升级、回滚和恢复程序。

根文件系统包含在分布式机器映像中。 它包含基本操作系统和 GitHub Enterprise Server 应用程序环境。 根文件系统应被视为临时性的。 升级到将来 GitHub Enterprise Server 的版本时，将替换根文件系统上的任何数据。

根存储量分成两个相同大小的分区。 其中一个分区将装载为根文件系统 (`/`)。 另一个分区仅在升级和升级的回退过程中作为 `/mnt/upgrade` 装载，以便在必要时更容易回退。 例如，如果分配了 400GB 根卷，则会为根文件系统分配 200GB，并为升级和回滚保留 200GB。

在新安装的 3.14 及更高版本中，根存储卷拆分为四个分区。 两个小分区适用于支持的启动模式（BIOS 和 UEFI），另外两个同样大的分区用于 GitHub Enterprise Server 主分区，以及升级和回滚。

根文件系统包含存储以下信息的文件。 此列表并未囊括所有方式。

* 自定义证书颁发机构 (CA) 证书（在 `/usr/local/share/ca-certificates*` 中）
* 自定义网络配置
* 自定义防火墙配置
* 复制状态

用户文件系统包含存储以下配置和数据的文件。 此列表并未囊括所有方式。

* Git 存储库
* 数据库
* 搜索索引
* 网站上 GitHub Pages 发布的内容
* 大文件来自 Git 大型文件存储
* 预接收挂钩环境

## 部署拓扑

默认情况下， GitHub Enterprise Server 作为独立实例运行。 您可以通过为部署选择不同的拓扑来提高 GitHub Enterprise Server 的可靠性和性能。

* 若要缓解系统或网络故障的影响，可以部署被动副本实例。 在影响主实例的中断期间，可以手动故障转移到副本实例。 有关详细信息，请参阅“[关于高可用性配置](/zh/enterprise-server@3.22/admin/monitoring-and-managing-your-instance/configuring-high-availability/about-high-availability-configuration)”。
* 可以配置多个活动副本，以提高与主实例相距很远的开发人员的性能。 有关详细信息，请参阅“[关于地理复制](/zh/enterprise-server@3.22/admin/monitoring-and-managing-your-instance/configuring-high-availability/about-geo-replication)”。
* 一些拥有数万个开发人员的企业可能会受益于横向缩放而不是垂直缩放的群集配置。 有关详细信息，请参阅“[关于集群](/zh/enterprise-server@3.22/admin/monitoring-and-managing-your-instance/configuring-clustering/about-clustering)”。

## 数据保留和数据中心冗余

> \[!WARNING]
> 在生产环境中使用 GitHub Enterprise Server 之前，强烈建议设置备份和灾难恢复计划。

GitHub Enterprise Server 支持GitHub Enterprise Server Backup Utilities的联机备份和增量备份。 你可以通过安全网络链接（SSH 管理端口）远距离为场外或地理上分散的存储生成增量快照。 在主数据中心发生灾难时，你可以在恢复时通过网络将快照恢复到新预配的实例中。

除网络备份外，在实例处于离线或维护模式时，还支持用户存储卷的 AWS (EBS) 和 VMware 磁盘快照。 如果你的服务等级要求允许进行定期离线维护，那么定期创建的卷快照可以替代使用 GitHub Enterprise Server Backup Utilities 的网络备份，而且成本更低、复杂度更小。

有关详细信息，请参阅“[关于 GitHub Enterprise Server 的备份服务](/zh/enterprise-server@3.22/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance)”。

## 安全性

GitHub Enterprise Server 在基础结构上运行，受你定义的访问和安全控制措施（例如防火墙、网络策略、IAM、监视和 VPN）约束。 GitHub Enterprise Server 适用于受法规合规性约束的企业，它有助于避免公有云中的软件开发平台引发的问题。

GitHub Enterprise Server 还包括其他安全功能。

* [操作系统、软件和补丁](#operating-system-software-and-patches)
* [网络安全](#network-security)
* [应用程序安全性](#application-security)
* [外部服务和支持访问](#external-services-and-support-access)
* [加密通信](#encrypted-communication)
* [用户和访问权限](#users-and-access-permissions)
* [身份验证](#authentication)
* [审核和访问日志记录](#audit-and-access-logging)

### 操作系统、软件和补丁

GitHub Enterprise Server 运行的是仅包含必需应用程序和服务的自定义 Linux 操作系统。
GitHub 将实例核心操作系统的修补程序作为其标准产品发布周期的一部分分发。 修补程序解决了功能性、稳定性和GitHub Enterprise Server的非关键安全问题。
GitHub 还可以根据需要在常规发布周期之外提供关键的安全修补程序。

GitHub Enterprise Server 作为一种设备提供，与通常的 Ubuntu 分发版相比，许多操作系统包都经过修改。 我们不支持修改基础操作系统（包括操作系统升级），这符合[GitHub Enterprise Server许可和支持协议](https://enterprise.github.com/license)中的第11.3节排除项。

目前，GitHub Enterprise Server 的基础操作系统是 Ubuntu 20.04 LTS（Focal Fossa）。 尽管 Ubuntu 20.04 LTS 在 2025 年 5 月达到标准支持结束，但我们使用扩展的安全维护（ESM），该维护服务在 2030 年 5 月之前提供安全更新。

常规修补程序更新在 GitHub Enterprise Server[发布](https://enterprise.github.com/releases) 页上发布， [发行说明](/zh/enterprise-server@3.22/admin/release-notes) 页提供了详细信息。 这些补丁一般含有经过测试并且质量经过我们工程团队批准的上游供应商和项目安全补丁。 从上游更新发布到测试以及捆绑于即将发布的 GitHub Enterprise Server 补丁版本中，这一过程可能会有短暂的延迟。

### 网络安全

GitHub Enterprise Server“内部防火墙限制对实例服务的网络访问。 网络上仅提供设备正常运行所需的服务。 有关详细信息，请参阅“[网络端口](/zh/enterprise-server@3.22/admin/configuring-settings/configuring-network-settings/network-ports)”。

### 应用程序安全性

GitHub应用程序安全团队专注于产品（包括GitHub）的漏洞评估、渗透测试和代码评审GitHub Enterprise Server。
GitHub 还与外部安全公司签约，为 GitHub 产品提供定期安全评估。

### 外部服务和访问支持

GitHub Enterprise Server 可以在不需要你的网络向外部服务开放任何出站访问权限的情况下运行。 你可以选择集成外部服务，以提供电子邮件传送、外部监控和日志转发等功能。 有关详细信息，请参阅“[配置电子邮件通知](/zh/enterprise-server@3.22/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-email-for-notifications)”、“[使用collectd设置外部监控](/zh/enterprise-server@3.22/admin/monitoring-and-managing-your-instance/monitoring-your-instance/collectd-metrics/setting-up-external-monitoring-with-collectd)”和“[日志转发](/zh/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/log-forwarding)”。

可以手动收集和发送故障排除数据到GitHub 支持。 有关详细信息，请参阅“[向GitHub支持提供数据](/zh/enterprise-server@3.22/support/contacting-github-support/providing-data-to-github-support)”。

### 加密通信

GitHub 设计 GitHub Enterprise Server 以便在企业防火墙后面运行。 为确保线路通信安全，我们建议你启用传输层安全协议 (TLS)。
GitHub Enterprise Server 支持用于 HTTPS 流量的 2048 位和更高商业 TLS 证书。 有关详细信息，请参阅“[配置 TLS](/zh/enterprise-server@3.22/admin/configuring-settings/hardening-security-for-your-enterprise/configuring-tls)”。

默认情况下，该实例还提供用于使用 Git 进行仓库访问和管理操作的安全外壳 (SSH) 访问。 有关详细信息，请参阅 [关于 SSH](/zh/enterprise-server@3.22/authentication/connecting-to-github-with-ssh/about-ssh) 和 [访问管理 shell (SSH)](/zh/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)。

如果为 你的 GitHub Enterprise Server 实例 配置 SAML 身份验证，则可以在实例与你的 SAML IdP 之间启用加密断言。 有关详细信息，请参阅“[将 SAML 用于企业 IAM](/zh/enterprise-server@3.22/admin/managing-iam/using-saml-for-enterprise-iam#enabling-encrypted-assertions)”。

### 用户和访问权限

GitHub Enterprise Server 提供三种类型的帐户。

* `admin` Linux 用户帐户已控制对基础操作系统的访问，包括对直接文件系统和数据库的访问。 一小部分受信任的管理员应该有权访问此帐户，他们可以通过 SSH 访问。 有关详细信息，请参阅“[访问管理 shell (SSH)](/zh/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)”。
* 实例 Web 应用程序中的用户帐户对自己的数据以及其他用户或组织明确授予权限的任何数据具有完全访问权限。
* 实例 Web 应用程序中的站点管理员是可以管理高级 Web 应用程序和实例设置、用户和组织帐户设置以及仓库数据的用户帐户。

关于GitHub Enterprise Server用户权限的详细信息，请参阅[对GitHub的访问权限](/zh/enterprise-server@3.22/get-started/learning-about-github/access-permissions-on-github)。

### 身份验证

GitHub Enterprise Server 提供四种身份验证方法。

* SSH 公钥身份验证提供使用 Git 的仓库访问权限和管理 shell 的访问权限。 有关详细信息，请参阅 [关于 SSH](/zh/enterprise-server@3.22/authentication/connecting-to-github-with-ssh/about-ssh) 和 [访问管理 shell (SSH)](/zh/enterprise-server@3.22/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh)。
* 使用 HTTP cookie 的用户名和密码身份验证提供 Web 应用程序访问和会话管理权限，可选择双重身份验证 (2FA)。 有关详细信息，请参阅“[配置内置身份验证](/zh/enterprise-server@3.22/admin/managing-iam/using-built-in-authentication/configuring-built-in-authentication)”。
* 使用 LDAP 服务、SAML 身份提供程序 (IdP) 或其他兼容服务的外部 LDAP、SAML 或 CAS 身份验证提供对 Web 应用程序的访问权限。 有关详细信息，请参阅“[将 SAML 用于企业 IAM](/zh/enterprise-server@3.22/admin/managing-iam/using-saml-for-enterprise-iam)”。
* OAuth 和 personal access token 提供对 Git 存储库数据和 API 及外部客户端和服务的访问权限。 有关详细信息，请参阅“[管理个人访问令牌](/zh/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)”。

### 审核和访问日志记录

GitHub Enterprise Server 存储传统操作系统和应用程序日志。 该应用程序还写入详细的审核和安全日志，这些 GitHub Enterprise Server 日志会永久存储。 可通过 `syslog-ng` 协议将两种类型的日志实时转发到多个目标。 有关详细信息，请参阅 [企业审核日志](/zh/enterprise-server@3.22/admin/concepts/security-and-compliance/audit-log-for-an-enterprise) 和 [日志转发](/zh/enterprise-server@3.22/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/log-forwarding)。

访问和审核日志包括如下信息。

#### 访问日志

* 关于浏览器和 API 访问的完整 web 服务器日志
* 通过 Git、HTTP 和 SSH 协议访问仓库数据的完整日志
* 通过 HTTPS 和 SSH 的管理访问日志

#### 审核日志

* 用户登录、密码重置、2FA 请求、电子邮件设置更改，以及对授权应用程序和 API 的更改
* 站点管理员操作，例如解锁用户帐户和仓库
* 仓库推送事件、访问授权、转让和重命名
* 组织成员变更，包括团队创建和解散

## GitHub Enterprise Server 的开放源代码依赖项

可以在实例版本 GitHub Enterprise Server以及每个项目的许可证 `http(s)://HOSTNAME/site/credits`中看到依赖项的完整列表。

你的实例上提供包含依赖项和关联元数据完整列表的 tarball。

* 对于所有平台通用的依赖项，请访问 `/usr/local/share/enterprise/dependencies-<GHE version>-base.tar.gz`
* 对于特定于平台的依赖项，请访问 `/usr/local/share/enterprise/dependencies-<GHE version>-<platform>.tar.gz`

在 `https://enterprise.github.com/releases/<version>/download.html` 处还提供包含依赖项和元数据完整列表的 tarball 文件。

## 其他阅读材料

* [设置 GitHub Enterprise Server 试用版](/zh/enterprise-server@3.22/admin/overview/setting-up-a-trial-of-github-enterprise-server)
* [设置 GitHub Enterprise Server 实例](/zh/enterprise-server@3.22/admin/installing-your-enterprise-server/setting-up-a-github-enterprise-server-instance)