コンテンツにスキップ

Snyk コマンド

オープンソース、コード、コンテナ、インフラストラクチャ・アズ・コード全体のセキュリティスキャン用の包括的な Snyk CLI コマンドとワークフロー。

インストール

npm(Node.js)

# グローバルインストール
npm install -g snyk

# プロジェクトにインストール
npm install --save-dev snyk

# インストール確認
snyk --version

macOS(Homebrew)

# Homebrewでインストール
brew install snyk

# Snyk を更新
brew upgrade snyk

# インストール確認
snyk --version

Windows(Scoop)

# Scoop でインストール
scoop install snyk

# インストール確認
snyk --version

スタンドアロンバイナリ

# スタンドアロン CLI をダウンロード(Linux/macOS)
curl https://static.snyk.io/cli/latest/snyk-linux -o snyk
chmod +x ./snyk
./snyk --version

# または macOS
curl https://static.snyk.io/cli/latest/snyk-macos -o snyk
chmod +x ./snyk

認証

ブラウザで認証

# ブラウザで認証を開く
snyk auth

# デフォルト:ブラウザを開いて認証トークンを作成
snyk auth --token <token>

API トークン方式

# 明示的なトークンで認証
snyk auth --token <your-api-token>

# 環境変数経由でトークン設定
export SNYK_TOKEN=<your-api-token>
snyk test

# 現在の認証確認
snyk config get api

# 組織を設定
snyk config set org=<org-id>

ログアウト

# 保存された認証情報をクリア
snyk logout

# すべての認証をクリア
rm ~/.snyk

オープンソーススキャン(SCA)

基本的なテスト

# 現在のプロジェクトをスキャンして脆弱性を検出
snyk test

# 最小限の出力でスキャン
snyk test --quiet

# 詳細情報を表示してスキャン
snyk test --verbose

# 特定のファイルをスキャン
snyk test --file=package.json

# すべての脆弱性レベルでスキャン
snyk test --severity-threshold=low

深刻度フィルタリング

# 重大な脆弱性のみ表示
snyk test --severity-threshold=critical

# 重大と高を表示
snyk test --severity-threshold=high

# 重大、高、中を表示
snyk test --severity-threshold=medium

# すべて表示(重大、高、中、低)
snyk test --severity-threshold=low

複数言語サポート

# npm/Node.js プロジェクトをスキャン
snyk test

# Python プロジェクトをスキャン
snyk test --file=requirements.txt

# Java(Maven)をスキャン
snyk test --file=pom.xml

# Java(Gradle)をスキャン
snyk test --file=build.gradle

# .NET(NuGet)をスキャン
snyk test --file=packages.config

# Ruby をスキャン
snyk test --file=Gemfile.lock

# PHP/Composer をスキャン
snyk test --file=composer.lock

# Go をスキャン
snyk test --file=go.mod

プロジェクトの監視

# 脆弱性のスナップショットを作成して監視
snyk monitor

# カスタム名で監視
snyk monitor --project-name=my-app

# 特定の組織を監視
snyk monitor --org=<org-id>

# タグ付きで監視
snyk monitor --tags=production,critical

コードスキャン(SAST)

基本的なコードスキャン

# セキュリティ問題についてコードをスキャン
snyk code test

# 最小限の出力でスキャン
snyk code test --quiet

# 詳細出力でスキャン
snyk code test --verbose

# 特定のディレクトリをスキャン
snyk code test --scan-unmanaged

コード深刻度フィルタリング

# 重大な問題のみ
snyk code test --severity-threshold=critical

# 重大と高
snyk code test --severity-threshold=high

# すべての深刻度
snyk code test --severity-threshold=low

コンテナスキャン

イメージテスト

# Docker イメージをスキャンして脆弱性を検出
snyk container test <image-name>

# タグ付きでテスト
snyk container test myapp:latest

# レジストリからテスト
snyk container test docker.io/node:16

# ローカルイメージを ID でテスト
snyk container test --image=<image-id>

コンテナ監視

# コンテナ脆弱性のスナップショットを作成
snyk container monitor <image-name>

# 組織と一緒に監視
snyk container monitor <image-name> --org=<org-id>

# 複数のイメージを監視
snyk container monitor myapp:v1.0
snyk container monitor myapp:v1.1

高度なコンテナオプション

# すべての脆弱性を表示(修正されていないものを含む)
snyk container test <image> --show-vulnerable-paths

# ベースイメージ脆弱性を含める
snyk container test <image> --detect-scan-errors

# Snyk にアップロードせずにテスト
snyk container test <image> --skip-unresolved

インフラストラクチャ・アズ・コード(IaC)スキャン

Terraform スキャン

# Terraform ファイルをスキャン
snyk iac test

# 特定のファイルをスキャン
snyk iac test main.tf

# 深刻度フィルタ付きでスキャン
snyk iac test --severity-threshold=high

# フレームワークと一緒にテスト
snyk iac test --framework=terraform

# 人間が読める形式でレポートを生成
snyk iac test --report

その他の IaC 形式

# CloudFormation をスキャン
snyk iac test --framework=cloudformation template.yaml

