devops pipeline-安全自动化扫描测试--尝试

rocl · 2017年12月22日 · 2669 次阅读
本帖已被设为精华帖!

本文重点是:实践[持续交付实践] 安全自动化扫描测试平台实现的技术细节
发现里面有一些细节需要注意,特发此帖予以记录

代码安全检查

  • 需要安装 SonarQube(版本 6.7,安装了 Findbugs 插件)
  • MySQL >=5.6,笔者安装的是 MySQL 5.7 版本
  • Jenkins 需要安装下列插件:
    • SonarQube Scanner for Jenkins
    • Sonar Quality Gates Plugin

注意点:

  • Sonar 需要配置"质量阈"
  • Sonar 需要配置"web 回调接口"
  • 具体 script 和 declarative 类型的 pipeline 代码请参见本文最后



依赖安全检查

  • Jenkins 需要安装以下插件
    • Static Code Analysis Plug-ins
    • OWASP_Dependency_Check

注意点:

  • 关于搭建本地 NVD 镜像,这个是可以做到;如何使用本地镜像是个问题,不知道如何使用
  • Doc 只提到 OWASP_Dependency_Check 客户端可以使用本地镜像

查出的结果如下:

安全自动化

此部分目前暂时没有实现

  • 目前有现成的 security zap for pipeline 插件 (gradle)
  • 且需要有现成的跑 web 自动化的代码

附件

  • pipeline script
node {
    stage('Build') {
        echo 'Building....'
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'global_credentials', url: 'http://***/Test-myown.git']]])
        sh "mvn -DskipTests clean install package sonar:sonar"
        def mvnHome = tool 'M3'
        def gitDefault = tool 'gitDefault'
        def jdkver = tool 'jdk8'
        def mysonar = tool 'SonarQube Scanner 6.7'
        echo "---${mvnHome}/bin/mvn---"
        echo "---${gitDefault}---"
        echo "---${jdkver}---"
        echo "---${mysonar}---"
    }
    stage('SonarQube analysis') {
        echo "starting codeAnalyze with SonarQube......"
        withSonarQubeEnv {
          sh 'mvn -DskipTests clean install package org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar'
        }
    }
    stage('Quality Gate') {
        timeout(3) {
          def qg = waitForQualityGate()
            echo "---before qg:${qg.status}---"
            if (qg.status != 'OK') {
              error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
            }
            echo "---after qg:${qg.status}---"
        }
    }
    stage('Dependency Check') {
        dependencyCheckAnalyzer datadir: '', hintsFile: '', includeCsvReports: false, includeHtmlReports: true, includeJsonReports: false, includeVulnReports: true, isAutoupdateDisabled: false, outdir: '', scanpath: '', skipOnScmChange: false, skipOnUpstreamChange: false, suppressionFile: '', zipExtensions: ''
        dependencyCheckPublisher canComputeNew: false, defaultEncoding: '', failedTotalHigh: '0', healthy: '', pattern: '', unHealthy: ''
        dependencyCheckUpdateOnly()
//        dependencyTrackPublisher()--shibai失败,youchucuo有出错tishi
    }
}
  • pipeline declaractive
node {
  stage('SCM') {
    git credentialsId: 'global_credentials', url: 'http://***/Test-myown.git'
  }
  stage('SonarQube analysis') {
    echo "starting codeAnalyze with SonarQube......"
    withSonarQubeEnv {
      sh 'mvn -DskipTests clean install package org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar'
    }
  }

  stage('Quality Gate') {
    timeout(3) {
      def qg = waitForQualityGate()
        echo "---before qg:${qg.status}---"
        if (qg.status != 'OK') {
          error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
        }
        echo "---after qg:${qg.status}---"
    }
  }


}
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 0 条回复 时间 点赞
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
思寒_seveniruby 将本帖设为了精华贴 12月26日 22:56
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册