VS Code向けSnykプラグインの開発:Peter Benjaminに聞く
Tim Kadlec
2017年3月16日
0 分で読めますPeter Benjamin(@pmbenjamin)は、 Intuitのサイバーセキュリティチームでシニアソフトウェアエンジニアを務めています。Peterは最近、Snykのテスト結果をエディター上で確認できる優れたVS Codeプラグインを公開しました。このプラグインについて詳しく知るため、いくつか質問しました。
Snykを使い始めたきっかけは何ですか?
私のチームにとって、セキュリティはソフトウェア開発に欠かせない要素です。特に、毎年、Webのセキュリティ状況を評価するレポートや調査が数多く発表されていることを考えるとなおさらです。
以前は、NodeプロジェクトでNode Security Platform(nsp)を、Ruby/Railsプロジェクトではbundler-auditやbrakemanを利用していました。これらもそれぞれ優れたツールで、マニフェストファイル(例:package.json、Gemfile)をスキャンして依存関係とバージョンを確認し、アドバイザリや脆弱性データベースと照合します。しかし、既知の脆弱性が検出された後は、開発者が自力で対処しなければなりません。その脆弱性が依存関係の提供元に報告されているか、修正済みの新しいバージョンがリリースされているかを調べ、さらに自分で脆弱性を修正する必要があります。
Snykのことを知り、個人プロジェクトで試してみることにしました。Snykにできることに驚きました。nspのように依存関係やバージョンをスキャンして脆弱性データベースと照合するだけでなく、プロジェクトを継続的に保護・監視できます。プロジェクトを監視するようSnykに設定すれば、将来、既知の脆弱性が見つかった際に通知してくれます。
それだけではありません。Snykを設定して、脆弱性を修正するプルリクエストをプロジェクトに自動で作成することもできます。さらに、Snykを使えば、RubyやNodeなど、異なるエコシステムにまたがる既知の脆弱性も管理できます(今のところはこの2つですが、今後さらに楽しみな機能が登場するはずです)。
編集者注:そのとおり、登場しています。 :)
Snykは、既知の脆弱性からプロジェクトを守る方法をまったく新しいレベルへと引き上げ、開発者が通常の開発サイクルに取り入れないことが、あっけないほど簡単になります。
VS Code用の拡張機能を開発したのはなぜですか?
Snykの共同創業者であるGuy Podjarnyは、開発者がアプリケーションセキュリティをより簡単に管理できるツールを作ることを大切にしている、と読んだことがあります。私もこの考え方に強く共感しています。開発者にとってツールが使いやすいほど、採用されやすくなります。セキュリティの専門家として、この業界にはより優れた安全なプラクティスを取り入れることが切実に求められていると感じています。
必要だったのは、別のペインやウィンドウ、ターミナルに切り替えてsnyk testを実行しなくても、エディター内でその時点の依存関係をすばやくテストする方法でした。

そこで見つけた不足を、vscode-snyk拡張機能で補いました。
拡張機能の開発プロセスについて教えてください。
プラグインの開発は比較的スムーズでした。まず、yeomanで生成したMicrosoftの拡張機能用ボイラープレートを使い、そこから一気に開発を進めました。
SnykのプログラマティックAPIにはあまり詳しくなく、公開されているドキュメントもありませんでした。そこでNode REPL(Read-Eval-Print-Loop)を起動し、必要なことやその実現方法がわかるまで試行錯誤しました。
そこから、手元で動くプロトタイプを作るのに2~3時間、公開前の仕上げに1時間ほどかかりました。
それでは、この拡張機能をどのように使っていますか?
個人プロジェクトでも仕事のプロジェクトでも、Snykは開発プロセスに欠かせません。プロジェクトに本番用の依存関係を追加したらすぐにsnyk testを実行し、既知の脆弱性がないことを確認します。

VS Codeプラグインを使えば、「CMD + SHIFT + P」を押して「snyk」と入力し、「enter」を押すだけです。
実際に試してみたい方は、どこから入手できますか?
プラグインをインストールする標準的な方法は、エディターから直接行うことです。ext install vscode-snykと入力するか、拡張機能ペインを開いて「snyk」を検索してください。
開発に協力したい方は、オープンソースのvscode-snykをGitHubでご覧いただけます。フィードバックや機能のリクエスト、コミュニティからの貢献を歓迎します。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。