Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-06-03. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

系统概述

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

关于 GitHub Enterprise Server

GitHub Enterprise Server is a self-hosted platform for software development within your enterprise. GitHub distributes GitHub Enterprise Server as a self-contained virtual appliance. After you provision a virtual machine and install the appliance, the instance runs a Linux operating system with a custom application stack. 更多信息请参阅“关于 GitHub Enterprise Server”。

存储架构

GitHub Enterprise Server 需要两个存储卷,一个安装在� �文件系统路径下 (/),另一个安装在用户文件系统路径下 (/data/user)。 这种架构将运行软件环境与持久应用程序数据分离,从而可以简化升级、回滚和恢复程序。

� �文件系统包含在分布式机器� 像中。 它包含基本操作系统和 GitHub Enterprise Server 应用程序环境。 � �文件系统应被视为临时性的。 升级到今后的 GitHub Enterprise Server 版本时,� �文件系统中的所有数据都将被替代。

� �存储量分成两个相同大小的分区。 其中一个分区将被挂载为� �文件系统 (/)。 另一个分区仅在升级和升级的回滚过程中作为 /mnt/upgrade 安装,以便在必要时更容易行回滚。 例如,如果分配了 200GB � �卷,將有 100GB 分配到� �文件系统,100GB 用于升级和回滚。

� �文件系统包含存储以下信息的文件。 此列表并非详尽� 遗。

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

用户文件系统包含存储以下配置和数据的文件。 此列表并非详尽� 遗。

  • Git 仓库
  • 数据库
  • 搜索索引
  • 在 GitHub Pages 站点上发布的内容
  • Git Large File Storage 中的大文件
  • 预接收挂钩环境

部署拓扑

可以在各种拓扑(如高可用性对)中部署 GitHub Enterprise Server。 更多信息请参阅“关于 GitHub Enterprise Server”。

数据保留和数据中心冗余

警告:在生产环境中使用 GitHub Enterprise Server 之前,我们强烈建议您设置备份和灾难恢复计划。

GitHub Enterprise Server 支持通过 GitHub Enterprise Server 备份实用程序 进行在线和增量备份。 您可以通过安全网络链接(SSH 管理端口)远距离为场外或地理上分散的存储生成增量快照。 在主数据中心发生灾难时,您可以在恢复时通过网络将快照恢复到新预配的实例中。

除网络备份外,在实例处于离线或维护模式时,还支持用户存储卷的 AWS (EBS) 和 VMware 磁盘快照。 如果您的服务级别要求允许定期离线维护,可以将定期卷快照用作低成本、低复杂性的方案,代替通过 GitHub Enterprise Server 备份实用程序 进行网络备份。

更多信息请参阅“在设备上配置备份”。

安全

GitHub Enterprise Server runs on your infrastructure and is governed by access and security controls that you define, such as firewalls, network policies, IAM, monitoring, and VPNs. GitHub Enterprise Server is suitable for use by enterprises that are subject to regulatory compliance, which helps to avoid issues that arise from software development platforms in the public cloud.

GitHub Enterprise Server 还包含额外的安全功能。

操作系统、软件和补丁

GitHub Enterprise Server 运行自定义的 Linux 操作系统,其中只包含必要的应用程序和服务。 GitHub 在其� �准产品发布周期中分发实例� �心操作系统的补丁。 补丁解决 GitHub Enterprise Server 的功能、稳定性和非关键性安全问题。 GitHub 还� �据需要在常规发布周期之外提供重要的安全补丁。

GitHub Enterprise Server 作为一种设备提供,许多操作系统包与通常的 Debian 分发相比进行了修改。 � 此,我们不支持修改基础操作系统(包括操作系统升级),与 GitHub Enterprise Server 许可和支持协议第 11.3“除外条款”保持一致。

目前,GitHub Enterprise Server 的基本操作系统是 Debian 9 (Stretch),它在 Debian 长期支持计划下获得支持。 计划在 Stretch 的 Debian LTS 期间结束前迁移到更新的基础操作系统。

