基础设施即代码 (IaC) 扫描

引入于 14.5 版本。

基础架构即代码 (IaC) 扫描会扫描您的 IaC 配置文件中的已知漏洞。

目前,IaC 扫描支持 Terraform、Ansible、AWS CloudFormation 和 Kubernetes 的配置文件。

要求

IaC 扫描在 test 阶段运行,默认情况下可用。如果在 .gitlab-ci.yml 文件中重新定义阶段,则需要 test 阶段。

要运行 IaC 扫描作业,默认情况下,您需要带有 dockerkubernetes 执行器。 如果您在 JihuLab.com 上使用共享 runner,则默认启用此功能。

caution我们的 IaC 扫描作业需要 Linux/amd64 容器类型。尚不支持 Windows 容器。
caution如果您使用自己的 runner,请确保安装的 Docker 版本不是 19.03.0。有关详细信息,请参阅故障排除信息

支持的语言和框架

极狐GitLab IaC 扫描支持多种 IaC 配置文件。我们的 IaC 安全扫描器还具有自动语言检测功能,甚至适用于混合语言项目。如果在项目源代码中检测到任何受支持的配置文件,我们会自动运行相应的 IaC 分析器。

配置文件类型 扫描工具 引入的版本
Ansible KICS 14.5
AWS CloudFormation KICS 14.5
Azure Resource Manager 1 KICS 14.5
Dockerfile KICS 14.5
Google Deployment Manager KICS 14.5
Kubernetes KICS 14.5
OpenAPI KICS 14.5
Terraform 2 KICS 14.5
  1. IaC 扫描可以分析 JSON 格式的 Azure 资源管理器模板。如果您使用 Bicep 语言编写模板,则必须使用 bicep CLI,在极狐GitLab IaC 扫描可以分析它们之前将您的 Bicep 文件转换为 JSON。
  2. 自定义镜像库中的 Terraform 模块不会被扫描来查找漏洞。

支持的发行版

极狐GitLab 扫描器提供了一个基本的 alpine 镜像,用于大小和可维护性。

FIPS-enabled 镜像

引入于 14.10 版本。

极狐GitLab 还提供 FIPS-enabled 的 Red Hat UBI 版本的镜像。因此,您可以用启用 FIPS 的镜像替换标准镜像。要配置镜像,请将 SAST_IMAGE_SUFFIX 设置为 -fips 或修改标准标签加上 -fips 扩展名。

variables:
  SAST_IMAGE_SUFFIX: '-fips'

include:
  - template: Jobs/SAST-IaC.gitlab-ci.yml

每个级别的功能摘要

不同的产品级别提供不同的功能,如下表所示:

兼容性 免费版和专业版 旗舰版
配置 IaC 扫描器
下载 JSON 报告
在合并请求部件中查看新发现
管理漏洞
访问安全仪表盘

配置

要为项目配置 IaC 扫描,您可以:

手动配置 IaC 扫描

要启用 IaC 扫描,您必须包含作为极狐GitLab 安装的一部分提供的 SAST-IaC.latest.gitlab-ci.yml 模板。以下是如何包含它的示例:

include:
  - template: Jobs/SAST-IaC.gitlab-ci.yml

包含的模板会在您的 CI/CD 流水线中创建 IaC 扫描作业,并扫描您项目的配置文件中可能存在的漏洞。

结果保存为 SAST 报告产物,您可以下载和分析。

通过自动合并请求启用 IaC 扫描

要在项目中启用 IaC 扫描,您可以创建合并请求:

  1. 在顶部栏上,选择 菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 安全与合规 > 配置
  3. 基础设施即代码 (IaC) 扫描 行中,选择 使用合并请求进行配置
  4. 查看并合并合并请求,来启用 IaC 扫描。

流水线现在包括 IaC 作业。

报告 JSON 格式

IaC 工具以现有 SAST 报告格式发出 JSON 报告文件。

JSON 报告文件可以从 CI 流水线页面或合并请求上的流水线选项卡,通过 artifacts:paths 设置下载到 gl-sast-report.json。有关更多信息,请参阅下载产物

故障排除

IaC debug 日志

为了帮助对 IaC 作业进行故障排除,您可以通过使用设置为 debug 的全局 CI/CD 变量来增加安全扫描程序日志详细程度

variables:
  SECURE_LOG_LEVEL: "debug"

IaC 扫描发现显示 No longer detected

如果先前检测到的发现,意外显示为 No longer detected,则可能是由于扫描器更新所致。更新可以禁用被发现无效或误报的规则,并将结果标记为 No longer detected

  • 在 15.3 版本,KICS SAST IaC 扫描器中的 secret 检测已禁用,因此“密码和 Secrets” 系列中的 IaC 发现显示为 No longer detected