trivy@脆弱性診断¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. trivyの仕組み¶
検出項目¶
アプリのパッケージ、IaC (Kubernetes、Terraform、Dockerfile) 、イメージ (コンテナイメージ、マシンイメージ) で報告されたCVEに基づいて、ファイルの実装方法に起因する脆弱性を検証する。
Regoでカスタムポリシーを実装できる。
02. セットアップ¶
インストール¶
▼ バイナリとして¶
$ brew install trivy
▼ コンテナとして¶
$ docker run aquasec/trivy
▼ チャートとして¶
チャートリポジトリからチャートをインストールし、Kubernetesリソースを作成する。
$ helm repo add <チャートリポジトリ名> https://aquasecurity.github.io/helm-charts/
$ helm repo update
$ kubectl create namespace trivy
$ helm install <Helmリリース名> <チャートリポジトリ名>/trivy-operator -n trivy
03. 設定ファイル¶
.trivyignore
ファイル¶
検証したくないCVEの項目を設定する。
$ cat .trivyignore.yaml
vulnerabilities:
- id: CVE-2022-40897
...
04. trivyコマンド¶
config¶
▼ configとは¶
▼ --debug¶
デバッグモードを有効化する。
$ trivy config --debug <IaCファイル>
2023-08-02T04:52:32.908Z DEBUG Severities: ["HIGH" "CRITICAL"]
2023-08-02T04:52:32.912Z DEBUG cache dir: /root/.cache/trivy
2023-08-02T04:52:32.912Z INFO Misconfiguration scanning is enabled
2023-08-02T04:52:32.912Z DEBUG Failed to open the policy metadata: open /root/.cache/trivy/policy/metadata.json: no such file or directory
2023-08-02T04:52:32.912Z INFO Need to update the built-in policies
2023-08-02T04:52:32.912Z INFO Downloading the built-in policies...
2023-08-02T04:52:32.912Z DEBUG Using URL: ghcr.io/aquasecurity/defsec:0 to load policy bundle
41.66 KiB / 41.66 KiB [-----------------------------------------------------------] 100.00% ? p/s 0s2023-08-02T04:52:33.743Z DEBUG Digest of the built-in policies: sha256:*****
2023-08-02T04:52:33.743Z DEBUG Policies successfully loaded from disk
2023-08-02T04:52:33.776Z DEBUG Walk the file tree rooted at '<IaCファイル>' in parallel
2023-08-02T04:52:33.776Z DEBUG Scanning Kubernetes files for misconfigurations...
2023-08-02T04:52:36.173Z DEBUG Scanning Helm files for misconfigurations...
2023-08-02T04:52:36.192Z DEBUG OS is not detected.
2023-08-02T04:52:36.192Z INFO Detected config files: 1
2023-08-02T04:52:36.192Z DEBUG Scanned config file: <IaCファイル>
▼ --exit-code¶
脆弱性が検出された時の終了コードを設定する。
デフォルトでは、いずれの結果でも終了コードが0
になる。
$ trivy config --exit-code 1 <IaCファイル>
マニフェスト管理ツール (Helm、Kustomize) の作成したマニフェストファイルを渡しても良い。
$ helm template . -f foo-values.yaml -f foo-secrets.yaml > manifest.yaml
$ trivy config --exit-code 1 manifest.yaml
▼ --include-non-failures¶
もし解析結果に何も問題がなければ、成功したことを表示できるようにする。
デフォルトであると、成功が表示されない。
$ trivy config --include-non-failures <IaCファイル>
▼ --quiet¶
処理中のプログレスバー処理ログの両方を非表示にする。
# 非表示の場合
$ trivy config --quiet <IaCファイル>
# 表示する場合
$ trivy config <IaCファイル>
2023-08-02T04:50:04.261Z INFO Misconfiguration scanning is enabled
2023-08-02T04:50:04.261Z INFO Need to update the built-in policies
2023-08-02T04:50:04.261Z INFO Downloading the built-in policies...
41.66 KiB / 41.66 KiB [-----------------------------------------------------------] 100.00% ? p/s 0s
2023-08-02T04:50:08.303Z INFO Detected config files: 1
▼ --severity¶
検出する下限の重要度レベル (UNKNOWN、LOW、MEDIUM、HIGH、CRITICAL) を設定する。
$ trivy config --severity HIGH,CRITICAL <IaCファイル>