尝试通过Azure 切可夫 YAML管道运行IaC (用于IaC验证),用于存储在Azure DevOps版本控制中的ARM模板文件。守则如下:
trigger: none
pool:
vmImage: ubuntu-latest
stages:
- stage: 'runCheckov'
displayName: 'Checkov - Scan ARM files'
jobs:
- job: 'RunCheckov'
displayName: 'Checkov solution'
steps:
- bash: |
docker pull bridgecrew/checkov
workingDirectory: $(System.DefaultWorkingDirectory)
displayName: 'Pull bridgecrew/checkov image'
- bash: |
docker run \
--volume $(pwd):/scripts bridgecrew/checkov \
--directory /scripts \
--output junitxml \
--soft-fail > $(pwd)/CheckovReport.xml
workingDirectory: $(System.DefaultWorkingDirectory)
displayName: 'Run checkov'
- task: PublishTestResults@2
inputs:
testRunTitle: 'Checkov run results'
failTaskOnFailedTests: false
testResultsFormat: 'JUnit'
testResultsFiles: 'CheckovReport.xml'
searchFolder: '$(System.DefaultWorkingDirectory)'
mergeTestResults: false
publishRunAttachments: true
displayName: 'Publish Test results'问题-如何将ARM模板的路径/文件夹更改为扫描。现在,它扫描在我的整个repo1下找到的所有ARM模板,不管我设置了哪个目录值。
此外,如何在PR评审期间扫描提交给自定义分支的PR文件,因此它将触发构建,但是构建将只扫描自定义分支中的那些文件。我知道如何通过DevOps存储库设置来触发构建,但同样,如何确保构建管道使用/扫描特定的PR提交文件,而不是整个repo1 (和master分支)。
发布于 2022-11-23 02:20:54
我建议您使用Docker映像bridgecrew/checkov来设置运行Checkov扫描的集装箱作业。容器作业将将作业的所有任务运行到从此映像启动的Docker容器中。
在容器作业中,可以将源存储库签入容器中,然后使用脚本任务(如Bash任务)运行相关的Checkov CLI来执行文件扫描。在脚本任务上,可以使用'workingDirectory‘选项指定运行命令行的路径/文件夹。通常,命令行只对指定目录及其子目录中的文件起作用。
如果只想扫描作业中特定分支中的文件,则可以将特定分支克隆/签出到容器中作业的工作目录中,然后如前所述,使用相关的Checkov CLI扫描指定目录下的文件。
更新
在管道作业中,您可以尝试调用Azure DevOps REST "提交-获取更改“来获取用于特定提交的所有更改的文件和文件夹。
然后使用参数--directory (-d)或--file (-f)的车臣CLI扫描指定的文件或文件夹。
https://stackoverflow.com/questions/74532617
复制相似问题