1
1

[Terraform] Trivyでセキュリティスキャンをしよう!

Last updated at Posted at 2023-09-24

はじめに

今回はTrivyをterraformのCIツールとして導入します。Trivyはセキュリティスキャンツールです。
前回の記事tfsecを紹介させていただきましたが、そのリポジトリ内ではこのような表記があります。

Going forward we want to encourage the tfsec community to transition over to Trivy. Moving to Trivy gives you the same excellent Terraform scanning engine, with some extra benefits:

docs/index.md

翻訳

tfsecはTrivyへの移行を推奨しています。
Trivyを使用するとtfsecと同じエンジンを使用できる他、追加機能が備わっています。

tfsecがtrivyを推しているなら...
今回はそのTrivyをGithubActionsに導入しましょう。

想定読者

  • Terraformにセキュリティツールを導入したい方
  • セキュリティツールに興味がある方
  • TerraformにCIツールを何を入れれば良いか検討している方

前回の記事

ツールの説明

Trivyの読み方

  • 読み方は「トリビー」です。

Trivyとは?

  • 静的解析ツールでセキュリティ上の脆弱性を検出するOSS
  • IaCの誤設定や機密情報の流出を防ぐ

Terraformのコード

Trivyを導入方法

aquasecurity/trivy-action@master」というアクションを使用します。

.github/workflows/trivy.yml

今回セキュリティスキャンするファイルは./envs/dev/main.tfです。
scan-refを使って設定できます。

.github/workflows/trivy.yml
name: Terraform Trivy Scan

on:
  push:
    branches:
      - feature/*
      - hotfix/*
  pull_request:
    branches:
      - feature/*
      - hotfix/*

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Run Trivy
      uses: aquasecurity/trivy-action@master
      with:
        scan-type: 'config'
        scan-ref: ./envs/dev/main.tf # セキュリティスキャンする設定ファイル
        trivyignores: ./envs/dev/.trivyignore # ignoreする設定ファイル
        exit-code: '1'

Trivyで設定できる項目(一部抜粋)

設定値 説明
scan-type string スキャンのタイプ
input string  tarを入力
image-ref string イメージを指定
scan-ref string 実行するディレクトリ
format string 出力フォーマット
template string 出力テンプレート
output string 結果をファイルに出力するディレクトリ先
exit-code string 脆弱性を検知したときのエラーコード
ignore-unfixed boolean パッチが適用されていない脆弱性を無視
vuln-type string スキャン対象の脆弱性のタイプ
severity string 危険度の対象レベル
cache-dir string キャッシュディレクトリ
timeout string タイムアウト時間
hide-progress string プログレスバーを非表示
list-all-pkgs string 全ての危険レベルを出力
scanners string 検出するセキュリティ問題のカンマ区切りのリスト
trivyignores string .trivyignoreの相対パス
trivy-config string trivy.yml設定のパス

trivyignoresでは、Trivyで無視する設定を追加できます。

envs/dev/.trivyignore
# セキュリティグループでIPアドレスを全て許可している
AVD-AWS-0107
# IPv4を自動割り当てに設定している
AVD-AWS-0164
# VPCフローログを有効にしていない
AVD-AWS-0178

動作確認

  • Trivyを動かしてセキュリティスキャンをしてみます。画像のようにたくさん脆弱性が発見できます。
    スクリーンショット 2023-09-24 17.10.02.png

開発途中で脆弱性を無視したい場合は白枠の部分を、.trivyignoreに追加しましょう。
スクリーンショット 2023-09-24 17.07.34.png

.trivyignoreにコードを追加するとエラーをとして吐き出されなくなります。
スクリーンショット 2023-09-24 17.13.34.png

おわりに

今回はセキュリティスキャンツールのTrivyを導入しました。
記事を書く前まではTrivyのことをコンテナイメージの脆弱性ツールという認識だったのですが、
セキュリティスキャンもできることを知らなかったです。
Trivyを導入して開発進めていく際に不具合など発見しましたら、
記事にて共有させていただきます。
最後まで読んでいただきましてありがとうございました。

今回作成したgithubのリポジトリ : https://github.com/hikobend/terraform-qiita

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1