2017-12-21 45 views
1

PowerShell 쿼리에서 .NET 코드의 Fortify 보안 검사에서 새 중요 또는 높은 취약점 수를 얻으려면 어떻게해야합니까? 이 쿼리에는 SSC 서버에 이미 "문제가 아닌"또는 "억제 된"것으로 문서화 된 결과가 포함되어서는 안됩니다.Fortify 검사 결과를 기반으로 TFS 빌드를 실패시키는 방법

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

내가 필요한 답변을 찾았습니다. 스캔 후와 SSC가 완료에,이 형식으로 PowerShell 스크립트에서 문제를 REST API를 호출 업로드 :

$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." 
    } 
:

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

그래서 간단한 PowerShell 스크립트가 TFS 구축 단계에서이 작업을 수행하는 것은 같다

+0

지금 확인해야합니다 :) –

+0

알았습니다! 감사! – pwil301