定期补丁更新发布在 GitHub Enterprise Server 发行页面上,发行说明页面提供详细信息。 这些补丁一般含有经过测试并且质量经过我们工程团队批准的上游供应商和项目安全补丁。 从上游更新发布到测试以及捆绑于即将发布的 GitHub Enterprise Server 补丁版本中时,可能稍有延迟。

网络安全性

GitHub Enterprise Server 的内部防火墙限制对实例服务的网络访问。 网络上仅提供设备正常运行所需的服务。 更多信息请参阅“网络端口”。

应用程序安全性

GitHub 的应用程序安全团队全时关注 GitHub 产品(包括 GitHub Enterprise Server)的漏洞评估、渗透测试和代� �审查。 GitHub 还与外部安全公司签约,要求他们对 GitHub 产品定期进行安全性评估。

外部服务和支持

GitHub Enterprise Server � 需从网络访问外部服务也可以正常运行。 您可以选择集成外部服务,以提供电子邮件� 送、外部监控和日志转发等功能。 更多信息请参阅“配置电子邮件通知”、“设置外部监控”和“日志转发”。

您可以手动收集故障排除数据并发送至 GitHub 支持。 更多信息请参阅“将数据提供给 GitHub 支持”。

� 密通信

GitHub 将 GitHub Enterprise Server 设计为在公司防火墙后面运行。 为确保线路通信安全,我们建议您启用� 输层安全协议 (TLS)。 GitHub Enterprise Server 在 HTTPS 流量方面支持 2048 位和更高的商业 TLS 证书。 更多信息请参阅“配置 TLS”。

默认情况下,实例还为使用 Git 的仓库访问和管理目的提供安全 Shell (SSH) 访问。 更多信息请参阅“关于 SSH”和“访问管理 shell (SSH)“。

用户和访问权限

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

  • 管理员 Linux 用户帐户已控制对基础操作系统的访问,包括对直接文件系统和数据库的访问。 一小部分受信任的管理员应该有权访问此帐户,他们可以通过 SSH 访问。 更多信息请参阅“访问管理 shell (SSH)。”
  • 实例 Web 应用程序中的用户帐户对自己的数据以及其他用户或组织明确授予权限的任何数据具有完全访问权限。
  • 实例 Web 应用程序中的站点管理员是可以管理高级 Web 应用程序和实例设置、用户和组织帐户设置以及仓库数据的用户帐户。

关于 GitHub Enterprise Server 用户权限的更多信息,请参阅“GitHub 上的访问权限”。

身份验证

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

  • SSH 公钥身份验证提供使用 Git 的仓库访问权限和管理 shell 的访问权限。 更多信息请参阅“关于 SSH”和“访问管理 shell (SSH)“。
  • 使用 HTTP cookie 的用户名和密� �身份验证提供 Web 应用程序访问和会话管理权限,可选择双重身份验证 (2FA)。 更多信息请参阅“使用内置身份验证”。
  • 使用 LDAP 服务、SAML 身份提供程序 (IdP) 或其他兼容服务的外部 LDAP、SAML 或 CAS 身份验证提供对 Web 应用程序的访问权限。 更多信息请参阅“管理企业的 IAM”。
  • OAuth 和个人访问令牌为外部客户端和服务提供对 Git 仓库数据和 API 的访问权限。 更多信息请参阅“创建个人访问令牌”。

审� �和访问日志记录

GitHub Enterprise Server 存储� 统的操作系统日志和应用程序日志。 应用程序还会编写详细的审� �和安全日志,永久存储在 GitHub Enterprise Server 上。 您可以通过 syslog-ng 协议将两种类型的日志实时转发到多个目� �。 更多信息请参阅“关于企业的审� �日志”和“日志转发”。

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

访问日志

  • 关于浏览器和 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

还提供包含依赖项和元数据完整列表的 tarball,地址为 https://enterprise.github.com/releases/<version>/download.html

延伸阅读