最近,我在使用Trivy实现Azure ACR存储库中的图像扫描管道时,遇到了一些问题。
我创建了与ACR的服务连接,并尝试了命令行taks:
steps:
- task: Docker@2
inputs:
containerRegistry: "CompanyACR"
command: "login"
- task: CmdLine@2
displayName: Trivy Image Scan
inputs:
script: |
echo "##[group] Image Vulnerability Scan (LOW,MEDIUM)"
docker run \
--rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $HOME/.cache/trivy:/root/.cache/ \
-v $(Build.SourcesDirectory)/templates/junit.tpl:/root/junit.tpl \
-v $PWD:/work/ \
--env GITHUB_TOKEN \
aquasec/trivy \
--light \
--no-progress \
--severity LOW,MEDIUM \
--ignore-unfixed \
--format template \
--template "@/root/junit.tpl" \
-o /work/junit-report-low-med.xml \
$(imageName):$(tag)
echo "##[endgroup]"
echo "##[group] Image Vulnerability Scan (HIGH,CRITICAL)"
docker run \
--rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $HOME/.cache/trivy:/root/.cache/ \
-v $(Build.SourcesDirectory)/templates/junit.tpl:/root/junit.tpl \
-v $PWD:/work/ \
--env GITHUB_TOKEN \
aquasec/trivy \
--light \
--no-progress \
--severity HIGH,CRITICAL \
--ignore-unfixed \
--format template \
--template "@/root/junit.tpl" \
-o /work/junit-report-high-crit.xml \
$(imageName):$(tag)
echo "##[endgroup]"我发现了以下错误:
2021-07-01T15:59:24.614Z致命扫描错误:无法初始化一个扫描器:无法初始化一个码头扫描仪:三个错误发生了:*无法检查图像(/azure-表决:V1):错误:没有这样的图像:/azure-投票:V1*无法初始化Podman客户端:没有找到podman套接字: stat /podman.sock:没有这样的文件或目录* GET https:///oauth2/token?scope=repository%3Aazure-vote%3Apull&service=:未经授权:身份验证,访问https://aka.ms/acr/authorization获取更多信息。
我可以在不登录的情况下复制从az运行的类似错误。我也尝试过Docker任务,但结果是一样的:
steps:
- task: Docker@2
inputs:
containerRegistry: "CompanyACR"
command: "login"
- task: Docker@2
inputs:
containerRegistry: 'CompanyACR'
repository: $(imageName)
tags: $(tag)
command: 'run'
arguments: >
--rm
-v /var/run/docker.sock:/var/run/docker.sock
-v "/home/vsts/.cache/trivy:/root/.cache/"
-v $(Build.SourcesDirectory)/templates/junit.tpl:/root/junit.tpl
-v /home/vsts/work/1/s:/work/
aquasec/trivy
--light
--no-progress
--severity LOW,MEDIUM
--ignore-unfixed
--format template
--template "@/root/junit.tpl"
-o /work/junit-report-low-med.xml
$(imageName):$(tag)我假设如果至少使用了,那么至少Docker运行任务应该可以工作。知道我为什么会收到身份验证错误,以及如何使它正常工作。
没有码头的标准配置工作正常:
steps:
- script: |
sudo apt-get install rpm
wget https://github.com/aquasecurity/trivy/releases/download/v$(trivyVersion)/trivy_$(trivyVersion)_Linux-64bit.deb
sudo dpkg -i trivy_$(trivyVersion)_Linux-64bit.deb
trivy -v
displayName: 'Download and install Trivy'
- task: Docker@2
inputs:
containerRegistry: 'CompanyACR'
command: 'login'
- task: CmdLine@2
displayName: "Run trivy scan"
inputs:
script: |
- task: CmdLine@2
displayName: "Run trivy scan"
inputs:
script: |
trivy image --severity LOW,MEDIUM --format template --template "@templates/junit.tpl" -o junit-report-low-med.xml $(imageName):$(tag)
trivy image --severity HIGH,CRITICAL --format template --template "@templates/junit.tpl" -o junit-report-high-crit.xml $(imageName):$(tag) 您可能会问我为什么要问什么时候有可行的解决方案,只是出于好奇,它为什么不起作用,以及理解docker容器中的身份验证。谢谢你对如何进一步调查.
发布于 2022-03-10 07:41:49
我有一个类似的问题,这是由缺少ACR注册表前缀引起的,我认为这是不需要的,因为映像是在同一个CI管道上本地构建的。无论如何,我建议您在图像名称中添加Azure容器注册表前缀,即‘myRegiy.azu瑞. to /azure-投票:v1’。
https://stackoverflow.com/questions/68214640
复制相似问题