Skip to main content

SnykテストでCI/CDワークフローとビルドシステムに実用的なセキュリティを組み込む

著者
blog banner cicd workflow

2019年12月12日

0 分で読めます

GitHubやGitLabなどのソースコード管理システムに保存したリポジトリをSnykに接続し、プロジェクトをインポートすることで、アプリケーション開発の中核となるワークフロー全体でアプリケーションセキュリティテストを活用できます。プロジェクトのライブラリマニフェストで新たに検出された脆弱性を継続的にセキュリティ監視できるだけでなく、セキュリティ上の問題を修正するプルリクエストを自動で作成することもできます。

CLIツールの始め方を動画で見る。

こうした基本的なGit連携に加えて、SnykはSnyk CLIを使用し、JenkinsなどのビルドプロセスやCIプロセス内で実行できるCI/CD(継続的インテグレーション/継続的デリバリー)ツールとも連携します。Snyk CLIは非常に柔軟なソリューションです。開発者はアプリケーションやコンテナのオープンソースの脆弱性を簡単にスキャンして修正できます。DevOpsエンジニアがこのCLIツールをパイプラインに組み込むケースが増えているのも当然です。

開発者にとって役立つアプリケーションセキュリティの知見を提供するには?

DevOpsまたはDevSecOpsエンジニアであれば、一度はこの疑問を抱いたことがあるでしょう。

CI/CDでアプリケーションセキュリティテストを行うのは大きな前進です。しかし、ビルドが失敗した際に開発者が問題を修正できるよう、具体的な修正方法を提示できれば、さらに効果的です。また、修正できない問題でビルドを止めて開発者を途方に暮れさせるといった、不要なノイズを減らすことにもつながります。

価値あるアドバイスを提供するには、実際の対応につながることを第一に考えましょう。

以下の画像のようにSnykのUIやソースコード管理との連携から直接作業する場合は簡単です。では、CLIツールを使う開発者にも同じように対応するにはどうすればよいでしょうか?

Snykのプロジェクトダッシュボード。45件の脆弱性と依存関係、およびadm-zipにおける重大度の高い任意のファイル書き込みの問題を表示。

CLIからSnykを実行してセキュリティ上の問題を見つけているなら、脆弱性が見やすく表示された一覧にはすでに慣れているでしょう。ビルド結果の出力を扱う際に便利ですが、結果をJSON形式でも取得できることをご存じですか?また、それを使って開発者がセキュリティ上の問題を解決するための具体的な対応を、さらに促すにはどうすればよいでしょうか?

Snykのターミナル出力。js-yamlとhandlebarsで重大度の高い脆弱性が検出され、修正方法の提案と4件の問題が表示されています。

Snyk CLIのテスト結果(JSON)のフィルタリング

Snyk CLIには、テストから必要な情報を取得するための便利なコマンドライン引数がいくつか用意されています。参考資料としてSnyk CLIチートシートもご覧ください。

便利なコマンドライン引数の1つが--jsonオプションです。SnykテストのJSON出力とjq JSONパーサーコマンドを組み合わせると、脆弱性の結果を効率よく絞り込み、加工できます。

この引数を使えば、脆弱なライブラリのアップグレードやパッチの適用で修正できる問題だけを簡単に表示できます。まさに具体的な対応につながる情報です!

snyk test --json | jq '.vulnerabilities |= map(select(.isUpgradable == true or .isPatchable == true))'

機械生成されたJSON出力からビジュアル化へ

加工できる構造化JSON形式は便利ですが、結果を見やすいビジュアルに変換できればさらに効果的です。フィルタリングした結果を開発者やチームリーダー、その他の関係者と共有すれば、プロジェクトの脆弱性を軽減するための対応を進められます。

幸い、snyk-to-htmlCLIを利用できます。このツールを使えば、JSON形式の結果を静的なHTMLページにエクスポートできます。単一のファイルにまとめられるため、メールで送ったり、自由に共有したりできます。

まず、ツールをインストールします。

$ npm install --global snyk-to-html

次に、Snyk CLIテストのJSON出力をjqにパイプしてフィルタリングし、最後にsnyk-to-htmlに渡してJSONをHTMLファイルに変換します。

$ snyk test —json | snyk-to-html -o results.html

次のような、見やすく整形された静的HTMLレポートが生成されます。関係者と共有して活用できます。

既知の脆弱性が3件表示されたSnykのテストレポート。中程度の深刻度のjs-yamlサービス拒否の脆弱性を含みます。

まとめ

脆弱性を把握することは重要ですが、開発者が自ら対応し、アプリケーションを安全に保てるよう、具体的なアドバイスと組み合わせることで、その効果はさらに高まることを忘れないでください。

Snyk CLIの出力についてさらに詳しく知るには、以下のリソースをご覧ください。

  1. こちらの短い動画でCLIツールの使い方を確認し、CLIの全リファレンスもご覧ください。

  2. 便利なSnyk CLIチートシートで、コマンド引数についてさらに詳しく学びましょう。

  3. フィルターやその他の演算子については、jqのドキュメントをご覧ください。

  4. 最後に、JSONを使ってSnykテストを最大限に活用する方法を詳しく解説した記事もぜひご覧ください。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。

続きを読む

illustration hero ai
Blog

PHPが重大な未認証RCEの脆弱性2件を修正(CVE-2026-109618、CVE-2026-109619):今すぐアップデート

PHPのリクエスト処理に重大な脆弱性が2件あり、未認証のリモートコード実行につながるおそれがあります。修正版にアップグレードするか、旧バージョンにはベンダー提供のバックポートを適用してください。

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。