# Kubernetes マニフェストをスキャン
snyk iac test --framework=k8s deployment.yaml

# ARM テンプレートをスキャン
snyk iac test --framework=arm

# Dockerfile をスキャン
snyk iac test Dockerfile

# Helm チャートをスキャン
snyk iac test --framework=helm chart/

IaC 監視

# IaC 設定を監視
snyk iac describe

# コンプライアンス情報を取得
snyk iac describe --framework=terraform

# 詳細設定を表示
snyk iac describe --nested

修正と修復

脆弱性を自動修正

# 脆弱性を自動修正
snyk fix

# 変更をプレビューするドライラン
snyk fix --dry-run

# 特定の深刻度に対して修正
snyk fix --severity-threshold=high

# 既存の変更を強制的に上書き
snyk fix --force

依存関係保護

# Snyk 保護を適用(依存関係にセキュリティパッチを追加)
snyk protect

# 保護が適用されていることを確認
snyk protect --verbose

# 保護を削除
snyk protect --uninstall

脆弱性無視

特定の脆弱性を無視

# 脆弱性をインタラクティブに無視
snyk ignore

# 特定の理由と有効期限で無視
snyk ignore --id=<vuln-id> --reason=<reason> --expiry=<date>

# 例:30 日間無視
snyk ignore --id=SNYK-JS-123456 --expiry=2026-04-30

# 永続的に無視を設定
snyk ignore --id=SNYK-JS-123456 --permanent

ポリシーファイル

# .snyk ポリシーファイルを作成
snyk policy --create

# ポリシーでテスト
snyk test --policy-path=.snyk

# ポリシーを表示
cat .snyk

# ポリシーを更新
snyk ignore --id=SNYK-JS-123456 --reason="False positive"

SBOM 生成

ソフトウェア部品表

# JSON 形式で SBOM を生成
snyk sbom

# Docker イメージの SBOM を生成
snyk sbom --format=json <image-name>

# ファイルに出力
snyk sbom > sbom.json

# SPDX 形式で生成
snyk sbom --format=spdx

# テーブル形式で表示
snyk sbom --format=table

出力形式

JSON 出力

# テストして JSON として出力
snyk test --json > results.json

# JSON をきれいに印刷
snyk test --json-file-output=results.json

# コードテストを JSON として
snyk code test --json

SARIF 出力

# SARIF 形式を生成(GitHub Code Scanning の場合)
snyk test --sarif > results.sarif

# コードスキャンの SARIF
snyk code test --sarif > code-results.sarif

# コンテナ SARIF
snyk container test <image> --sarif > container.sarif

HTML レポート

# HTML レポートを生成
snyk test --html > report.html

# ブラウザで開く
snyk test --html > report.html && open report.html

設定とカスタマイズ

設定コマンド

# 現在の設定を表示
snyk config show

# API エンドポイントを設定
snyk config set api=https://api.snyk.io

# 組織を設定
snyk config set org=<org-id>

# 特定の設定を取得
snyk config get api

# 設定を設定解除
snyk config unset org

環境変数

# 環境変数経由でトークンを設定
export SNYK_TOKEN=<your-token>

# 組織を設定
export SNYK_ORG=<org-id>

# API エンドポイントを設定
export SNYK_API=https://api.snyk.io

# カスタム CA 証明書を設定
export NODE_EXTRA_CA_CERTS=/path/to/ca.crt

# SSL 検証を無効にする(慎重に使用)
export NODE_TLS_REJECT_UNAUTHORIZED=0

.snyk ポリシーファイル

# 脆弱性を無視するための .snyk ファイル
version: v1.25.0
ignore:
  SNYK-JS-123456:
    - '*':
        reason: False positive
        expires: 2026-04-30
  SNYK-PY-789012:
    - '*':
        reason: Not applicable to our use case
        expires: 2026-06-30
patch:
  SNYK-JS-111111:
    - '*':
        patched: '2024-03-15'

フィルタリングと組織

脆弱性をフィルタリング

# パッチが当たっていない脆弱性を含める
snyk test --show-vulnerable-paths

# パッチ可能なもののみを表示
snyk test --show-vulnerable-paths=false

# プロジェクト別にフィルタ
snyk test --project-name=<name>

# タグでフィルタ
snyk monitor --tags=team:backend,env:prod

組織コンテキスト

# 特定の組織内でテスト
snyk test --org=<org-id>

# デフォルト組織を設定
snyk config set org=<org-id>

# 組織 ID を表示
snyk org

# 組織を一覧表示
snyk org list

CI/CD 統合

GitHub Actions

# .github/workflows/snyk.yml
name: Snyk Security Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  snyk:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: snyk/actions/setup@master
      - env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        run: snyk test --severity-threshold=high

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: results.sarif

GitLab CI

# .gitlab-ci.yml
snyk_scan:
  image: snyk/snyk:latest
  script:
    - snyk auth --token $SNYK_TOKEN
    - snyk test --severity-threshold=high --json > results.json
  artifacts:
    reports:
      sast: results.json

Jenkins パイプライン

