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_TOKEN | API 認証トークン | export SNYK_TOKEN=abc123 |
SNYK_ORG | デフォルト組織 ID | export SNYK_ORG=org-id |
SNYK_API | カスタム API エンドポイント | export SNYK_API=https://custom.snyk.io |
SNYK_INTEGRATION_NAME | CI/CD の統合識別子 | export SNYK_INTEGRATION_NAME=github-actions |
NODE_EXTRA_CA_CERTS | カスタム CA 証明書 | export NODE_EXTRA_CA_CERTS=/path/ca.crt |
HTTP_PROXY | HTTP プロキシ設定 | export HTTP_PROXY=http://proxy:8080 |
HTTPS_PROXY | HTTPS プロキシ設定 | 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を使用 - 新しい脆弱性のアラートを設定
- 理由と有効期限を記載して例外を文書化
- 無視された脆弱性を定期的にレビュー
リソース
公式ドキュメント
- Snyk Documentation
- CLI Commands Reference
- Snyk Code Documentation
- Container Scanning
- IaC Scanning
- API Reference
コミュニティとサポート
関連ツール
- Docker - コンテナスキャン統合
- Kubernetes - K8s 向け IaC スキャン
- Terraform - インフラストラクチャ・アズ・コードセキュリティ
最後に更新:2026-03-30