脆弱性スキャンツールTrivy入門:開発者のためのセキュリティガイド
これから君たちに、素晴らしい才能を持つ役者を紹介する。その名はTrivyだ。 こいつは、映画のセットで言うところの、「セキュリティ監査の鬼」だ。 君たちが作った最高の作品(コードやコンテナ)に潜む、見えない危険を徹底的に見つけ出すんだ。 ただ見つけるだけじゃない。その危険がどこにあるのか、どうすれば直せるのか、的確に教えてくれる。 君たちの作品を、より安全に、より完璧なものにするために、こいつの演技指導は絶対に必要だ!
監督として、君たちには最高の作品を作ってほしい。でも、どんなに素晴らしいストーリー(機能)でも、作品に穴(脆弱性)があったら、観客(ユーザー)は安心して観てくれない。Trivyは、その穴を見つけるスペシャリストだ。
コンテナの危険な演技指導
君たちが作ったDockerイメージに、古いライブラリや脆弱なコンポーネントが紛れ込んでいないか、撮影前に徹底的にチェックする。
「おい、そのライブラリ、過去に問題起こしただろ!もっと新しいのにしろ!」と厳しく指導してくれる。
Kubernetesの安全な舞台設定
KubernetesのYAMLファイルに、設定ミスはないか?特権的なコンテナが動いていないか?そんな舞台の危険な裏側まで見抜く。
「その設定じゃ、セキュリティリスクが高すぎる!もっと安全な設定に変更しろ!」と的確に指示してくれる。
ソースコードの秘密の暴露
作品の脚本(ソースコード)の中に、秘密の言葉(APIキーやパスワード)をうっかり書き込んでいないか、探してくれる。
「おい、そんな大事なセリフ(秘密情報)を脚本に直接書くな!別の方法で管理しろ!」と、君の不用意な行動を叱ってくれる。
SBOM(部品表)の作成
作品に使われているすべての部品(ライブラリ、パッケージ)をリストアップしてくれる。
「この作品、何でできてるんだ?その部品、どこから持ってきたんだ?」という質問に、即座に答えられるようにしてくれる。
導入は簡単だ。まるで、新しい役者をキャスティングするのと同じくらいシンプルだ。
手軽に試すなら、Dockerイメージを使うのが一番だ。追加のインストールは不要だ。 コマンドラインで、君が作ったコンテナをTrivyにチェックさせるんだ。
# Docker Hubから最新のTrivyイメージをダウンロード
docker pull aquasec/trivy
# 脆弱性スキャン
# ここで'your_image_name'は、君が作ったDockerイメージ名に置き換えるんだ
docker run --rm aquasec/trivy your_image_name:latest
もっと本格的にTrivyを使いこなしたいなら、直接インストールしよう。 君の演技指導ツールボックスに加えるんだ。
# Homebrewでインストール
brew install trivy
# バイナリを直接ダウンロード(Linuxの場合)
# curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
さあ、本番だ。実際にTrivyに演技指導をしてもらおう。
君が作ったmyapp:v1というイメージを、Trivyにチェックさせる。
「おい、もっといい演技ができるはずだ!」というメッセージを期待しよう。
# コンテナイメージの脆弱性スキャン
trivy image myapp:v1
!(https://storage.googleapis.com/gcp-image-cache/trivy_image_scan_output.png)
君が作ったdeployment.yamlファイル。この舞台設定に穴がないか、チェックしてもらう。
「この舞台設定じゃ、主演が危険だぞ!」という警告が出るかもしれない。
# Kubernetesの設定スキャン
trivy k8s --report all --report-format json --timeout 30m --ignore-unfixed-vulnerabilities
君が書いたGoのソースコード。使っているライブラリに古いものがないか、Trivyに確認させよう。 「このセリフ、古すぎる!もっと新しい表現にしろ!」という助言をもらおう。
# 現在のディレクトリのgo.modをスキャン
trivy fs .