[英]How to fail a TFS build based on Fortify scan results
從PowerShell查詢中,如何從Fortify的.NET代碼安全掃描中獲取新的關鍵或高漏洞的數量? 查詢不應包括SSC服務器上已記錄為“非問題”或“已抑制”的任何發現。
我們有Team Foundation Server 2017u2。 作為構建和發布過程的一部分,我們執行HP / Micro Focus Fortify安全掃描並將結果上載到Fortify SSC服務器。 只要掃描程序在代碼中檢測到新的關鍵或高級發現,我們就會嘗試使構建/發布失敗。 我們使用TFS的Micro Focus Fortify插件配置掃描步驟並上傳到SSC :( Fortify TFS插件 )。 之后我們添加了PowerShell任務以嘗試查詢結果並在需要時使構建失敗。
我們發現的示例和建議使用FPRUtility來查詢從當前掃描生成的.fpr文件。 但是,此當前掃描不包括任何先前輸入的開發人員記錄誤報或抑制問題的內容。 這導致我們的構建總是失敗。
我嘗試查看REST API文檔但是,雖然Swagger可以輕松查看參數和合同,但我找不到任何好的文檔說明所有不同的控制器是什么或我需要如何編排一系列調用來獲取我想要的數據。
我找到了我需要的答案。 掃描並上傳到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."
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.