按照发版惯例,今天GitLab发布了一个新的月度版本14.8,其中包含新的SSH密钥类型、安全批准策略、管道编辑器自动完成、模拟审计事件等等!更多功能请和虫虫一起学习。
GitLab14.8主要功能改进
路线图的其他显示选项(PREMIUM)
在此版本中,为路线图引入了额外的进度跟踪功能。现在可以根据问题计数而不是问题权重查看已完成Epic的百分比。此功能对于使用看板或其他不需要其团队对问题设置权重的方法的组织很有用。
现在还可以自定义要包含在路线图中的里程碑级别,从而可以定制视图以满足受众的需求。
在管道编辑器中自动完成关键字
无论是新手还是更高级的用户,编写有效的GitLabCI/CD管道都可能很困难。语法结构应该是准确的,即使是一个小的拼写错误或配置错误也可能导致管道无效,从而引入更多工作来寻找问题的根源。在这个版本中,在管道编辑器中添加了CI/CD关键字的自动补全功能,这将大大提高在编写和调试管道时的效率。将更有信心,管道将在第一次运行时按照想要的方式运行。
部署频率图的附加数据(ULTIMATE)
在新版本中,将部署数量和部署频率添加到CI/CD分析下显示的DORA指标中:
部署数量显示日期范围内成功部署的数量
部署频率显示成功部署的平均次数。
这些数据以前只出现在价值流分析中。借助这些附加信息,可以更好地了解团队的部署频率,以便更好地进行跟踪。
显示DORA4指标图的平均值和中位数(ULTIMATE)
在新版本中,添加了在DORA4指标中查看平均部署频率和中位提前期的功能。现在可以持续监控DevOps流程,并快速确定实际执行情况与平均或中等速度。
改进gitconfig文件的清理
Gitaly解析.gitconfig在不维护时会变得非常大的文件。大的.gitconfig文件会严重影响短期运行的Git命令的性能。
解决了未按预期正确清理某些配置键的已知问题。
主动删除空配置部分。
结合起来,这些更新将这些短期运行的Git命令的性能提高50%或更多,大大减少了常规Git操作期间的性能。
改进管道索引页面布局
新版本中对管道视图进行了重构,实现快速获取所需的管道信息,包括状态、管道名称、合并请求ID和提交SHA。
在管理区查看只读Runner详细信息
现在可以在管理区查看Runner的详细信息。这个新视图旨在提供有关与GitLab实例关联的每个运行器的最有价值的信息。可以查看上次联系人、Runner版本和分配的项目,并实现分页展示。在新的分页作业选项卡中,还可以查看Runner运行的作业的完整列表,这有助于快速查看、搜索和分析CI/CD作业执行历史记录。
项目的最新发布徽章
新版本中添加了项目徽章,可以直接在项目页面中轻松查看最新版本等信息。
Kubernetes的代理服务器默认启用
在自建实例中使用Kubernetes代理的第一步是启用代理服务器,这是Kubernetes代理的后端服务。在GitLab之前的版本中,需要GitLab管理员手动启用代理服务器。新版本中将默认启用代理服务器,从而简化GitLab管理员的设置。除了默认启用之外,代理服务器还接受各种配置选项以根据需要对其进行自定义。
使用模态邀请成员和组
新版本可以通过模态体验来完成邀请成员或团体参与项目。而无需在表单中完成这些步骤。向模态交互的转变可以实现更轻松地从产品中的任何位置将成员和组添加到项目或组中,并最大限度地减少对工作流程的干扰。
在父组级别删除组
为了在组所有者(在任何安装基础中)和仅存在于自我管理用户的管理员面板中的仅管理员功能之间实现功能对等的初始步骤之一。
组所有者现在可以从父组级别删除组及其子组。之前,组管理员都必须到各个组里去删除,既及时又低效。群组所有者现在可以查看所有群组并从一个地方删除它们。
在项目的存储库中添加默认问题和合并请求模板
除了在项目设置中定义默认问题和合并请求描述模板外,现在可以在.gitlab项目存储库的目录中设置默认模板。Default.md通过在问题或合并请求模板文件夹中创建文件来做到这一点。如果项目设置和存储库中都存在默认模板,则设置中的模板优先。
将CILintAPI与其他分支或标签一起使用
以前,用于验证CI/CD配置的项目CIlintAPI接口只能解析默认分支中存在的配置。在此版本中,向接口添加了一个可选参数res,现在可以检查在其他分支或标记引用中拥有的CI/CD配置。
覆盖引导的模糊测试语料库管理(ULTIMATE)
在之前的GitLab版本中,如果想在覆盖引导的模糊测试中使用种子语料库,需要将文件上传到某个位置并通过COVFUZZ_SEED_CORPUS变量定义语料库的路径。可能在测试中使用的任何语料库的管理都是完全手动的,包括在运行测试后更新语料库。在GitLab14.8中,语料库管理现已集成到安全与合规配置部分。通过将设置COVFUZZ_USE_REGISTRY为"true",将COVFUZZ_GITLAB_TOKEN变量设置为个人访问令牌,并通过COVFUZZ_CORPUS_NAME变量,语料库管理可以很容易地集成到测试工作流程中。当运行覆盖率引导的模糊测试时,语料库文件可以从管道自动添加到注册表。它们还可以使用覆盖引导的模糊测试作业输出的工件自动更新,而不仅仅是手动更新。如果不再需要语料库,可以直接从注册表页面将其删除。注册表中列出的语料库文件也可以下载以供检查或在其他地方使用。当使用种子语料库时,该管理UI对覆盖引导的模糊测试体验进行了重大改进。
为GitLab页面设置自定义速率限制
在页面功能中添加了速率限制功能。到托管页面的无限或不受欢迎的流量(例如拒绝服务攻击)可能会导致意外的可用性问题甚至用户停机。通过此更新,可以针对特定客户端IP地址和特定托管页面域实施速率限制。可以为每个单独配置限制。当启用并且流量超过这些限制时,请求将被报告并被拒绝。
添加到地理站点仪表板的过滤器
Geo站点仪表板允许管理员查看和编辑有关其Geo主站点和辅助站点的详细信息。对于运营多个二级站点的客户,滚动浏览站点列表并确定需要注意的站点可能需要一些时间。添加了按健康状态、站点名称或其URL进行过滤的选项。这样可以更轻松、更快速地在仪表板上找到要查找的内容。
Omnibus套件更新
GitLab14.8统一安装包中,Mattermost升级到了6.3,支持Playbooks翻译和简化的通知等。Boards升级为普遍可用,包括更改通知、人物头像和评论排序顺序。以及安全更新等,建议从早期版本升级。
GitLab14.8保护Consul集群现在更容易了。用户现在可以在Consul节点上配置mTLS和Gossip加密,以保护Consul代理和客户端之间的通信。
GitLab14.8还提供了SUSEEnterpriseLinuxServer(SLES)15SP2的软件包。
GitLab图表改进
GitLab14.8包括对PrometheusHelm图表从11.16.9更新到15.0.4,这将Prometheus2.21.0升级到2.31.1.Prometheus包括各种功能、增强和修复。
安全和合规性
ecdsa-sk和ed-skSSH密钥支持
OpenSSH8.2中添加了对具有新ecdsa-sk和ed-sk密钥类型的FIDO/U2F硬件身份验证器的支持。
GitLab现在支持这些密钥类型,允许用户利用硬件支持的SSH身份验证。
组的用户模拟审计事件(PREMIUM)
GitLab现在在组审核事件页面上提供了用于用户模拟开始和停止的审核事件。这以前仅在GitLabSaaS客户无法使用的页面上可用。这些事件有助于了解管理员是否模拟组中的用户以及管理员作为模拟用户执行的任何操作。可以关联:
用户采取的任何操作。
当模仿发生时。
这可以帮助了解是实际执行某些操作的用户还是冒用操作。审计日志中没有模拟事件也是一种确信给定用户确实执行了给定操作的方法,而不是有人在模拟它们。
安全审批*策(ULTIMATE)
GitLab现在支持灵活的安全批准,以替代已弃用的漏洞检查功能。安全审批与漏洞检查类似,两者都需要对包含安全漏洞的MR进行审批。但是,安全批准通过以下几种方式改善了以前的体验:
用户可以选择允许谁编辑安全审批规则。因此,独立的安全或合规团队可以以防止开发项目维护人员修改规则的方式管理规则。
可以创建多个规则并将其链接在一起,以允许对每种扫描仪类型的不同严重性阈值进行过滤。
可以对安全批准规则的任何所需更改强制执行两步批准过程。
可以将一组安全策略应用于多个开发项目,以便轻松维护单个集中式规则集。
安全批准策略可以与现有的漏洞检查功能一起使用,因为这两个策略是相加的并且不冲突。但是,鼓励用户将其漏洞检查规则迁移到安全审批策略。漏洞检查规则现已弃用,并计划在GitLab15.0中删除。
自建实例的用户需要在使用此功能之前启用功能标志scan_result_policy。导航到安全与合规策略并创建一个新的扫描结果类型策略。
自定义内置SAST和秘密检测规则
现在可以自定义GitLab静态应用程序安全测试(SAST)和秘密检测中包含的预定义规则。对于每条规则,可以更改名称、消息、描述和严重性字段,以帮助DevSecOps团队知道首先要修复哪些漏洞。
这是对现有自定义选项的补充,允许禁用、替换或扩展预定义规则。
自定义反映在所有GitLab层的gl-sast-report.json和gl-secret-detection-report.json工件中。
使用GitLabUltimate,自定义也可用于评估合并请求批准规则并显示在漏洞报告中。
DAST扫描的双向TLS(ULTIMATE)
从GitLab14.8开始,MutualTLS现在可用于DAST扫描。这允许目标应用程序服务器验证请求是否来自已知来源。DAST现在可以扫描使用双向TLS认证的站点。要使用双向TLS,DAST_PKCS12_CERTIFICATE_BASE64必须创建一个名为的掩码变量,并且必须将base64编码的PKCS12证书的值存储在该变量中。此外,DAST_PKCS12_PASSWORD应使用掩码变量名来存储PKCS12证书的密码。请注意,基于浏览器的DAST扫描程序目前尚不支持此功能,该扫描程序仍处于测试阶段。
SAST严重性支持.NET
之前GitLabSAST返回Unknown.NET项目中发现的所有漏洞的严重性。现在.NET结果根据与结果关联的CWE分配了一个严重性值。
严重级别包含在gl-sast-report.json所有GitLab层的工件中。
使用GitLabUltimate,这些新的严重性级别通过要求合并请求的批准和分析整体风险状况,使保护的.NET项目变得更加容易。
出于向后兼容性的原因,在升级到GitLab15.0之前,默认情况下严重性不会出现在结果中。要在此之前接收带有严重性值的.NETSAST结果,需要收到更新.gitlab-ci.yml文件以固定到安全代码扫描分析器的新主要版本v3。
在GitLab15.0中,将推动这个新版本默认运行。
部署审批API(PREMIUM)
新版本中API中引入部署批准。团队可以为特定环境配置多个批准者,并使用新的API端点执行对该环境的部署的批准或拒绝。此功能使团队能够创建工作流,以便在将软件部署到生产或其他受保护环境之前获得适当的批准。
静态分析分析器更新
GitLab静态分析包括GitLab静态分析团队积极管理、维护和更新的许多安全分析器。在14.8版本期间中分析器也进行版本更新:
Bandit分析器更新到版本1.7.2。
NMP配置的新规则;
解决了lpineLinux中的CVE;
ESLint分析器更新到6.2.0eslint-plugin-html版和.7.28.0版eslint-plugin-react。
MobSF分析器更新到版本3.4.6:降低一些现有规则的严重性;为Android加密设置和API调用添加新规则。
Gosec分析器更新到2.9.6版:在某些情况下修复误报。
Semgrep分析器更新到版本0.82.0:性能提高;
为简单定义添加符号传播,x=foo.bar();x.baz()匹配foo.bar().baz();修复各种bug
Kics分析器更新到版本1.5.1:添加和更新规则,修复各种问题;
禁用网络请求以发送崩溃报告并获取修改后的规则描述
Kubesec分析器更新到版本2.11.4。
NodeJS-scan分析器更新到版本0.3.1:升级依赖;修复和更新规则。
更新秘密分析器以修复各种问题和规则。
PMDApex分析器已更新至版本6.42.0。
SpotBugs分析器依赖项已更新。
刺猬还更新了分析器中使用的Go版本,以解决Go最近暴露的安全问题。
如果包含GitLab管理的SAST模板(SAST.gitlab-ci.yml),则无需执行任何操作即可接收这些更新。但是,如果覆盖或使用自定义自己的CI/CD模板,则需要更新的CI/CD配置。
想要保留在任何分析器的特定版本上,可以固定到分析器的次要版本。
按需安全扫描索引视图(ULTIMATE)
在一个页面上查找所有按需DAST和DASTAPI扫描。为按需扫描引入了一个新的索引页面,其中显示了正在进行的扫描、之前运行的扫描、保存的扫描和计划的扫描。在此索引页面中,可以轻松找到特定扫描或重新运行已完成的扫描。在以前版本的GitLab中,要查看正在进行或已完成的按需扫描,需要搜索管道页面以找到正确的管道。保存的按需扫描位于安全与合规配置部分。要查找计划的扫描,需要单独查看每个已保存的扫描以查看其计划。所有这些活动现在都整合到一个页面中,以便更轻松地在CI/CD构建、MR或管道之外运行按需安全测试。
GitlabRunner14.8
同期还发布了GitLabRunner14.8。新增加功能包括:
AppleM1的GitLabRunner
Bug修复:
Kubernetesexecutor配额失败:配额限制错误
每次作业后清理的临时Docker卷
Bug修复
14.8中一些值得注意的错误修复包括:
已删除的软件包版本会阻止发布。
当GitLab问题被禁用时,Jira集成菜单项应该是可见的。
Elasticsearch集成在密码中抛出带有特殊字符的
无法通过Elasticstack集成获取pod日志。
开发人员的下拉菜单中缺少机密Epic。
基于CI/CD隧道的自动部署失败。
从Deploy.latest.gitlab-ci.yml部署无法读取KUBE_CONTEXT变量。
checking当合并请求需要批准时,合并状态会卡住。
合并状态卡住,仅在刷新时更新。
对媒体上传执行授权检查。
解决编辑MR目标分支时的错误。
修复合并请求编辑按钮,按作者的首选语言保留原始语言。
user.admin?GitoverHTTP操作在管理员模式下的问题。
组访问令牌计为许可用户。
由群组机器人创建的管道无法拉取Git存储库。
用户自动完成功能不再使用少于3个字符。
标签在有关标签更改的合并请求系统注释中的链接错误。
PG::UniqueViolation:ERROR:couldnotcreateuniqueindex"finding_link_url_idx”。
复选框隐藏在集群代理详细信息页面安全选项卡上的漏洞报告中。
在离线环境中扫描Maven依赖项时,容器扫描分析器失败。
Geo:checksummable?如果文件不存在,方法将失败。
依赖扫描:sbt项目不应该将自己列为依赖。
许可证合规性:带有类路径异常的GNUGPL2错误地报告为GNUGPL2。
可用性改进
在GitLab14.8中,在问题、项目、里程碑等提供了可用性改进:
默认情况下,按ublished对PackageRegistry进行排序。
单击时触发共享Runner信用卡验证警报。
为无权在管道图上运行手动作业的用户添加指南。
改进MR评论功能的按钮加载状态。
对齐差异扩展页脚按钮。
在管理员用户列表视图中指示锁定的用户。
CI/CD分钟配额图表中的月份顺序不正确。
改进管道订阅用户体验。
运行管道时,管道错误横幅不够具体。
当管道失败或被取消时改进MR小部件中的消息。
功能变更和删除
低于14.0.0的容器扫描架构
变更日期:年05月22日
GitLab15.0将不再支持14.0.0之前的容器扫描报告架构版本。GitLab15.0也不再支持未通过报告中声明的架构版本验证的报告。
通过输出容器扫描安全报告作为管道作业工件与GitLab集成的第三方工具会受到影响。必须确保所有输出报告都符合正确的架构,最低版本为14.0.0。版本较低或未能根据声明的架构版本验证的报告将不会被处理,漏洞发现不会显示在MR、管道或漏洞报告中。
为了帮助过渡,从GitLab14.10开始,不合规的报告将在漏洞报告中显示警告。
14.0.0以下的覆盖引导模糊模式
变更日期:年05月22日
GitLab15.0将不再支持低于14.0.0版本的覆盖率指导的模糊测试报告模式。GitLab15.0也不再支持未通过报告中声明的架构版本验证的报告。
低于14.0.0的DAS架构
变更日期:年05月22日
GitLab15.0将不再支持早于14.0.0的DAST报告架构版本。从GitLab15.0开始,也将不再支持未通过报告中声明的架构版本验证的报告。
低于14.0.0的依赖扫描模式
变更日期:年05月22日
GitLab15.0将不再支持早于14.0.0的依赖扫描报告架构版本。从GitLab15.0开始,也将不再支持未通过报告中声明的架构版本验证的报告。
强制验证安全报告模式
变更日期:年05月22日
GitLab15.0将不再支持早于14.0.0的安全报告模式版本。GitLab15.0也不再支持未通过报告中声明的架构版本验证的报告。
Godep对许可证合规性的支持
变更日期:年05月22日
Golang的Godep依赖管理器在年被弃用,并已被Go模块取代。为了降低维护成本,从14.7开始弃用Godep项目的许可证合规性,并将在GitLab15.0中删除它。
升级更新
Omnibus
通过Omnibus安装的自建实例可直接使用Linux包管理器可以升级。例如对CentOS:
yumupdata/installgitlab-ce
就能自动完成升级:
升级成功后,在GitlabWeb界面的帮助中可以看到目前的版本显示:
Docker
先停止和删除旧的容器:
sudodockerstopgitlab
sudodockerrmgitlab
然后Pull官方最新镜像:
sudodockerpullgitlab/gitlab-ce:latest
重新启动容器(启动参数和以前保持一致)即可,比如:
sudodockerrun--detach\
--hostnamegitlab.example.