AI

オープンソースセキュリティスキャン比較:Semgrep vs Trivy vs Snyk CLI でDevSecOpsを実現する

オープンソースラボ編集部2026年6月13日

オープンソースセキュリティスキャンツール比較:Semgrep vs Trivy vs Snyk CLI でDevSecOpsを実現する

CI/CDパイプラインにセキュリティスキャンを組み込む「DevSecOps」は現代のソフトウェア開発の標準です。Semgrep・Trivy・Snyk CLIはオープンソースで使えるセキュリティスキャンツールで、コード・依存パッケージ・コンテナイメージの脆弱性を自動検出します。

DevSecOpsが解決する問題

従来: 本番リリース後にセキュリティレビュー→修正コスト大 DevSecOps: PRマージ前に自動スキャン→早期発見・低コスト修正

スキャン対象別に以下を分類します:

  • SAST: ソースコードの静的解析(SQL Injection・XSSパターン等)
  • SCA: 依存パッケージの既知脆弱性(CVE)検出
  • コンテナスキャン: DockerイメージのOS/パッケージ脆弱性
  • IaCスキャン: Terraform・Kubernetes設定のミス検出

主要ツールの概要

Semgrep

ルールベースの静的解析ツールです。「このコードパターンは危険」という直感的なルールをYAMLで記述でき、30以上の言語に対応しています。

# Semgrepのインストール
pip install semgrep
# または
brew install semgrep

# デフォルトのSASTルールでスキャン
semgrep --config=auto src/

# 特定のルールセット
semgrep --config=p/javascript-xss .
semgrep --config=p/sql-injection .
semgrep --config=p/python-security .

# カスタムルールの例(Pythonのeval使用を検出)
cat > custom-rules.yaml << 'YAML'
rules:
  - id: dangerous-eval
    pattern: eval(...)
    message: evalの使用はコードインジェクションのリスク
    languages: [python, javascript]
    severity: ERROR
YAML

semgrep --config=custom-rules.yaml src/

Trivy

AquaSecurityが開発するオープンソースの脆弱性スキャナーです。コンテナイメージ・ファイルシステム・Gitリポジトリ・IaCファイル(Terraform・K8s)・SBOMをスキャンします。

# Trivyのインストール
brew install trivy
# または
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin

# コンテナイメージのスキャン
trivy image nginx:latest
trivy image --severity HIGH,CRITICAL node:18

# ファイルシステムスキャン(依存パッケージ)
trivy fs .
trivy fs --scanners vuln,secret,config .

# IaCスキャン(Terraform・K8s)
trivy config ./terraform/
trivy config k8s-manifests/

# Gitリポジトリのスキャン
trivy repo https://github.com/your-org/your-repo

# SBOMの生成
trivy image --format cyclonedx --output sbom.json nginx:latest

Snyk CLI

SnykはSaaS型のセキュリティプラットフォームですが、CLIはオープンソースで使えます。コード・依存パッケージ・コンテナ・IaCをスキャンします。

# Snyk CLIのインストール
npm install -g snyk
snyk auth  # Snykアカウントが必要(無料プランあり)

# 依存パッケージのスキャン(SCA)
snyk test
snyk test --all-projects

# コードスキャン(SAST)
snyk code test

# コンテナスキャン
snyk container test nginx:latest
snyk container monitor nginx:latest  # 継続監視

# IaCスキャン
snyk iac test terraform/
snyk iac test k8s-manifests/

# 自動修正のPRを作成
snyk fix

機能比較表

比較項目SemgrepTrivySnyk CLI
SASTコードスキャン✅ 高機能⚠️
SCA(依存脆弱性)⚠️✅ 高機能
コンテナスキャン✅ 高機能
IaCスキャン⚠️
シークレット検出
SBOM生成
アカウント不要
カスタムルール✅ YAML⚠️
CI統合
GitHub Actions統合
修正提案
オフライン動作
ライセンスLGPL 2.1Apache 2.0Apache 2.0
GitHub Stars10k+23k+1k+

GitHub ActionsでCI/CDに統合する

# .github/workflows/security.yml
name: Security Scan

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  semgrep:
    name: SAST - Semgrep
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: returntocorp/semgrep-action@v1
        with:
          config: >-
            p/javascript-xss
            p/sql-injection
            p/python-security

  trivy:
    name: Container & IaC Scan - Trivy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: "fs"
          scan-ref: "."
          severity: "HIGH,CRITICAL"
          exit-code: "1"
          format: "sarif"
          output: "trivy-results.sarif"

      - name: Upload Trivy scan results to GitHub Security tab
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: "trivy-results.sarif"

セキュリティツールはセキュリティカテゴリ(/categories/security)で一覧でき、DevOps・CI/CDツールはDevOpsカテゴリ(/categories/devops)でも探せます。

FAQ

Q. SemgrepとSonarQubeの違いは何ですか?

A. どちらも静的解析ツールですが、アプローチが異なります。Semgrepはパターンマッチングベースで、「このコードの書き方は危険」というルールをYAMLで書くことで、カスタムルールの作成が簡単です。SonarQubeは複雑なデータフロー解析・品質ゲート・技術的負債の可視化が強みで、コードの品質管理全般に向いています。セキュリティ特化ならSemgrep、コード品質全般はSonarQubeが適しています。

Q. TrivyはDockerfileとコンテナイメージの両方をスキャンできますか?

A. できます。trivy config DockerfileでDockerfileのIaCスキャン(危険な設定パターンの検出)、trivy image myimage:latestでビルド済みコンテナイメージの脆弱性スキャンを行えます。前者はビルド前のチェック、後者はビルド後の最終確認として使い分けます。

Q. SnykはOSSプロジェクトでも使えますか?

A. Snykはオープンソースプロジェクトに対して無料プランを提供しており、パブリックリポジトリでは無制限で使えます。プライベートリポジトリは月200回のスキャンまで無料です。snyk testで依存パッケージの既知CVEを検出し、snyk fixで修正コミットを自動提案してくれます。

Q. コンテナイメージのCVEをゼロにすることは現実的ですか?

A. 「HIGH・CRITICAL」を修正することは現実的ですが、「全CVEゼロ」は多くの場合非現実的です。ベースイメージは常に何らかのLow/Medium CVEを含みます。trivy image --ignore-unfixedオプションで「修正版が公開されている」CVEのみを表示するフィルタリングを活用し、修正可能なものから優先的に対応するアプローチが現実的です。

Q. DevSecOpsを始める最初のステップは何ですか?

A. まずTrivyを既存のCI(GitHub Actions等)に追加して依存パッケージとコンテナのスキャンから始めることを推奨します。設定が最もシンプルで、アカウント登録不要・無料で使えます。数週間後にSemgrepを追加してコードのSASTスキャンを行い、さらにIaCスキャンを加えていく段階的アプローチが組織への定着に向いています。

まとめ

ユースケース推奨ツール
コードのSASTスキャンSemgrep
コンテナ・IaCスキャンTrivy
依存パッケージの脆弱性管理Snyk CLI / Trivy
CI/CDのDevSecOps統合Trivy + Semgrep

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。