构建阶段镜像扫描

CI/CD构建阶段漏洞扫描

在管道的构建阶段使用插件扫描漏洞,例如 JenkinsAzure DevopsGithub Actiongitlab、Bamboo和 CircleCI,或使用REST API。SUSE® Security支持两种类型的构建阶段扫描:注册表扫描和本地扫描。对于注册表扫描,SUSE® Security控制器和扫描器必须能够连接到注册表以拉取镜像。

要触发构建阶段扫描,插件(例如Jenkins)必须能够连接到控制器或Allinone。注意:插件调用扫描器的默认REST API端口为10443。此端口必须由Allinone或控制器通过Kubernetes中的服务,或者通过Docker run或compose文件中的端口映射(例如 - 10443:10443)暴露。

确保已部署并正确配置SUSE® Security扫描器容器以连接到Allinone或控制器。在4.0及更高版本中,neuvector/scanner容器必须与allinone或控制器分开部署,并包含在示例部署yaml文件中。

您可以从Jenkins插件管理器下载插件。其他插件可以通过构建工具的目录访问,或在 SUSE® Security github页面上找到。Bamboo扫描器可在 https://github.com/neuvector/bamboo-plugin/releases/tag/1.0.1.获取,CircleCI ORB可在 https://github.com/neuvector/circleci-orb和CircleCI ORB目录中获取。

本地构建阶段扫描

对于本地扫描,SUSE® Security扫描器将尝试在本地主机(或通过远程主机docker命令可达的主机)上扫描镜像。

对于基于Kubernetes或OpenShift的本地扫描,请删除示例扫描器部署yaml文件中注释掉的部分,如部署SUSE® Security部分所示。注释掉的部分如下:

          env:
# Commented out sections are required only for local build-phase scanning
#            - name: SCANNER_DOCKER_URL
#              value: tcp://192.168.1.10:2376
            - name: CLUSTER_JOIN_ADDR
              value: neuvector-svc-controller.neuvector
            - name: CLUSTER_ADVERTISED_ADDR
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: CLUSTER_BIND_ADDR
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
#          volumeMounts:
#            - mountPath: /var/run/docker.sock
#              name: docker-sock
#              readOnly: true
#      volumes:
#        - name: docker-sock
#          hostPath:
#            path: /var/run/docker.sock
      restartPolicy: Always

对于Docker原生本地扫描,请按照Docker生产部署部分中的Docker扫描器部署说明进行操作。

本地构建阶段扫描 - 仅扫描器(不需要控制器)

SUSE® Security支持本地镜像扫描的独立扫描器部署(不需要控制器)。某些插件,例如CircleCI ORB,具有在构建作业需要镜像扫描时动态部署扫描器的选项,然后在结果通过ORB发送回时移除扫描器。如果支持,这些动态扫描器部署会通过插件自动调用。

有关独立扫描器的更多详细信息,请参见扫描器部分