如何基于Fortify扫描结果使TFS构建失败

时间:2017-12-21 21:31:28

标签: build fortify tfs2017

从PowerShell查询中,如何从Fortify的.NET代码安全扫描中获取新的关键或高漏洞的数量?该查询不应包括SSC服务器上已记录为&#34的任何发现;不是问题"或者"压制"。

我们有Team Foundation Server 2017u2。作为构建和发布过程的一部分,我们执行HP / Micro Focus Fortify安全扫描并将结果上载到Fortify SSC服务器。只要扫描程序在代码中检测到新的关键或高级发现,我们就会尝试使构建/发布失败。我们使用TFS的Micro Focus Fortify插件配置扫描步骤并上传到SSC:(Fortify TFS plugin)。之后我们添加了PowerShell任务以尝试查询结果并在需要时使构建失败。

我们发现的示例和建议使用FPRUtility来查询从当前扫描生成的.fpr文件。但是,此当前扫描不包括任何先前输入的开发人员记录误报或抑制问题的内容。这导致我们的构建总是失败。

我尝试查看REST API文档但是,虽然Swagger可以轻松查看参数和合同,但我找不到任何好的文档,说明所有不同的控制器是什么或我需要如何编排一个系列调用以获取我想要的数据。

1 个答案:

答案 0 :(得分:1)

我找到了我需要的答案。扫描并上传到SSC完成后,您可以使用以下格式从PowerShell脚本调用问题REST API:

[host:port]/ssc/api/v1/projectVersions/[versionid]/issues?q=[fortify+priority+order]:high+OR+[fortify+priority+order]:critical&qm=issues

因此,在TFS构建步骤中执行此操作的简化PowerShell脚本如下所示:

    $jsonResults  = Invoke-RestMethod -Method Get -Uri "https://{host:port}/ssc/api/v1/projectVersions/{projectVersionNumberHere}/issues?q=[fortify+priority+order]:high+OR+[fortify+priority+order]:critical&qm=issues" 
    $undocumentedFindings = $jsonResults.data | where {$_.primaryTag -eq $null}
    if ($undocumentedFindings.Count -gt 0)
    {
        Write-Error "Fortify detected $undocumentedFindings.Count undocumented critical and high vulnerabilities. These findings must be remediated or documented before the build can continue."
    }