はじめに
IBM CloudではIBM Cloud Monitoring with Sysdigの機能の中で「Sysdig Secure on IBM Cloud」が利用でき、コンテナイメージの脆弱性が確認できます。
以下記事ではGUI上からそれらを実施しましたが
今回はCUIでそれらを実施してみました。
環境情報
# docker version Client: Docker Engine - Community Version: 19.03.5 API version: 1.40 Go version: go1.12.12
事前準備
結論から言うと以下のようなワンライナーでイメージをスキャンするので
# docker run --rm quay.io/sysdig/secure-inline-scan:2 xx --sysdig-token xx --sysdig-url https://jp-tok.monitoring.cloud.ibm.com
sysdig-tokenと呼ばれる文字列が必要です。
これはSysdigSecureのダッシュボードの個人設定の"Sysdig Secure API"という箇所に
Sysdig Secure API Token
xxxxx-xx-xx-xx-xx
といった形式で表記されています。
そしてsysdig-urlにはリージョン毎に存在するREST APIのエンドポイントを指定する必要があり、サービスが存在する地域ではないURLを指定すると以下のようなエラーになります。
ERROR: Invalid token for specific Sysdig secure endpoint ... { "message": "Unauthorized" }
CUIからスキャン
サンプルとしてdocker.io/alpine:3.12.1
を指定すると
# docker run --rm quay.io/sysdig/secure-inline-scan:2 docker.io/alpine:3.12.1 --sysdig-token xxxx --sysdig-url https://jp-tok.monitoring.cloud.ibm.com/
以下のような標準出力となり末尾に”Pass”と出ました。
Using imageID as primary identifier Inspecting image from remote repository -- docker.io/alpine:3.12.1 Full image: docker.io/library/alpine Full tag: docker.io/alpine:3.12.1 ... Analyzing image... Analysis complete! Sending analysis result to Secure backend. Size: 82578 bytes Scan Report Last Evaluation: xx Final action: warn Status: pass Evaluation results - warn dockerfile:instruction Dockerfile directive 'HEALTHCHECK' not found, matching condition 'not_exists' check - warn dockerfile:instruction Dockerfile directive 'USER' not found, matching condition 'not_exists' check Vulnerabilities report Vulnerability Severity Package Type Fix version URL - CVE-2021-28831 Medium ssl_client-1.31.1-r19 APKG 1.31.1-r20 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-28831 ... Status is pass View the full result ...
尚、スキャン結果は以下のようにリターンコードから拾えます。
== EXIT CODES ==
0 Scan result "pass"
1 Scan result "fail"
2 Wrong parameters
3 Error during execution
終わりに
単純なスキャンだけなく多岐にわたるオプションが用意されているので気になる方は以下を参照してみてください。
# docker run quay.io/sysdig/secure-inline-scan:2 -h Sysdig Inline Analyzer -- USAGE
イメージ名を与えてあげれば脆弱性スキャンができるので、CICDのような自動化の中に組み込むことも可能なのでオススメです。