
このPipeは、Snykを使用して、アプリの依存関係とDockerイメージ内の既知の脆弱性を検出、修正、監視します。
bitbucket-pipelines.yml ファイルのscriptセクションに次のスニペットを追加します:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
(*) = 必須変数。
SnykをBitbucket Pipelinesに統合することで、依存関係とDockerイメージ内の既知の脆弱性について、コードベースを継続的にテスト、修正、監視できます。
Snykの詳細については、当社のウェブサイト をご覧ください。
MavenやGradleを使用するJavaなど、より高度な環境を持つ言語/パッケージマネージャーの場合は、パイプラインでSnyk CLIを直接使用する必要があります。「Snyk CLIを直接使用する」の例を参照してください。Code Insightsレポートも生成したい場合は、Snyk CLIのテスト出力をこのPipeに渡すことができます。「既存のSnyk JSON出力からCode Insightsレポートを生成する」の例を参照してください。
このPipeを使用するにはSnyk APIトークンが必要です。
Snykを使用してNode.jsアプリケーションをスキャンし、脆弱性が見つかった場合はビルドを失敗させます。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
カスタム指定のDockerイメージを使用してSnykスキャンを実行します。デフォルトのSnyk Imagesを使用したくない場合に便利です。イメージは <MY_CUSTOM_IMAGE>:<TAG> の形式になります。ここで、MY_CUSTOM_IMAGE と TAG はそれぞれ SNYK_BASE_IMAGE 変数と LANGUAGE 変数に対応します。
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### 基本的なDockerイメージスキャンの例
Snykを使用してDockerイメージをスキャンし、脆弱性が見つかった場合はビルドを失敗させます。
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
これは、MavenやGradleを使用するJavaなど、より複雑なビルド環境を持つ言語に特に関連します。このようなシナリオでは、snyk test のバリエーションを使用してSnyk CLIでアプリケーションをテストできます。Snyk CLIをインストールする最も簡単な方法はnpm(npm install -g snyk)ですが、ビルド環境でnpmが利用できない場合は、curlを使用して https://github.com/snyk/snyk/releases からバイナリをダウンロードできます。
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
これは、MavenやGradleを使用するJavaなど、より複雑なビルド環境を持つ言語に特に関連します。このようなシナリオでは、snyk test --json > snyk-test-output.json のバリエーションを使用してSnyk CLIでアプリケーションをテストし、その出力ファイルをこのPipeに渡してCode Insightsレポートを生成できます。Snyk CLIをインストールする最も簡単な方法はnpm(npm install -g snyk)ですが、ビルド環境でnpmが利用できない場合は、curlを使用して https://github.com/snyk/snyk/releases からバイナリをダウンロードできます。
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
Node.jsアプリにSnykパッチを適用し、重要度が critical の脆弱性のみを対象に依存関係のスキャンを続けますが、見つかった場合でもビルドは失敗させません。また、Snyk.ioで依存関係の状態を監視して、新しい脆弱性が見つかった場合にアラートを受け取ることもできます。その後、Dockerイメージをビルドし、重要度が critical の脆弱性をスキャンします。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
デフォルト以外のSnykインスタンスを使用するお客様は、URLを指定するために SNYK_API の使用が必要です。これはMT-EU、MT-AU、およびシングルテナントのお客様に適用されます。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
このプロジェクトの長期的な安定性と品質を確保するため、2025年8月よりクローズドコントリビューションモデルに移行します。この変更により、コアチームは集中的な開発ロードマップと厳格な品質保証に注力できるようになります。これは、これほど広範に使用されているコンポーネントにとって不可欠です。
透明性のため、すべての開発は公開されたままです。コミュニティのサポートと貴重なコントリビューションに感謝します。
クローズドコントリビューションモデルへの移行の一環として、このリポジトリではGitHub issuesが無効になっています。Snykサポートチームは、いかなるSnyk開発プロジェクトのGitHub issuesも積極的に監視していません。
Snyk製品に関するヘルプについては、Snykサポートページ をご利用ください。これが最も早く支援を受ける方法です。
Copyright (c) 2019 Snyk Ltd. and others. Apache 2.0ライセンス。 LICENSE.txt ファイルを参照してください。
| 変数 | 用途 |
|---|
| SNYK_TOKEN (*) | Snyk APIトークン。 |
| LANGUAGE (*) | 開発言語(例: node、ruby、composer、dotnet、docker)。使用可能なタグの完全なリストについては Dockerhub を参照してください。注: SNYK_BASE_IMAGE と併用する場合、このフィールドはベースイメージのタグを指します |
| IMAGE_NAME (*) | docker 言語の場合、dockerスキャンを実行するイメージ。 |
| SNYK_BASE_IMAGE | Snyk Images を使用したくない場合に、独自のベースイメージを指定します。デフォルト: snyk/snyk。注: LANGUAGE はベースイメージのタグを指します。タグが有効であることを確認してください |
| CODE_INSIGHTS_RESULTS | Snykテスト結果を含むCode Insightレポートを作成します。デフォルト: false。 |
| SNYK_TEST_JSON_INPUT | 以前に生成した snyk test --json の出力からCode Insightsレポートを作成する場合に使用します。以下の「既存のSnyk JSON出力からCode Insightsレポートを生成する」セクションの例を参照してください。 |
| PROTECT | .snyk ファイルで指定されたパッチをローカルファイルシステムに適用します(Snyk Wizard を実行した後)。デフォルト: false。 |
| DONT_BREAK_BUILD | 問題が見つかった場合でもビルドを続行します。デフォルト: false。 |
| MONITOR | プロジェクトのスナップショットをSnyk UIに記録し、初期テスト後も監視を続けます。デフォルト: false。 |
| SEVERITY_THRESHOLD | 指定されたレベル以上の重要度の課題を報告します。許可される値: low、med、high、critical。デフォルト: low。 |
| ORGANIZATION | CLIを実行する組織。デフォルト: なし。 |
| PROJECT_FOLDER | プロジェクトが置かれているフォルダ。デフォルト: .。 |
| TARGET_FILE | パッケージファイル(例: package.json)。CLIの --file= に相当します。Dockerの場合は Dockerfile を指定してください。デフォルト: なし。 |
| EXTRA_ARGS | snyk CLIに渡す追加の引数。デフォルト: なし。 |
| DEBUG | 追加のデバッグ情報を有効にします。デフォルト: false。 |
| SNYK_API | Snyk APIエンドポイントを指定します。デフォルト: https://api.snyk.io(標準のSnyk MT-US環境) |