本記事ではセキュリティスキャナーとして有名なTrivyのコンテナイメージの脆弱性スキャンを実施した結果を New Relic に対して転送する方法をご紹介します。

New Relic の公式ドキュメントにも連携方法を紹介しておりますので以下のドキュメントをベースに手順を紹介致します。
https://docs.newrelic.com/docs/vulnerability-management/integrations/trivy/

STEP1: ライセンスキーの取得

まず New Relic に対してデータを転送するためのライセンスキーの用意をします。
後ほどのステップで利用するものになりますのでその際にこの項目を実施して頂く形でも問題ありません。

こちらにアクセスしていただくことでお持ちの New Relic アカウントの API Key のページへ遷移します。
INGEST Type のキーを選択していただいて値をコピーして控えてください。
 

STEP2: Trivy のインストール

Trivy のインストールをします。
Mac をお使いの方は brew を使うことで簡単に導入することができますのでそちらでお試しください。

Github Pages にも導入手順が紹介されていますのでそちらを参考に導入を進めてください。
https://aquasecurity.github.io/trivy/v0.44/getting-started/installation/

`trivy --version` で情報が出力されれば成功です。

trivy --version                                                                                     
Version: 0.44.0
Vulnerability DB:
  Version: 2
  UpdatedAt: 2023-08-22 00:14:02.104818924 +0000 UTC
  NextUpdate: 2023-08-22 06:14:02.104818524 +0000 UTC
  DownloadedAt: 2023-08-22 01:03:32.972503 +0000 UTC

STEP3: Trivy でコンテナイメージのスキャン

次に Trivy で実際にコンテナのイメージスキャンを実施します。

手元にあるコンテナイメージなど好きなものを使っていただいて問題ありません。
New Relic に転送する際に SARIF フォーマットにしておく必要があるので --format でフォーマットを指定し、 -o を使って結果をファイルに出力します。

例として以下のように Trivy でイメージスキャンを実施します。

 trivy image <image名> --format sarif -o report-sarif.json

STEP4: New Relic へ転送をする

STEP3 で作成したスキャンの結果を New Relic に転送します。

curl コマンドを使用して New Relic の Security API に対して転送を実施します。
ここで STEP1 で取得した API Key を利用しますので取得してない場合はここで STEP1 の手順を実施して API Key を取得しましょう。
リポジトリ名などを指定する箇所がありますが指定した場合、リポジトリ名に対して紐づく脆弱性として New Relic は取り扱うので入れておくとより便利に活用できます。任意ですので入れなくても問題なく利用は可能です。

curl --location --request POST 'https://security-api.newrelic.com/security/v1?repository=<リポジトリ名>' \
  --header 'Api-Key: <STEP1 で取得した API キー>' \
  --header 'Content-Type: application/json' \
  --header 'X-Scanner: Trivy' \
  -d @report-sarif.json

リクエストが問題なく終われば uuid などが表示されたレスポンスが返ってきます。

{
  "success": false,
  "errorMessage": null,
  "uuid": "4740e3c8-dbc4-46e6-a4b2-a7fb6f918d20"
}

実際に New Relic の Vulnerability Management の画面で Trivy のアイコンが表示されているかと思います。

後は同じ様に脆弱性の CVE などを確認して対応などを取り組む形になります。

これで Trivy のデータを New Relic に対して転送する手順は以上となります。
New Relic が提供している他の Vulnerability Management の機能と合わせて利用して頂くことでよりお客様の環境を安心に運用できるようにすることができるかと思います。

また Github Actions などの CI ツールと連携することで CI の中で結果を通知させ即時対応ができるようになるなどの応用も Trivy と連携することで試すことができますので是非お試しください。