使用 API 来禁用用户的双因子认证
管理员可以使用 API 禁用特定用户的双因子认证。当用户丢失或忘记他们的主令牌生成器的备份代码时,这个功能是非常有用的。
在管理员为该用户禁用双因子认证后,用户可以从头开始设置双因子认证。
审计事件 - 禁用双因子认证
现在,当用户禁用其双因子认证(2FA)时,极狐GitLab 会记录一个审计事件。
这个审计事件可以帮助你确保实例中的所有用户都正确使用 2FA(并识别用户账户的安全性何时被降低),以便你可以调查并采取行动。
流式审计事件 - Git操作
现在你可以通过新的审计事件来监控群组内的 Git 操作,这些操作事件在用户推送或拉取仓库时被记录下来,包含如用户名、时间戳、拉取或推送的项目信息。
这些事件会产生大量的数据,所以它们只能在流式审计事件使用。
流式审计事件 - 项目分叉
现在你可以通过新的审计事件来监控你群组内的项目分叉,每当项目被分叉时都会被记录,包括以下信息:
- 分叉项目的用户名
- 项目分叉的时间
- 被分叉项目的详情
这让你看到项目和源代码被复制到哪里,以及被谁复制,这样你就可以在需要时采取行动。
这些事件有可能产生大量的数据,所以只能在流式审计事件使用。
组级合并请求设置的审计事件
当对群组级合并请求的设置进行更改时,极狐GitLab 会记录为审计事件。这是对项目级审计事件的补充,它记录了对项目中相同设置的更改。具体来说,当以下群组设置被修改时,会创建审计事件:
- 禁止作者审批
- 禁止提交代码的用户进行审批
- 禁止在项目和合并请求中编辑审批规则
- 要求用户密码来审批
- 当代码提交到源分支时,删除所有审批
这些审计事件可以帮助你知道,群组级合并请求设置和默认设置已经正确设置,没有被改变。这一点很重要,因为这些群组级的设置会逐级下传到子项目。对这些变化的管理和可视性将帮助你加强职责分工,并进一步简化审计工作。
更好更快的文件浏览和语法高亮功能
最近几个月,我们做了多项改变来改善浏览软件库和查看源文件的体验。当从一个文件夹移动到另一个文件夹时,我们现在不是重新加载整个页面,而是用一个 VUE 应用程序显示版本库文件和文件夹。我们的版本库树状视图现在更具有性能和稳定性,而且处理文件的速度更快。我们也从服务器端的文件转换转为客户端的语法高亮。现在大文件的渲染时间最多可以提高66%。
极狐GitLab Runner 15.2
这次还发布了极狐 GitLab Runner 15.2! 极狐GitLab Runner 是一个轻量级、高扩展性的 agent,它可以运行你的 CI/CD 任务并将结果发回给 GitLab 实例。极狐GitLab Runner 搭配极狐GitLab CI/CD 协同工作,为极狐GitLab 带来了开源的持续集成服务。
修复了以下 bug:
- 在任务里把 DEBUG 设置为变量会导致失败
- 更新 containerd 版本至 1.4.12
极狐GitLab Runner 所有更新都记录在 CHANGELOG* 中。
*CHANGELOG: https://gitlab.com/gitlab-org/gitlab-runner/blob/15-2-stable/CHANGELOG.md.
程序化删除重复的软件包资产
你可以使用极狐GitLab 软件包仓库来发布和分享项目里的软件包。一个软件包发布的时候,是包含了一些资产的,例如,每次发布一个 Maven 包,它都包括一个 pom 包和 jar 包。有些格式的软件包,如 Maven、NuGet 和通用包,允许你发布重复的包,导致成百上千的重复包。在以前的极狐GitLab 版本中,你只能通过用户界面或 API 来批量删除这些资产。现在你可以使用清理策略来规定重复资产保留的最大数量。例如,如果清理策略规定最多保留五个重复版本,那么在下一次策略运行时,只有五个最新的资产被保留。
包的清理策略的引入有助于减少项目的存储量,减少杂乱无章的内容,让用户界面更容易浏览。
更快的密钥检测
我们优化了极狐GitLab 密钥检测,使用了新技术,在不可匹配的情况下跳过一些费时的操作,从而缩短了扫描时间。分析器现在首先扫描精确的字符串,然后再运行完整的匹配规则。
在我们的测试中,这种优化大大减少了扫描时间,在中等规模的代码库中扫描时间减少了50-75%。它适用于有明确前缀或已知标识符的密钥;例如,极狐GitLab 个人访问令牌默认以 glpat- 开头。
我们已经更新了内置的密钥检测规则,以使用这种更快的方法。如果你添加了自定义规则,你可以在你的自定义 GitLeaks TOML 配置文件中为它们设置一个关键字值来优化它们。在正则表达式模式运行之前,关键字中至少有一个字符串必须匹配。
我们希望在交付这个第一次迭代后,使这个优化在未来更容易应用。
在项目设置中编辑受保护环境的批准数量
以前,要编辑部署到受保护环境所需的批准数量,你必须使用 API,这可能很麻烦。从 15.2 开始,你可以直接在项目设置中编辑所需的批准数量。
群组级的受保护环境设置界面
以前,如果你想配置受保护环境的群组级设置,你必须使用 API。但在这个版本中,可以在用户界面中查看和编辑这些设置。这个功能能更简单地跨项目配置策略,规定哪些用户和群组能有权限部署环境。
获取 KAS 元数据的API
在我们发布了 Kubernetes Agent 之后,我们收到的第一个需求就是希望能用自动化的方式来设置它。在过去的几个月里,已实现了一个 REST API,并扩展了极狐GitLab Terraform Provider,来支持自动化方式管理Kubernetes Agent。目前的版本通过引入 /metadata
REST 端点,即 /version
端点的超集,进一步改善了对代理的管理,以及对极狐GitLab 的总体管理。
这个 /metadata
端点包含了关于当前极狐GitLab 版本的信息、Kubernetes Agent(KAS)是否启用以及在哪里可以访问它。这改进了以前必须在自动化脚本中手动输入 KAS 地址的问题。
Omnibus 改进
极狐GitLab 15.2 包含了 Mattermost 7.0,包括可折叠的回复、语音通话和屏幕共享(测试版)、消息格式工具栏、Playbooks 内置编辑器、使用情况统计,以及在运行中改变触发器和行动的能力。该版本还包括安全更新,建议从早期版本升级。
极狐GitLab chart 改进
当使用pod横向自动扩容来自动扩展极狐GitLab 的 Kubernetes 部署中的 pod 数量时,我们注意到,由于观察到的 CPU 配置文件的尖峰特性,扩展行为可能是不稳定的。为了看到更少的快速扩展事件,我们增加了对 v2beta2 和 v2 的支持,这大大增加了对扩展事件的控制。
在 UI 界面显示验证令牌
极狐GitLab UI 界面现在能显示每个流目的地的验证令牌,来更方便的查看令牌值,辅助你查看日志进行检查,或将其复制到其他将接收流式审计事件数据的工具。
以前,如果你需要得到这个值,你必须使用 API 来列出一个组中的所有审计目的地并找到这个值。这很复杂,而且是一个额外的步骤,所以我们很高兴通过把这个值直接放在用户界面上,使之变得更容易。
改进用户个人贡献的贡献日历
我们修复了一个问题,即个人贡献没有显示在用户的贡献日历图中。现在,当你在个人资料设置中选择在我的个人资料中包括个人贡献时,即使你从项目中删除,个人贡献仍然可见。
流式审计事件 - 创建合并请求
现在,在群组内被创建合并请求时,可以通过审计事件进行监控。审计事件包括以下信息:
- 合并请求作者的用户
- 创建时间
- 新建的合并请求的具体信息
这能帮助查看项目和源代码内的活动,以便及时采取行动。
但这些事件会产生大量的数据,所以它们只能在流式审计事件功能里使用
现在流式审计事件可以添加自定义 HTTP header。这个改进让与第三方系统集成变得更容易,第三方系统的消息要求特定的 header 信息。自定义 header 信息可以用来实现诸如添加验证信息,添加路由信息,或标记事件来自哪个项目。
过去,你必须使用一个代理服务器来添加这些自定义 header 信息到流式审计事件。设置这个代理服务器很耗时,容易出错,而且给你的组织增加了额外的复杂性。直接在极狐GitLab 中设置自定义 header 信息使得与其他工具的集成和自动化变得更加简单,并允许你直接在极狐GitLab 平台上做你需要的事情。
要添加自定义的 HTTP header,要使用我们的 GraphQL APIs 来添加一个新的 header,作为一个键/值对;也可以更新和删除 header。
保存上次使用的 Wiki 编辑器
新的 Wiki 编辑器是在极狐GitLab 14.0 版本中启用的,让用户使用可视化的格式工具来编写 Markdown,提供了实时预览内容的能力。但是,自该功能发布以来,每次开始编辑 Wiki 页面时,都必须手动切换到新的 Wiki 编辑器。
极狐GitLab 15.2 将在 Wiki 中持久保存你最后使用的编辑器,让你在下次编辑页面时,可以直接进入你喜欢的体验,而不必每次都在编辑器之间切换,从而节省时间。
在任务页面上通过状态过滤
当你在排查流水线的故障时,你可能想过滤具有特定状态的任务。以前,这需要查看完整的任务列表或使用极狐GitLab API 在极狐GitLab 之外操作数据。
现在,你可以直接在工作页面上按状态过滤任务,这样你就可以看到项目中所有具有相同状态的任务。
预定义的项目描述 CI/CD 变量
极狐GitLab CI/CD 提供了许多有用的预定义 CI/CD 变量,但没有一个项目描述的变量。在这个版本中,我们现在有了 CI_PROJECT_DESCRIPTION
预定义变量,它使你可以很容易地从 CI/CD 任务中访问项目描述。
支持 Gradle implementation 指令的许可证合规
Gradle 6 引入了一个新的 implementation 指令来定义依赖关系。从Gradle 7 开始,这个新指令是强制的,取代了之前的 compile 指令。极狐 GitLab 15.2 支持检测使用这个新指令引入的依赖。
静态扫描分析器更新
极狐GitLab 静态分析包括许多安全分析器,极狐GitLab 静态分析团队积极管理、维护和更新。以下是15.2版本期间发布的分析器更新。这些更新扩大了覆盖范围、修复bug和做出了改进。
- CodeClimate 分析器更新到0.85.29版本。详见 CHANGELOG
- 增加对 eslint-8 通道的支持
- 在准备步骤中不分析文件或允许 LinkLocal 地址
- 更新 Kics 分析器以更好地处理退出代码。详见 CHANGELOG。
- Kubesec 分析器已更新,包括 Kubesec 2.11.5 和 Helm 3.9.0,并处理了 Helm 输出的问题。详见 CHANGELOG。
- PMD-Apex分析器更新至 6.45.0 版本。详见CHANGELOG。
- Semgrep 分析器引擎更新至 0.98.0 版本。详见 CHANGELOG。
- 提高性能,修复错误,并在其他方面改进扫描引擎。
- 如果你定义了自定义规则,可以绕过基于语言的匹配器(决定是否运行扫描程序)。这使你更容易为 GitLab 管理的规则集中未涵盖的语言定义自定义规则。
- 密钥分析器更新。详见 CHANGELOG。
如果你使用了极狐GitLab 管理的 SAST 模板(SAST.gitlab-ci.yml),你不需要做任何事情来接收这些更新。然而,如果你覆盖或定制自己的 CI/CD 模板,你需要更新你的 CI/CD 配置。
如果要使用分析器的某个特定版本,你可以固定在一个分析器的小版本上,固定到以前的版本可以阻止接收分析器的自动更新,并且需要你在 CI/CD 模板中手动配置到你的分析器版本。
基于部署的层级来获取密钥
密钥可以根据某个环境的部署层级来分配。在这个版本中,我们在JSON令牌(CI_JOB_JWT)中引入了deployment_tier,以便用户可以根据特定的部署层级获取密钥。
升级集群支持的版本,包括Kubernetes 1.23和1.24
如果你使用 Kubernetes,极狐GitLab 希望确保你的集群在升级到最新的 Kubernetes 版本时,能拥有完整的功能。虽然许多用户使用极狐GitLab 来部署 Kubernetes 集群,但还没有对 Kubernetes 1.23 和 1.24 的官方支持。这个版本带来了对这些版本的所有 Kubernetes 相关功能的全面支持。
在提供对 Kubernetes 1.23 和 1.24 版本支持的同时,我们正在改变我们的 Kubernetes 支持政策,使其比过去更具有可预测性。在新的支持政策下,我们计划在每一个 Kubernetes 小版本更新首次发布三个月后支持,我们将支持最新的三个 Kubernetes 小版本。
Geo 支持 BuildKit 缓存镜像
在极狐GitLab 15.2中,Geo 支持 BuildKit 缓存镜像的复制。随着极狐GitLab 15.2 对 BuildKit 缓存镜像格式的支持,以及极狐GitLab 15.1 增加对 OCI 容器镜像的支持,Geo 现在支持更多的容器类型了。
webhook速率限制
现在可以对 SaaS 用户进行 Webhook 的速率限制,以保护极狐GitLab 应用程序的性能和可用性。作为回报,该限制可以保护所有 SaaS 租户的性能。限制适用于每个付费计划和每个 namespace,并基于您订阅的用户数量,每个顶层 namespace 下每分钟 500 到 13,000 次调用。