Enterprise Server 3.8 release notes
Enterprise Server 3.8.4
Download GitHub Enterprise Server 3.8.4May 30, 2023
📣 这不是 Enterprise Server 的最新版本。 请使用最新版本获取最新的安全性、性能和 bug 修复程序。
3.8.4: Security fixes
中:降级或删除集成安装的权限后,GitHub 应用的范围安装令牌保留已批准的权限。 GitHub 已针对此漏洞请求 CVE ID CVE-2023-23765,该漏洞是通过 GitHub Bug 赏金计划报告的。
包已更新到最新的安全版本。
3.8.4: Bug fixes
在群集配置中的实例上,升级 MySQL 主节点时,升级后配置运行将比所需时间长 600 秒,原因是错误地检测了不正常的节点。
在启用了 GitHub Advanced Security 许可证和机密扫描的实例上,用于加密机密扫描发现的机密的密钥轮换将失败。
在某些情况下,在具有多个节点的实例上,Git 复制无法完全复制先前已删除的存储库,从而导致
ghe-repl-status
输出中出现警告。如果用户向协作者 API(添加指定
read
或write
的permission
的存储库协作者终结点)发出了请求,则实例返回500
错误。在启用了依赖项关系图的实例上,将显示源自生成时提交快照的清单的正确路径。
spokesctl
命令行实用工具接受更多输入格式。
3.8.4: Changes
对实例有管理 SSH 访问权限的人员可以使用
ghe-config redis.max-memory-gb VALUE
为 Redis 配置最大内存使用量(以千兆字节为单位)。
3.8.4: Known issues
自定义防火墙规则在升级过程中被删除。
GitHub 包 npm 注册表不再返回元数据响应的时间值。 这样可以大幅改善性能。 我们继续拥有将时间值作为元数据响应的一部分返回所需的所有数据,并将在以后解决现有性能问题后恢复返回该值。
在配置运行的验证阶段,Notebook 和 Viewscreen 服务可能会出现
No such object
错误。 可以忽略此错误,因为服务仍应正确启动。如果根站点管理员在登录尝试失败后被锁定在管理控制台外,则帐户不会在定义的锁定时间后自动解锁。 对实例具有管理 SSH 访问权限的人员必须使用管理 shell 解锁帐户。 有关详细信息,请参阅“排查对管理控制台的访问问题”。 [更新日期:2023-02-23]
在高可用性配置中的实例上,被动副本节点接受 Git 客户端请求并将请求转发到主节点。
使用出站 Web 代理服务器时,
ghe-btop
命令在某些情况下可能会失败,并显示“查询分配时出错: 意外响应代码: 401”错误。如果将实例配置为将日志转发到启用了 TLS 的目标服务器,则不采用站点管理员使用
ghe-ssl-ca-certificate-install
上传的证书颁发机构 (CA) 捆绑包,并且与服务器的连接会失败。运行
ghe-config-apply
时,进程可能会停止并显示Deployment is running pending automatic promotion
消息。在禁用了子域隔离的实例上,Web UI 中的 Mermaid 关系图显示“无法呈现丰富显示”错误,且无法呈现。
Enterprise Server 3.8.3
Download GitHub Enterprise Server 3.8.3May 09, 2023
📣 这不是此版本系列的最新补丁版本,也不是 Enterprise Server 的最新版本。 请使用最新版本获取最新的安全性、性能和 bug 修复程序。
3.8.3: Security fixes
中:更新了 Git,现在包含 2.40.1 中的修补程序。 有关详细信息,请参阅 GitHub 博客上公布的 Git 安全漏洞。
3.8.3: Bug fixes
用户无法在问题或拉取请求的注释中将 GIF 文件作为附件上传。
对于来自实例例外列表的顶级域 (TLD) 或 IANA 注册的顶级域 (TLD),站点管理员无法绕过代理。
在某些平台上,当具有管理 SSH 访问权限的用户运行
ghe-diagnostics
后,命令的输出包含一个修饰性的SG_IO
错误。当站点管理员使用 GitHub Enterprise Importer 从 GitHub Enterprise Cloud 导入数据时,在导入文件级注释的过程中,迁移失败。 此失败不再阻止继续导入。
在具有 GitHub Advanced Security 许可证的实例上,具有组织安全管理员角色的用户无法查看组织的 GitHub Advanced Security 设置。
在具有大量组织的实例上,导航到企业“安全和分析”设置页的企业所有者可能会遇到
500
错误。从 GitHub Enterprise Server 3.8 开始,要使用 GitHub Enterprise Importer CLI、
startRepositoryMigration
GraphQL API 或“开始组织迁移”REST API,需要在管理控制台中配置 Blob 存储提供程序。 使用 Azure Blob 存储时,存储容器被错误地配置为可公开访问。 Azure Blob 存储容器现在将配置为专用容器,并且我们引入了一项检查,如果存储容器是公共的,则导出明确失败。当站点管理员使用 GitHub Enterprise Importer 时,如果某存储库中的项目列包含 2,500 个或更多存档卡,那么导入此存储库失败。
在某些情况下,在具有多个节点的实例上,Git 复制无法完全复制先前已删除的存储库,从而导致
ghe-repl-status
输出中出现警告。在启用了 Dependabot 警报的实例上,当多个生成时提交检测器检测到不同的漏洞时,会错误地隐藏警报。
GitHub Enterprise Server 发布了 collectd 无法处理的分布指标。 这些指标包括
pre_receive.lfsintegrity.dist.referenced_oids
、pre_receive.lfsintegrity.dist.unknown_oids
和git.hooks.runtime
。在某些情况下,在启用了 GitHub Actions 的实例上,使用 GitHub Actions 工作流部署 GitHub Pages 站点失败,状态为
deployment_lost
。在具有 GitHub Advanced Security 许可证且还配置了大于 UTC 的时区的实例上,如果用户按日期对机密进行降序排序,则机密扫描警报列表显示“加载机密失败”错误。
在启用了机密扫描的具有 GitHub Advanced Security 许可证的实例上,如果日志占用卷上的所有可用空间,过多地登录
/var/log
可能会导致面向用户的错误并降低系统性能。
3.8.3: Changes
在启用了依赖项关系图的实例上,后台服务可处理更多流量。
如果用户具有管理 SSH 访问权限,并且使用
ghe-support-bundle
或ghe-cluster-support-bundle
实用工具生成支持捆绑包,那么该用户可使用-p
或--period
(无论是否带有空格或引号)指定收集数据的时间段。 例如,除了'-p 5 days'
或-p '4 days 10 hours'
外,-p 5days
或-p 4days10hours
也有效。站点管理员使用 GitHub Enterprise Importer 的
gh-migrator
实用工具导出迁移存档后,存档链接将在 48 小时内(而非 1 小时内)保持可访问性。
3.8.3: Known issues
自定义防火墙规则在升级过程中被删除。
GitHub 包 npm 注册表不再返回元数据响应的时间值。 这样可以大幅改善性能。 我们继续拥有将时间值作为元数据响应的一部分返回所需的所有数据,并将在以后解决现有性能问题后恢复返回该值。
在配置运行的验证阶段,Notebook 和 Viewscreen 服务可能会出现
No such object
错误。 可以忽略此错误,因为服务仍应正确启动。在群集升级到 GitHub Enterprise Server 3.8.0 的过程中,在升级主 MySQL 节点以外的节点之后以及升级主 MySQL 节点之前,运行
ghe-cluster-config-apply
后可能会多次出现以下错误。Error response from daemon: conflict: unable to delete IMAGE_ID (cannot be forced) - image is being used by running container CONTAINER_ID
GitHub 建议等到此问题解决后再升级群集。 GitHub Enterprise Server 即将进行的更新的发行说明中将提供详细信息。
如果根站点管理员在登录尝试失败后被锁定在管理控制台外,则帐户不会在定义的锁定时间后自动解锁。 对实例具有管理 SSH 访问权限的人员必须使用管理 shell 解锁帐户。 有关详细信息,请参阅“排查对管理控制台的访问问题”。 [更新日期:2023-02-23]
在高可用性配置中的实例上,被动副本节点接受 Git 客户端请求并将请求转发到主节点。
使用出站 Web 代理服务器时,
ghe-btop
命令在某些情况下可能会失败,并显示“查询分配时出错: 意外响应代码: 401”错误。如果将实例配置为将日志转发到启用了 TLS 的目标服务器,则不采用站点管理员使用
ghe-ssl-ca-certificate-install
上传的证书颁发机构 (CA) 捆绑包,并且与服务器的连接会失败。运行
ghe-config-apply
时,进程可能会停止并显示Deployment is running pending automatic promotion
消息。
Enterprise Server 3.8.2
Download GitHub Enterprise Server 3.8.2April 18, 2023
📣 这不是此版本系列的最新补丁版本,也不是 Enterprise Server 的最新版本。 请使用最新版本获取最新的安全性、性能和 bug 修复程序。
3.8.2: Bug fixes
在启用了 GitHub Actions 的实例上,对具有矩阵的可重用工作流作业中的可重用工作流进行嵌套调用可以正确评估表达式中的上下文,例如
strategy: ${{ inputs.strategies }}
。Git LFS 对象的下载请求直到报告最终下载大小后才完成,这影响了这些请求的延迟,尤其是在节点充当存储库缓存的实例上。
在配置了高可用性的实例上,如果 GitHub Enterprise Server 同时在副本节点上创建存储库,
git push
操作可能会失败。当站点管理员通过 SSH 运行
ghe-btop
时,命令未运行,并出现/usr/bin/env: python3: No such file or directory
错误。准备启用 GitHub Actions 的站点管理员无法运行
ghe-actions-precheck
实用工具,因为脚本文件不可执行。在某些情况下,在具有 GitHub Advanced Security 许可证的实例上,用户无法加载安全分析页,并看到
500
错误。在已启用 GitHub Connect 的实例上,如果启用了“用户可以搜索 GitHub.com”,专用和内部存储库中的问题则不包括在 GitHub.com 的用户搜索结果中。
还原已删除的组织后,组织未出现在实例的组织列表中。
站点管理员使用 GitHub Enterprise 导入工具的
gh-migrator
实用工具将迁移存档导出到 AWS S3 后,无法访问存档的 URL。如果站点管理员使用 GitHub Enterprise 导入工具的
gh-migrator
实用工具将迁移存档导出到了 AWS S3 us-east-1 区域中的 Bucket,则无法访问存档。由于包含
kredz.*
指标,收集的日志大小可能会迅速增长,StatsD 无法分析这些指标,进而产生错误消息。
3.8.2: Changes
如果站点管理员为实例上的 GitHub Actions 或 GitHub Packages 提供了无效的 blob 存储配置,则预检检查页会显示详细信息和故障排除信息。
站点管理员使用 GitHub Enterprise 导入工具的
gh-migrator
实用工具导出迁移存档后,指向存档的链接仍可访问 48 小时,而不是 1 小时。在具有 GitHub Advanced Security 许可证的实例上,创作机密扫描的自定义模式的用户可以提供必须匹配或不能匹配的最多具有 2,000 个字符的表达式。 在此之前,限制为 1,000 个字符。
3.8.2: Known issues
自定义防火墙规则在升级过程中被删除。
GitHub 包 npm 注册表不再返回元数据响应的时间值。 这样可以大幅改善性能。 我们继续拥有将时间值作为元数据响应的一部分返回所需的所有数据,并将在以后解决现有性能问题后恢复返回该值。
在配置运行的验证阶段,Notebook 和 Viewscreen 服务可能会出现
No such object
错误。 可以忽略此错误,因为服务仍应正确启动。在群集升级到 GitHub Enterprise Server 3.8.0 的过程中,在升级主 MySQL 节点以外的节点之后以及升级主 MySQL 节点之前,运行
ghe-cluster-config-apply
后可能会多次出现以下错误。Error response from daemon: conflict: unable to delete IMAGE_ID (cannot be forced) - image is being used by running container CONTAINER_ID
GitHub 建议等到此问题解决后再升级群集。 GitHub Enterprise Server 即将进行的更新的发行说明中将提供详细信息。
如果根站点管理员在登录尝试失败后被锁定在管理控制台外,则帐户不会在定义的锁定时间后自动解锁。 对实例具有管理 SSH 访问权限的人员必须使用管理 shell 解锁帐户。 有关详细信息,请参阅“排查对管理控制台的访问问题”。 [更新日期:2023-02-23]
在启用了机密扫描的具有 GitHub Advanced Security 许可证的实例上,如果日志占用卷上的所有可用空间,过多地登录
/var/log
可能会导致面向用户的错误并降低系统性能。 为了防止此问题影响用户,请监视实例根卷上的可用空间。 有关详细信息,请参阅“为设备配置机密扫描”和“监视设备”。 如果你怀疑此问题会影响你的实例并且需要帮助,请联系 GitHub 支持部门。 [更新日期:2023-05-03]
Enterprise Server 3.8.1
Download GitHub Enterprise Server 3.8.1March 23, 2023
📣 这不是此版本系列的最新补丁版本,也不是 Enterprise Server 的最新版本。 请使用最新版本获取最新的安全性、性能和 bug 修复程序。
3.8.1: Security fixes
高:解决了一个不适当的身份验证漏洞,该漏洞允许未经授权的参与者通过 SSH 证书机构进行身份验证来修改其他用户的机密 Gist。 此漏洞通过 GitHub Bug 赏金计划 报告,编号为 CVE-2023-23761。 [更新日期:2023-04-07]
中:解决了一个不正确的比较漏洞,该漏洞允许通过显示不正确的差异来进行提交走私。 此漏洞通过 GitHub Bug 赏金计划 报告,编号为 CVE-2023-23762。 [更新日期:2023-04-07]
3.8.1: Bug fixes
在启用了 GitHub Actions 的实例上,如果匹配的运行器组在作业最初排队时不可用,那么即使匹配的运行器组在作业进入队列后可用,也无法启动 GitHub Actions 的工作流作业。
在启用了 GitHub Actions 的实例上,还原已删除的存储库后,现在将正确执行 GitHub Actions。
在启用了 GitHub Actions 的实例上,对具有矩阵的可重用工作流作业中的可重用工作流进行嵌套调用可以正确评估表达式中的上下文,例如
strategy: ${{ inputs.strategies }}
。某些情况下,无法呈现管理控制台的监视仪表板上的图。
管理员使用
/setup/api/start
REST API 终结点上传许可证后,配置运行在迁移阶段失败,并显示Connection refused
错误。在配置了群集的实例上,站点管理员使用
ghe-maintenance -s
设置维护模式后,实用工具尝试访问/data/user/common/cluster.conf
时出现了Permission denied
错误。在配置了高可用性的实例上,如果管理员在运行
ghe-repl-setup
后(但未运行ghe-repl-start
时)立即使用ghe-repl-teardown
从副本节点删除复制,错误指示脚本cannot launch /usr/local/bin/ghe-single-config-apply - run is locked
。ghe-repl-teardown
现在显示信息警报并继续删除。在配置高可用性期间,如果站点管理员中断了
ghe-repl-start
实用工具,该实用工具会错误地报告已配置复制,并且实例不会执行预期的清理操作。站点管理员在任何实例节点上通过 SSH 运行的命令未记录在
/var/log/ssh-console-audit.log
中。在配置为使用 GitHub Enterprise Server 的内测版 SCIM 的实例上,由于授权要求错误,用户无法使用 SSH 密钥和个人访问令牌进行身份验证。
用户导入启用了推送保护的存储库后,该存储库不会立即显示在安全概述的“安全覆盖范围”视图中。
来自
/repositories
REST API 终结点的响应错误地包含已删除的存储库。站点管理员使用
ghe-migrator
将数据迁移到了 GitHub Enterprise Server 后,某些情况下,嵌套团队关系在导入团队后不会永久性存在。如果存储库包含带有检查注释的
CODEOWNERS
文件,拉取请求“已更改的文件”选项卡返回了500
错误并在“带有检查注释的未更改文件”部分显示了“糟糕,出现错误”。在启用了 GitHub Actions 的实例上,如果用户使用 REST API 手动触发了工作流但未指定可选布尔的值,则该 API 无法验证请求并返回了
422
错误。当用户搜索 Gist 时,搜索字段中的文本在某些情况下是不可见的,因为文本颜色与字段背景颜色相同。
某些情况下,在具有多个节点的实例上,GitHub Enterprise Server 错误地停止写入副本文件服务器,导致存储库数据不同步。
在已启用 GitHub Connect 的实例上,如果启用了“用户可以搜索 GitHub.com”,用户不会在 GitHub.com 的搜索结果中看到专用和内部存储库中的问题。
如有企业所有者未为其用户帐户启用 2FA,则企业所有者将无法为实例启用双因素身份验证 (2FA)。 [更新日期:2023-04-17]
在启用了 GitHub Packages 的实例上,当用户推送到容器注册表后,该实例在实例可以容纳请求的情况下错误地响应了
429 Too Many Requests
错误。 限制已提高,用户接收此消息的频率将会减少。 [更新日期:2023-05-30]
3.8.1: Changes
站点管理员为 GitHub Enterprise Server 配置出站 Web 代理服务器时,该实例现在会验证从代理配置中排除的顶级域 (TLD)。 默认情况下,可以排除 IANA 指定的公共 TLD。 站点管理员可以使用
ghe-config
指定要排除的未注册 TLD 列表。 所有公共 TLD 都需要.
前缀。 例如,.example.com
有效,但example.com
无效。 有关详细信息,请参阅“配置出站 Web 代理服务器”。为避免在具有多个节点的实例上成功执行 Git 操作时出现间歇性问题,GitHub Enterprise Server 会在尝试 SQL 查询之前检查 MySQL 容器的状态。 超时持续时间也已缩短。
来自
ghe-saml-mapping-csv -d
的输出的默认路径是/data/user/tmp
而不是/tmp
。 有关详细信息,请参阅“命令行实用程序”。在具有 GitHub Advanced Security 许可证的实例上,创作机密扫描的自定义模式的用户可以提供必须匹配或不能匹配的最多具有 2,000 个字符的表达式。 在此之前,限制为 1,000 个字符。
3.8.1: Known issues
在新建的没有任何用户的 GitHub Enterprise Server 实例上,攻击者可以创建第一个管理员用户。
自定义防火墙规则在升级过程中被删除。
GitHub 包 npm 注册表不再返回元数据响应的时间值。 这样可以大幅改善性能。 我们继续拥有将时间值作为元数据响应的一部分返回所需的所有数据,并将在以后解决现有性能问题后恢复返回该值。
在配置运行的验证阶段,Notebook 和 Viewscreen 服务可能会出现
No such object
错误。 可以忽略此错误,因为服务仍应正确启动。在群集升级到 GitHub Enterprise Server 3.8.0 的过程中,在升级主 MySQL 节点以外的节点之后以及升级主 MySQL 节点之前,运行
ghe-cluster-config-apply
后可能会多次出现以下错误。Error response from daemon: conflict: unable to delete IMAGE_ID (cannot be forced) - image is being used by running container CONTAINER_ID
GitHub 建议等到此问题解决后再升级群集。 GitHub Enterprise Server 即将进行的更新的发行说明中将提供详细信息。
如果根站点管理员在登录尝试失败后被锁定在管理控制台外,则帐户不会在定义的锁定时间后自动解锁。 对实例具有管理 SSH 访问权限的人员必须使用管理 shell 解锁帐户。 有关详细信息,请参阅“排查对管理控制台的访问问题”。 [更新日期:2023-02-23]
使用搜索 API 可能会导致对其他接口的后续请求失败。 发生此问题时,受影响的 API 或 Web UI 用户将收到 HTTP 5xx 响应,并将记录此
NoMethodError
异常:NoMethodError (undefined method `starts_with?' for [:ok, "refs/heads/main"]:Array):
在启用了机密扫描的具有 GitHub Advanced Security 许可证的实例上,如果日志占用卷上的所有可用空间,过多地登录
/var/log
可能会导致面向用户的错误并降低系统性能。 为了防止此问题影响用户,请监视实例根卷上的可用空间。 有关详细信息,请参阅“为设备配置机密扫描”和“监视设备”。 如果你怀疑此问题会影响你的实例并且需要帮助,请联系 GitHub 支持部门。 [更新日期:2023-05-03]
Enterprise Server 3.8.0
Download GitHub Enterprise Server 3.8.0March 07, 2023
📣 这不是此版本系列的最新补丁版本,也不是 Enterprise Server 的最新版本。 请使用最新版本获取最新的安全性、性能和 bug 修复程序。
有关升级说明,请参阅“升级 GitHub Enterprise Server”。
3.8.0: Features
Projects(测试版)
Projects 是 GitHub Enterprise Server 上规划和跟踪工作的灵活工具,现已推出测试版。 项目是集成问题和拉取请求的自适应电子表格,可帮助用户有效规划和跟踪工作。 用户可以创建和自定义多个视图,每个视图都可以对问题和拉取请求进行筛选、排序和分组。 用户还可以定义自定义字段来跟踪团队或项目的唯一元数据,从而支持针对任何需求或流程进行自定义。 此功能可能会更改。 有关详细信息,请参阅“关于 Projects (beta)”。
实例管理
站点管理员可以通过为管理控制台创建专用用户帐户来提高实例的安全性。 只有根站点管理员可以创建用户帐户。 若要控制用户帐户的访问,请分配编辑者或操作员角色。 操作员可以管理实例的管理 SSH 访问。 有关详细信息,请参阅“管理对管理控制台的访问”。
为了建立或遵守内部策略,站点管理员可以使用管理控制台配置实例的策略来保留与检查相关的数据,包括检查 GitHub Actions 和状态 API 生成的数据。 管理员可以启用或禁用保留、设置自定义保留阈值或设置自定义硬删除阈值。 有关详细信息,请参阅“配置应用程序”[更新日期:2023-03-02]
使用
ghe-support-bundle
命令行实用工具生成支持捆绑时,站点管理员可以指定要用于收集捆绑中的数据的确切持续时间。 有关详细信息,请参阅“命令行实用工具”。标识和访问管理
用户可以查看和撤销 GitHub Enterprise Server 实例的浏览器会话和 GitHub Mobile 会话。 有关详细信息,请参阅“查看和管理会话。”
策略
企业所有者可以配置存储库管理员是否可以启用或禁用 Dependabot 警报。 在具有 GitHub Advanced Security 许可证的实例上,企业所有者还可以设置策略来控制存储库管理员是否可以启用 GitHub Advanced Security 功能或机密扫描。 有关详细信息,请参阅“为企业实现代码安全性和分析策略”。
审核日志
企业和组织所有者可以通过授予对审核日志终结点的访问权限来支持遵守最低特权原则,而无需提供完全管理权限。 为了提供此访问权限,个人访问令牌和 OAuth 应用现在支持
read:audit_log
范围。 有关详细信息,请参阅“使用企业的审核日志 API”。企业所有者可以通过查看审核日志事件中的令牌数据,更轻松地检测和跟踪与身份验证令牌关联的活动。 有关详细信息,请参阅“标识由访问令牌执行的审核日志事件”。
企业所有者可以配置审核日志流式传输到 Datadog 终结点。 有关详细信息,请参阅“流式处理企业的审核日志”。
GitHub 高级安全
使用具有 GitHub Advanced Security 许可证的实例的企业所有者可以在审核日志中查看对 GitHub Advanced Security、机密扫描和推送保护启用的更改。 组织所有者可以在审核日志中查看对推送保护的自定义消息所做的更改。 有关详细信息,请参阅以下文档。
使用具有 GitHub Advanced Security 许可证的实例的企业所有者可确保合规性,并简化使用 REST API 向实例上所有组织的机密扫描和推送保护的推出。 此终结点补充了现有的 web UI 以及存储库和组织的终结点。 有关详细信息,请参阅 REST API 文档中的“代码安全性和分析”。
在具有 GitHub Advanced Security 许可证的实例上使用机密扫描的企业和组织所有者可以使用 REST API 指定要在推送保护阻止包含机密的推送时显示的自定义链接。 有关详细信息,请参阅 REST API 文档中的“代码安全性和分析”或“组织”。
在具有 GitHub Advanced Security 许可证的实例上消除机密扫描警报的用户可以通过使用 Web UI 或 REST API 提供可选注释来帮助其他用户了解消除的原因。 有关详细信息,请参阅以下文档。
- “管理来自机密扫描的警报”
- REST API 文档中的“机密扫描”
具有 GitHub Advanced Security 许可证的实例上的用户可以根据存储库或组织级别的警报严重性从代码扫描 API 筛选结果。 使用
severity
参数仅返回具有特定严重性的代码扫描警报。 有关详细信息,请参阅 REST API 文档中的“代码扫描”。具有 GitHub Advanced Security 许可证的实例上的用户可以使用 CodeQL 代码扫描来分析两种其他语言的漏洞和错误。 对 Ruby 的支持已正式发布,对 Kotlin 的支持处于测试阶段,可能会发生更改。
- Ruby 分析可以检测出的漏洞是在测试期间可检测出的常见漏洞的两倍多。 总共 30 条规则可以识别一系列漏洞,包括跨站点脚本 (XSS)、正则表达式拒绝服务 (ReDoS) 、SQL 注入等。 Ruby-on-Rails 的其他库和框架覆盖可确保 Web 服务开发人员获得更精确的结果。 GitHub Enterprise Server 支持所有常见的 Ruby 版本,最高为 3.1(含)。
- Kotlin 支持是现有 Java 支持的扩展,并受益于用于移动和服务器端应用程序的适用于 Java 的现有 CodeQL 查询。 GitHub 还改进并添加了一系列特定于移动设备的查询,涵盖意向处理、Web 视图验证问题、片段注入等问题。
有关代码扫描的详细信息,请参阅“关于使用 CodeQL 进行代码扫描”。
在具有 GitHub Advanced Security 许可证的实例上使用 CodeQL 代码扫描的用户可以在 GitHub Actions 工作流文件中自定义 Go 分析的生成配置。 Go 分析的现有 CodeQL 工作流不需要进行任何更改,并且将继续受支持。 有关详细信息,请参阅“为已编译语言配置 CodeQL 工作流”。
Dependabot
为了提高代码安全性并简化更新易受攻击的依赖项的过程,更多用户可以接收具有依赖项更新的自动拉取请求。
- GitHub Actions 创建者可以自动更新工作流文件中的依赖项。
- 使用 Pub 的 Dart 或 Flutter 开发人员可以自动更新其项目中的依赖项。
有关详细信息,请参阅“关于 Dependabot 安全更新”。
在启用了依赖项关系图的实例上,Dart 和 JavaScript 开发人员可以接收有关项目依赖项内已知漏洞的 Dependabot 警报。
- 对于 Dart,依赖项关系图检测
pubspec.lock
和pubspec.yaml
文件。 - 使用 Node.js 和 npm 的 JavaScript 开发人员可以接收 Yarn v2 和 v3 清单中已知漏洞的警报。 这补充了对 v1 清单的现有支持。 依赖项关系图检测
package.json
和yarn.lock
文件。
有关详细信息,请参阅以下文章。
- 对于 Dart,依赖项关系图检测
在启用了依赖项关系图的实例上使用支持的包管理器的 Python 开发人员可以接收符合 PEP 621 标准的
pyproject.toml
文件中依赖项的 Dependabot 警报。 有关详细信息,请参阅“关于 Dependabot 版本更新”。当新版本已满足当前依赖项要求时,接收 Dependabot 警报的 Python 开发人员可以减少版本更新的数量。 若要配置此行为,请使用
increase-if-necessary
版本控制策略。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。企业所有者可以使用 REST API 检索实例的 Dependabot 警报。 此终结点为 beta 版本,可能会有变动。 有关详细信息,请参阅 REST API 文档中的“Dependabot 警报”。
组织所有者可以使用 REST API 检索组织的 Dependabot 警报。 此终结点为 beta 版本,可能会有变动。 有关详细信息,请参阅“Dependabot 警报”。
用户可以使用 REST API 以编程方式查看和处理 Dependabot 警报。 Beta 版中提供了用于查看、列出和更新 Dependabot 警报的新终结点。 这些终结点可能会发生更改。 有关详细信息,请参阅 REST API 文档中的“Dependabot 警报”。
代码安全
若要提高安全状况的可见性并改进风险分析,用户可以访问安全概述中的覆盖和风险视图。 覆盖视图显示跨存储库的启用,而风险视图显示跨存储库的警报。 具有 GitHub Advanced Security 许可证的实例上的组织所有者、安全经理和存储库管理员可以从安全概述的覆盖视图中启用安全功能。 这些视图会替换“概述”页面,目前处于公共测试阶段,可能会发生更改。 有关详细信息,请参阅“关于安全概述”。
参与者可以通过创建
SECURITY.md
文件来定义存储库的安全策略。 为了提高策略的可见性,GitHub Enterprise Server 将从存储库的 “代码”选项卡链接到策略。有关详细信息,请参阅“将安全策略添加到存储库”。依赖项评审 API 已正式发布,关联的 GitHub Action 现在允许用户引用本地或外部配置文件。 有关详细信息,请参阅以下文档。
GraphQL API 提供对存储库依赖项关系图的访问。 此功能处于预览阶段,可能会发生更改。 有关详细信息,请参阅 GraphQL API 文档中的“对象”。
GitHub 操作
在配置 GitHub Actions 存储期间,站点管理员可以使用 OIDC 连接到对象存储提供程序,避免与输入敏感机密和访问密钥相关的风险。 GitHub Enterprise Server 上的 GitHub Actions 支持使用 OIDC 连接到 AWS、Azure 和 Google Cloud Platform。 此功能为 beta 版本,可能会有变动。 有关详细信息,请参阅“为 GitHub Enterprise Server 启用 GitHub Actions”。
为了防止从
set-state
和set-output
工作流命令不受信任的数据日志记录,操作创建者可以使用环境文件来管理状态和输出。- 若要使用此功能,运行器应用程序必须是版本 2.297.0 或更高版本。 版本 2.298.2 及更高版本将对使用
save-state
或set-output
命令的用户发出警告。 这些命令将在将来的版本中完全禁用。 - 若要使用更新的
saveState
和setOutput
函数,使用 GitHub Actions 工具包的工作流必须调用@actions/core
v1.10.0 或更高版本。
有关详细信息,请参阅“GitHub Actions 的工作流命令”。
- 若要使用此功能,运行器应用程序必须是版本 2.297.0 或更高版本。 版本 2.298.2 及更高版本将对使用
从专用存储库共享操作和可重用工作流的功能已正式发布。 用户可以与同一组织或用户帐户拥有的其他专用存储库,或者与实例上的所有专用存储库共享专用存储库中的工作流。 有关详细信息,请参阅以下文档。
- “管理存储库的 GitHub Actions 设置”
- REST API 文档中的“GitHub Actions权限”
用户可以通过定义允许在存储库或组织中的工作流之间重复使用的配置变量,提高工作流的可读性,并消除将非敏感配置数据存储为加密机密的需要。 此功能为 beta 版本,可能会有变动。 有关详细信息,请参阅“变量”。
用户可以动态命名工作流运行。
run-name
接受表达式,动态名称显示在工作流运行列表中。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。用户可以通过在
runs-on
键中定义工作流的预期运行器组的名称,阻止作业在预期组外的运行器上运行。runs-on: group: my-group labels: [ self-hosted, label-1 ]
此外,GitHub Enterprise Server 将不再允许在组织和企业级别创建具有相同名称的运行器组。 对于与企业的运行器组具有相同名称的组织内的任何运行器组,将显示警告横幅。
用户可以通过定义所需的工作流,在组织的所有存储库中强制实施标准 CI/CD 做法。 这些工作流作为针对存储库默认分支的所有拉取请求的必需状态检查触发,这将阻止合并,直到检查通过。 此功能为 beta 版本,可能会有变动。 有关详细信息,请参阅“必需工作流”。
为了跨云部署工作流实现 OIDC 配置的标准化,组织所有者和存储库管理员可以通过定义自定义模板来配置 OIDC 令牌中的
subject
声明格式。 有关详细信息,请参阅“关于使用 OpenID Connect 进行安全强化”。为了提高存储库中的缓存使用情况的透明度和控制度,缓存具有
actions/cache
的依赖项和其他重用文件的用户可以从实例的 Web UI 管理缓存。 有关详细信息,请参阅“缓存依赖项以加快工作流”。社区体验
用户可以通过在其配置文件中显示本地时区来设置有关可用性的预期。 查看用户配置文件或悬浮卡片的人将看到时区,以及他们比用户本地时间落后或提前多少小时。 有关详细信息,请参阅“个性化配置文件”。
GitHub Discussions
为了提高可发现性,GitHub Discussions 提供以下改进。
- 存储库所有者可以将讨论固定到特定类别。
- 类别标题和说明显示在类别的页面上。
组织
若要管理组织成员如何创建存储库分支,组织所有者可以为任何组织设置专用分支策略。 此策略必须比为企业设置的分支策略更严格。 有关详细信息,请参阅“管理组织的分支策略”。
组织所有者可以通过阻止外部协作者请求安装 GitHub 和 OAuth 应用来提高组织安全性。 有关详细信息,请参阅“限制 OAuth 应用和 GitHub 应用访问请求。”
存储库
为了避免在不必要的情况下提供对存储库的完全管理访问权限,存储库管理员可以创建一个允许用户绕过分支保护的自定义角色。 若要对具有管理访问权限或绕过权限的所有用户强制实施分支保护,管理员可以启用“不允许绕过上述设置”。 有关详细信息,请参阅“管理组织的自定义存储库角色”和“关于受保护的分支”。
存储库管理员可以通过要求最后一个推送者以外的其他人批准拉取请求,或通过锁定分支来确保分支的安全性和稳定性。 有关详细信息,请参阅“关于受保护的分支”。
如果有人应在工作流运行之前查看 GitHub Actions 工作流中的代码,则存储库管理员可以先获得对存储库具有写入权限的用户的批准,然后才能从专用分支触发工作流运行。 有关详细信息,请参阅“管理存储库的 GitHub Actions 设置”。
问题
GraphQL API 支持创建和删除分支与问题之间的链接。 有关详细信息,请参阅以下文档。
- “创建分支以处理问题”
- “突变”GraphQL API 文档中的“createLinkedBranch”和“deleteLinkedBranch”
- GraphQL API 文档中的“对象”
版本
用户可以使用 Web UI、REST API 或 GraphQL API 将存储库中的特定版本标记为最新版本。 有关详细信息,请参阅以下文档。
- 管理存储库中的发行版
- REST API 文档中的“版本”
- GraphQL API 文档中的“对象”
集成
用户可以直接在 Slack 或 Microsoft Teams 中接收和处理有关 GitHub Enterprise Server 活动的实时更新,从而节省时间并降低切换上下文的频率。 GitHub 对这些服务的集成现已正式发布。 有关详细信息,请参阅“GitHub 扩展和集成”。
3.8.0: Changes
当站点管理员使用管理 SSH 访问权限运行命令时,现在会记录该命令。 为了帮助 GitHub 支持人员进行故障排除和调试,支持捆绑包包含这些命令的日志。
为了简化企业、组织或用户审核日志中事件的发现,搜索栏现在会显示可用筛选器的列表。
在站点管理员可以使用 GitHub Enterprise Importer CLI、startRepositoryMigration GraphQL API 或启动组织迁移 REST API 从 GitHub Enterprise Server 迁移之前,管理员必须使用管理控制台配置用于存储迁移存档的 Blob 存储提供程序。 支持的服务包括 Amazon S3 和 Azure Blob 存储。 以前,Blob 存储不是必需的,可以选择使用
gh gei
进行配置。 此更改添加了对 Git 源或元数据大于 1 GB 的迁移的支持。为了帮助具有 GitHub Advanced Security 许可证的实例上的用户更好地了解检测到的机密并采取措施,有关第三方 API 密钥的机密扫描警报现在包含指向提供程序文档的链接。 有关详细信息,请参阅“关于机密扫描”。
具有 GitHub Advanced Security 许可证的实例上的用户现在将直接在警报的时间线内看到用户对机密扫描警报执行的操作,包括参与者绕过机密的推送保护时。
具有 GitHub Advanced Security 许可证的实例将定期运行历史扫描,以检测启用了 GitHub Advanced Security 和机密扫描的存储库上新添加的机密类型。 以前,用户需要手动运行历史扫描。
在具有 GitHub Advanced Security 许可证的实例上,为了确保 GitHub Enterprise Server 的未来版本始终可以在 API 或 Web UI 中显示检测到的机密的预览,检测到的机密现在与源代码分开存储。 检测到的机密使用对称加密进行存储。 [更新日期:2023-02-15]
使用专用注册表进行 Dependabot 更新时,GitHub Enterprise Server 的行为更安全。 如果为以下任何生态系统配置了专用注册表,则实例将不再向公共注册表发出任何包请求。
- Bundler
- Docker
- Gradle
- Maven
- npm
- Nuget
- Python
- Yarn
有关详细信息,请参阅“dependabot.yml 文件的配置选项”。
使用自承载 Hex 存储库的 Elixir 开发人员可以在 GitHub Enterprise Server 上为 Dependabot 版本更新配置专用注册表。 有关详细信息,请参阅“dependabot.yml 文件的配置选项”。
Dependabot 警报具有以下可用性改进。
- 在 Dependabot 尝试为更新创建拉取请求后,警报页面会自动刷新。
- 警报更准确地映射到来自 Dependabot 更新的拉取请求。
- 若要改进社区的警报,用户可以直接在 GitHub 咨询数据库中建议对警报的改进。
用户可以更轻松地提及 @dependabot 。 提及用户时,Dependabot 用户帐户现在显示为自动完成建议。
在具有易受攻击依赖项的存储库中,Dependabot 将不再显示黄色横幅。 若要通知参与者易受攻击的依赖项,“安全”选项卡会显示警报计数器。
如果用户在
dependabot.yml
中对具有现有 Dependabot 配置的存储库创建分支,默认情况下,将在分支中禁用 Dependabot 更新。 若要在分支中启用更新,用户必须访问存储库的代码安全性和分析设置。 有关详细信息,请参阅“配置 Dependabot 版本更新”。希望接收 Dependabot 警报的 Webhook 的集成者必须使用新的
dependabot_alert
Webhook。 此 Webhook 将替换repository_vulnerability_alert
Webhook。 有关详细信息,请参阅“Webhook 事件和有效负载”。为了提高通过提交 SHA 引用其他操作的 GitHub Actions 工作流的可读性,操作作者通常会在调用操作的行上编写包含相应语义版本的注释。 为了节省时间,Dependabot 版本更新的拉取请求现在会自动更新这些注释中的语义版本。
使用 Node.js、npm 和 Dependabot 安全更新的 JavaScript 开发人员可以在更新 npm 项目的可传递依赖项时节省时间。
- Dependabot 可以同时更新父依赖项和子依赖项。 以前,当父级需要不兼容的特定版本范围(需要手动升级)时,Dependabot 不会更新可传递依赖项。
- Dependabot 可以创建拉取请求,用于解决对直接依赖项的更新将从树中删除易受攻击的可传递依赖项的警报。
有关详细信息,请参阅“关于 Dependabot 安全更新”。
对于使用 Dependabot 进行 Docker 生态系统中的版本更新的用户,Dependabot 将主动更新 Kubernetes 清单中的 Docker 映像标记。 有关详细信息,请参阅“配置 Dependabot 版本更新”和“dependabot.yml 文件的配置选项”。
为在 GitHub.com 上贡献安全建议的用户提供了许多改进,包括以下更改。
- 为了确保更快地查看,GitHub 会提示用户添加更改原因。
- 为了确保贡献与用户的意图匹配,GitHub 不会对有差异的引用链接重新排序。
GitHub Actions 具有以下可发现性和辅助功能改进。
- 改进了用于搜索工作流和工作流运行的导航体验。
- 添加的结构更好地表示调用方和被调用的可重用工作流之间的层次结构。
- 移动浏览体验更加一致,并支持多个视区大小。
将
GITHUB_TOKEN
用于workflow_dispatch
和repository_dispatch
事件时,GitHub Actions 工作流将不再无限触发。 在此更改之前,由GITHUB_TOKEN
触发的事件不会创建新的工作流运行。 有关详细信息,请参阅“触发工作流”。对于计划运行的 GitHub Actions 工作流,用户将在
github.event
的有效负载中看到有关存储库、组织和企业的其他信息。使用环境保护规则时,GitHub Actions 用户可以更好地了解作业的进度。 每当作业等待环境保护规则时,
workflow_job
Webhook 都支持新waiting
状态。 此外,当作业在其 YAML 定义中引用某个environment
键时,workflow_job
Webhook 有效负载还将包含一个新属性deployment
。deployment
包含有关检查运行创建的部署的元数据。 有关详细信息,请参阅“使用环境进行部署”。组织所有者可以在审核日志事件中找到更有意义的上下文。
business.sso_response
和org.sso_response
事件显示在用于审核日志流式传输的 REST API 和有效负载中。repo.rename
、project.rename
和protected_branch.update_name
事件包括old_name
字段中重命名的这些事件的当前和过去名称。- Dependabot 警报的事件包含
alert_number
、ghsa_id
、dismiss_reason
和dismiss_comment
字段,以及返回警报的链接和准确的时间戳。
用户可以查看包含组织配置文件中组织的所有关注者的列表。
显示在 Web UI 中存档存储库上方的横幅现在包含存储库的存档日期。
由于语法突出显示延迟,拉取请求中的“对话”和“文件”选项卡现在加载速度更快 。
为了在 Web UI 和用户工作站之间提供更一致的体验,并加快检查用户是否可以自动合并拉取请求的过程,GitHub Enterprise Server 现在使用此
merge-ort
策略。 有关详细信息,请参阅 Git 文档中的合并策略。为了改进包含一个提交的拉取请求中初始注释的显示,GitHub Enterprise Server 现在会自动重新设置详细提交消息的格式,以遵守 GitHub 的 Markdown 约定。
在压缩合并拉取请求之前,Web UI 会显示提交作者的电子邮件地址。 以前,仅在与合并提交合并时显示提交作者。
3.8.0: Known issues
在新建的没有任何用户的 GitHub Enterprise Server 实例上,攻击者可以创建第一个管理员用户。
自定义防火墙规则在升级过程中被删除。
在 GitHub Connect 中启用了“用户可以搜索 GitHub.com”时,专用和内部存储库中的问题不包括在 GitHub.com 搜索结果中。
GitHub Packages npm 注册表不再在元数据响应中返回时间值。 这样可以大幅改善性能。 我们继续拥有将时间值作为元数据响应的一部分返回所需的所有数据,并将在以后解决现有性能问题后恢复返回该值。
从不同主机上的备份恢复实例后,需要重新启动操作服务。
在存储库的设置中,启用允许具有读取访问权限的用户创建讨论的选项不会启用此功能。
在配置运行的验证阶段,Notebook 和 Viewscreen 服务可能会出现
No such object
错误。 可以忽略此错误,因为服务仍应正确启动。在某些情况下,将问题转换为讨论时,转换过程可能会挂起。 在这种情况下,企业所有者可以尝试以下故障排除步骤来解决问题。
- 在停滞讨论的 URL 的末尾,记下讨论的编号。
- 在 Web UI 中,浏览到转换停滞的存储库。
- 在 Web UI 的右上角,单击 。
- 在“协作”下,单击“编号讨论”。
- 在列表中,单击步骤 1 中的数字。
- 在“转换”下,单击“排队转换作业”。
- 等待几分钟,然后检查问题的状态。
如果转换仍未完成,请联系 GitHub Enterprise 支持获取帮助。
如果根站点管理员在登录尝试失败后被锁定在管理控制台外,则帐户不会在定义的锁定时间后自动解锁。 对实例具有管理 SSH 访问权限的人员必须使用管理 shell 解锁帐户。 有关详细信息,请参阅“排查对管理控制台的访问问题”。 [更新日期:2023-02-23]
在群集升级到 GitHub Enterprise Server 3.8.0 的过程中,在升级主 MySQL 节点以外的节点之后以及升级主 MySQL 节点之前,运行
ghe-cluster-config-apply
后可能会多次出现以下错误。Error response from daemon: conflict: unable to delete IMAGE_ID (cannot be forced) - image is being used by running container CONTAINER_ID
GitHub 建议等到此问题解决后再升级群集。 GitHub Enterprise Server 即将进行的更新的发行说明中将提供详细信息。
升级到 GitHub Enterprise Server 3.8.0 后,在任何实例节点上通过 SSH 运行的命令将不会记录在
/var/log/ssh-console-audit.log
中。 若要解决此问题,请通过 SSH 连接到受影响的节点,并运行以下命令。source /etc/bash.bashrc
在高可用性配置中的实例上,
git push
操作在以下情况下可能会失败。 [更新日期:2023-03-17]- 在副本节点上创建存储库期间
- 在副本节点上创建存储库失败之后,在自动修复存储库之前
在高可用性配置中的实例上,站点管理员应仅在实例处于维护模式时运行
ghe-repl-start
和ghe-repl-stop
命令。 有关详细信息,请参阅“启用和排定维护模式”和“关于高可用性配置”。 [更新日期:2023-03-17]使用搜索 API 可能会导致对其他接口的后续请求失败。 发生此问题时,受影响的 API 或 Web UI 用户将收到 HTTP 5xx 响应,并将记录此
NoMethodError
异常:NoMethodError (undefined method `starts_with?' for [:ok, "refs/heads/main"]:Array):
在启用了机密扫描的具有 GitHub Advanced Security 许可证的实例上,如果日志占用卷上的所有可用空间,过多地登录
/var/log
可能会导致面向用户的错误并降低系统性能。 为了防止此问题影响用户,请监视实例根卷上的可用空间。 有关详细信息,请参阅“为设备配置机密扫描”和“监视设备”。 如果你怀疑此问题会影响你的实例并且需要帮助,请联系 GitHub 支持部门。 [更新日期:2023-05-03]
3.8.0: Deprecations
管理 SSH 连接禁用了不安全的算法
GitHub 已禁止使用不安全的算法与管理 shell 建立 SSH 连接。
repository_vulnerability_alert webhook 已弃用
对于希望接收 Dependabot 警报活动的 Webhook 的集成者,
dependabot_alert
Webhook 将替换repository_vulnerability_alert
Webhook。 有关详细信息,请参阅“Webhook 事件和有效负载”。
3.8.0: Errata
“加密机密”错误地指示 GitHub Actions 的机密在实例的数据库中加密。 本文已更新,以反映未在实例上加密机密。 若要加密静态机密,必须加密实例的块存储设备。 有关详细信息,请参阅虚拟机监控程序或云服务的文档。 [更新日期:2023-06-01]