デビルス+ACR+トリヴィ
7756 ワード
挨拶私の仲間の技術擁護者と専門家.
この記事では、Aquure Devopsパイプラインを使用してAquasec TrivyとAzureコンテナレジストリでDocker画像をスキャンする方法を示します
要件 Azureコンテナレジストリ Azureストレージアカウント Azureリソースマネージャサービス接続 Dockerレジストリ( Azureコンテナレジストリ)サービス接続 Dockerfile サンプルHTMLファイル Azure devopsパイプライン( YAML ) トリヴィはファイルを無視します
パイプラインはどうしますか?
#
パイプラインタスク
1 .
をビルドし、イメージをACRでプッシュ
2 .
アクアシートリヴィのダウンロードとインストール
3 .
トリビュートスキャンを実行し、スキャン結果をコピーする
4 .
工芸品を発行する
5 .
発表された成果物をダウンロードしてください
6 .
日付タイムスタンプディレクトリでBlobストレージコンテナにAquaSecトリヴィスキャンレポートをコピーする
trivyはなぜファイルを無視するのですか?
画像のスキャン後、低、中、高、重要な脆弱性を識別します.CVE(一般的な脆弱性と露出)は、レポートに記載されています.いくつかの理由のために、アプリケーションチームは、リスクを受け入れて、スキャンレポートから低いと媒体の脆弱点をスキップしたいと思います.ファイルをスキャンして再度パイプラインを実行します.リストされたCvesはもはやスキャンレポートにありません.
コードリポジトリ
以下にDockerファイルの内容を示します.
アーティファクト掲載
日付時刻スタンプディレクトリの下に保存コンテナ内に格納されたイメージスキャンレポート
どのようにイメージのスキャンレポートのようになります
高および重大な脆弱性イメージスキャンレポート:
低および中の脆弱性イメージスキャン報告:-
注意-重大度媒体を持つ2つのCvesを見る唯一の理由は、彼らがコメントアウトされているからです.trivyignore file
この記事では、Aquure Devopsパイプラインを使用してAquasec TrivyとAzureコンテナレジストリでDocker画像をスキャンする方法を示します
要件
パイプラインはどうしますか?
#
パイプラインタスク
1 .
をビルドし、イメージをACRでプッシュ
2 .
アクアシートリヴィのダウンロードとインストール
3 .
トリビュートスキャンを実行し、スキャン結果をコピーする
4 .
工芸品を発行する
5 .
発表された成果物をダウンロードしてください
6 .
日付タイムスタンプディレクトリでBlobストレージコンテナにAquaSecトリヴィスキャンレポートをコピーする
trivyはなぜファイルを無視するのですか?
画像のスキャン後、低、中、高、重要な脆弱性を識別します.CVE(一般的な脆弱性と露出)は、レポートに記載されています.いくつかの理由のために、アプリケーションチームは、リスクを受け入れて、スキャンレポートから低いと媒体の脆弱点をスキップしたいと思います.ファイルをスキャンして再度パイプラインを実行します.リストされたCvesはもはやスキャンレポートにありません.
コードリポジトリ
アーリンダム0310018 / トリプル
以下にDockerファイルの内容を示します.
FROM nginx:1.15.9-alpine
COPY . /usr/share/nginx/html
以下にHTMLファイルの内容を示します.<html>
<head>
<title>TEST - ARINDAM MITRA</title>
</head>
</style>
<body>
<h1 style="font-size:50px; color:#000000; text-align: center">TEST - ARINDAM MITRA</h1>
</body>
</html>
以下はYAMLファイルの内容です.trigger:
none
resources:
- repo: self
###############################################
# All Declared Variables are listed below:-
###############################################
variables:
dockerRegistryServiceConnection: '52409f6c-7855-4be2-a142-7192521b3e3f'
imageRepository: 'amimagescantrivy'
containerRegistry: 'ampocapplacr.azurecr.io'
storageaccount: 'am4prodvs4core4shell'
resourcegroup: 'Demo-Blog-RG'
sacontainername: 'trivy-scan-reports'
serviceconn: 'amcloud-cicd-service-connection'
dockerfilePath: '$(Build.SourcesDirectory)/ACR+Trivy/Dockerfile'
target: $(build.artifactstagingdirectory)
artifact: AM
tag: '$(Build.BuildId)'
vmImageName: 'ubuntu-latest'
stages:
- stage: BUILD
displayName: Build and Push Stage
jobs:
- job: BUILD_JOB
displayName: BUILD IMAGE
pool:
vmImage: $(vmImageName)
steps:
#####################################
# Build and Push the Image to ACR:-
#####################################
- task: Docker@2
displayName: BUILD AND PUSH IMAGE TO ACR
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
#######################################
# Download and Install Aquasec Trivy:-
#######################################
- task: CmdLine@2
displayName: DOWNLOAD AND INSTALL AQUASEC TRIVY
inputs:
script: |
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
trivy -v
pwd
##################################################################################
# Execute Trivy Scan and Copy the Scan Results in Artifacts Staging Directory:-
##################################################################################
- task: CmdLine@2
displayName: RUN AQUASEC TRIVY SCAN AND COPY TO ARTIFACTS STAGING DIRECTORY
inputs:
script: |
trivy image --exit-code 0 --severity LOW,MEDIUM $(containerRegistry)/$(imageRepository):$(tag) > low-med.txt
trivy image --exit-code 1 --severity HIGH,CRITICAL $(containerRegistry)/$(imageRepository):$(tag) > high-critical.txt
ls -l
cp -rvf *.txt $(target)
##########################
# Publish the Artifacts:-
##########################
- task: PublishBuildArtifacts@1
displayName: PUBLISH ARTIFACTS
inputs:
targetPath: '$(target)'
artifactName: '$(artifact)'
######################################
# Download the Published Artifacts:-
######################################
- task: DownloadBuildArtifacts@1
displayName: DOWNLOAD ARTIFACTS
inputs:
buildType: 'current'
downloadType: 'single'
downloadPath: '$(System.ArtifactsDirectory)'
#########################################################
# The Below Code Snippet did not work because it is
# only supported by "Windows" Build Agent
#########################################################
# - task: AzureFileCopy@4
# displayName: COPY AQUASEC TRIVY SCAN REPORTS TO BLOB STORAGE
# inputs:
# SourcePath: '$(System.ArtifactsDirectory)'
# azureSubscription: 'amcloud-cicd-service-connection'
# Destination: 'AzureBlob'
# storage: '$(storageaccount)'
# ContainerName: '$(sacontainername)/$(Date)'
###################################################################################
# Cmd in Line 118 - It works on Linux Build Agent because of the Date Format
# Cmd in Line 119 - It works on Windows Build Agent because of the Date Format
###################################################################################
- task: AzureCLI@1
displayName: COPY AQUASEC TRIVY SCAN REPORTS TO BLOB STORAGE
inputs:
azureSubscription: '$(serviceconn)'
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az storage blob upload-batch -d $(sacontainername)/$(date "+%d-%m-%Y_%H-%M-%S") --account-name $(storageaccount) --account-key $(az storage account keys list -g $(resourcegroup) -n $(storageaccount) --query [0].value -o tsv) -s $(System.ArtifactsDirectory)/AM
# az storage blob upload-batch -d trivy-scan-reports/$(Get-Date -Format dd-MM-yyyy_HH-mm) --account-name $(storageaccount) --account-key $(az storage account keys list -g $(resourcegroup) -n $(storageaccount) --query [0].value -o tsv) -s $(System.ArtifactsDirectory)/AM
以下の内容は以下のように無視されます.# All LOW and MEDIUM Vulnerabilities has been ignored (Except 2)!!!
#CVE-2018-5711
#CVE-2018-14048
CVE-2018-14498
CVE-2019-1547
CVE-2019-1549
CVE-2019-1551
CVE-2019-1563
CVE-2019-7317
CVE-2019-11038
CVE-2019-12904
CVE-2019-13627
CVE-2020-1971
CVE-2020-14155
CVE-2020-15999
CVE-2020-24977
CVE-2020-28928
CVE-2021-3449
CVE-2021-23841
CVE-2021-23839
パイプラインの結果アーティファクト掲載
日付時刻スタンプディレクトリの下に保存コンテナ内に格納されたイメージスキャンレポート
どのようにイメージのスキャンレポートのようになります
高および重大な脆弱性イメージスキャンレポート:
低および中の脆弱性イメージスキャン報告:-
注意-重大度媒体を持つ2つのCvesを見る唯一の理由は、彼らがコメントアウトされているからです.trivyignore file
Reference
この問題について(デビルス+ACR+トリヴィ), 我々は、より多くの情報をここで見つけました https://dev.to/arindam0310018/devops-acr-trivy-1o05テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol