(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【IBMCloud】SysdigSecureのイメージスキャンをdocker経由で利用する

スポンサーリンク

はじめに

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のような自動化の中に組み込むことも可能なのでオススメです。