pipeline {
    agent any
    environment {
        SNYK_TOKEN = credentials('snyk-token')
    }
    stages {
        stage('Snyk Test') {
            steps {
                sh 'npm install -g snyk'
                sh 'snyk auth $SNYK_TOKEN'
                sh 'snyk test --severity-threshold=high --json > results.json'
            }
        }
    }
    post {
        always {
            publishHTML target: [
                reportDir: '.',
                reportFiles: 'results.json',
                reportName: 'Snyk Report'
            ]
        }
    }
}

便利なコマンドの組み合わせ

包括的なスキャンワークフロー

# 1. 認証
snyk auth

# 2. オープンソース依存関係をテスト
snyk test --severity-threshold=high

# 3. セキュリティ問題についてコードをスキャン
snyk code test --severity-threshold=high

# 4. コンテナをスキャン
snyk container test myapp:latest

# 5. インフラストラクチャ・アズ・コードをスキャン
snyk iac test terraform/

# 6. SBOM を生成
snyk sbom > sbom.json

# 7. 監視スナップショットを作成
snyk monitor --org=<org-id>

CI/CD ワークフロー

# 依存関係をインストール
npm install

# 認証
snyk auth --token $SNYK_TOKEN

# 厳密な閾値ですべてのスキャンを実行
snyk test --severity-threshold=critical --fail-on=all
snyk code test --severity-threshold=critical
snyk container test $DOCKER_IMAGE --severity-threshold=critical

# レポートを生成
snyk test --json > sca-results.json
snyk code test --sarif > code-results.sarif
snyk container test $IMAGE --json > container.json

# 継続的な追跡のために監視
snyk monitor --org=$SNYK_ORG --project-name=$CI_PROJECT_NAME

修正とデプロイのワークフロー

# 現在の状態をテスト
snyk test

# 修正できるものを自動修正
snyk fix

# 変更を確認
git diff

# 修正後にテスト
snyk test

# コミットとプッシュ
git commit -am "chore: fix security vulnerabilities"
git push

デバッグとトラブルシューティング

デバッグモード

# デバッグ用の詳細出力
snyk test --verbose

# デバッグモード(非常に詳細なログ)
snyk test --debug

# 認証を確認
snyk auth --debug

# インストール済みパッケージを確認
snyk test --print-deps

よくある問題

# キャッシュをクリア
rm -rf ~/.snyk

# 再認証を強制
snyk logout && snyk auth

# 結果をアップロードせずにテスト
snyk test --skip-unresolved

# Snyk CLI バージョンを確認
snyk --version

# 最新バージョンに更新
npm install -g snyk@latest

テスト概要

# 概要のみを表示
snyk test --quiet

# 脆弱性をカウント
snyk test --json | jq '.vulnerabilities | length'

# 最高深刻度を取得
snyk test --json | jq '.metadata.severityHeader'

環境変数リファレンス

変数目的
SNYK_TOKENAPI 認証トークンexport SNYK_TOKEN=abc123
SNYK_ORGデフォルト組織 IDexport SNYK_ORG=org-id
SNYK_APIカスタム API エンドポイントexport SNYK_API=https://custom.snyk.io
SNYK_INTEGRATION_NAMECI/CD の統合識別子export SNYK_INTEGRATION_NAME=github-actions
NODE_EXTRA_CA_CERTSカスタム CA 証明書export NODE_EXTRA_CA_CERTS=/path/ca.crt
HTTP_PROXYHTTP プロキシ設定export HTTP_PROXY=http://proxy:8080
HTTPS_PROXYHTTPS プロキシ設定export HTTPS_PROXY=https://proxy:8080

ベストプラクティス

セキュリティ

  • 常に安全な API トークンで認証(トークンをコミットしない)
  • 本番 CI/CD で --severity-threshold=critical を使用
  • Snyk CLI を定期的に最新バージョンに更新
  • マージ前に自動修正をレビューして承認
  • .snyk ポリシーファイルをバージョン管理下に保持
  • 一貫性のために組織レベルのポリシーを使用
  • snyk monitor で脆弱性を継続的に監視

パフォーマンス

  • CI/CD で --quiet フラグを使用して出力を削減
  • 可能であれば実行間でキャッシュ依存関係を使用
  • コンテナスキャンは特定のタグで実行し、すべてではなく
  • --skip-unresolved を使用して修正不可能な問題をスキップ
  • 深刻度でフィルタして対応可能な問題に焦点
  • 可能な場合は影響を受けるパスのみをスキャン

ワークフロー

  • 安全でないコードのマージを防ぐために PR チェックに統合
  • snyk fix を使用してパッチを自動化
  • コミット前に snyk ignore の決定をレビュー
  • 継続的な追跡のために snyk monitor を使用
  • 新しい脆弱性のアラートを設定
  • 理由と有効期限を記載して例外を文書化
  • 無視された脆弱性を定期的にレビュー

リソース

公式ドキュメント

コミュニティとサポート

関連ツール

  • Docker - コンテナスキャン統合
  • Kubernetes - K8s 向け IaC スキャン
  • Terraform - インフラストラクチャ・アズ・コードセキュリティ

最後に更新:2026-03-30