snyk monitorコマンドでプロジェクトをSnykに登録して脆弱性を継続的に監視する

2022.03.02

こんにちは、CX事業本部 IoT事業部の若槻です。

前回のエントリでは、Snyk CLIのsnyk testコマンドを使用して、プロジェクト内の脆弱性をスキャンしてみました。

そしてこの脆弱性(およびライセンスの問題)のスキャンを継続的に行ってくれるコマンドがsnyk monitorです。

今回は、snyk monitorコマンドを使用して、プロジェクトをSnykに登録して脆弱性を継続的に監視してみました。

前提

Snykアカウント

まだの場合はSnykアカウントにサインアップしておきます。

ちなみにSnykは個人又は小規模なチームであれば無料で利用可能です。詳しくは下記を御覧ください。

環境

Snyk CLIを使用する端末の環境情報です。

$ node --version
v14.17.0
$ npm --version
8.5.0
$ sw_vers
ProductName:    macOS
ProductVersion: 11.6
BuildVersion:   20G165
$ snyk --version
1.859.0

スキャン対象

AWS CDKプロジェクトを作り、さらにその配下にReactプロジェクトを作ります。これらのnpmプロジェクトをスキャン対象とします。

$ mkdir aws-cdk-v2-app && cd aws-cdk-v2-app
$ cdk init --language typescript
$ npx create-react-app web

CDKプロジェクトaws-cdk-v2-appの配下にReactプロジェクトwebがある構成です。

やってみた

snyk monitorコマンドを実行してみます。--all-projectsオプションを使用すれば、ワーキングディレクトリ配下のすべてのプロジェクトを対象とできます。

$ snyk monitor --all-projects

Monitoring /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/aws-cdk-v2-app (aws-cdk-v2-app)...

Explore this snapshot at https://app.snyk.io/org/cm-rwakatsuki/project/eb23630e-ed53-4a9a-906b-45d6fdaf902c/history/7fcd8bd4-2d9b-40e2-b258-d4e2aa97b6dd

Notifications about newly disclosed issues related to these dependencies will be emailed to you.


-------------------------------------------------------

Monitoring /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/aws-cdk-v2-app (web)...

Explore this snapshot at https://app.snyk.io/org/cm-rwakatsuki/project/a83cca92-5cc1-48d5-8f94-bce540305975/history/ef4c0d82-1415-4b6a-82a7-1eea7530c022

Notifications about newly disclosed issues related to these dependencies will be emailed to you.

検知されたaws-cdk-v2-appおよびwebの2つのプロジェクトのスナップショットがSnykに登録されました。そして登録直後にwebプロジェクトの方で2つの脆弱性が検知された旨のメール通知がSnykアカウントのメールアドレス宛に早速届きました。

また、コマンドの実行結果に出力されているそれぞれのURLにアクセスしてみると、プロジェクトの登録情報や、検知された既知の脆弱性の一覧が確認できます。

aws-cdk-v2-appの方は、既知の脆弱性はないため表示されていません。

webの方は、2件の脆弱性が確認できます。先程メール通知されたものと同じです。

脆弱性はフィルターを使用して柔軟に表示を絞り込むことが出来ます。

登録したプロジェクトのスナップショットに対する脆弱性の監視は継続的に行われ、新しい脆弱性が検知された際には都度先程のようなメール通知が行われます。

メール通知の設定はAccount Settingsから変更可能です。リポジトリ毎やプロジェクト毎の通知基準を設定できます。

GitHub統合との比較

リポジトリのGitHub統合(GitHub integration)を使用すれば常にプロジェクトの最新をスキャン対象とできます。

それに比べるとsnyk monitorはプロジェクトに変更がある都度スナップショットの登録を更新する必要がありますが、GitHubへのアクセス権限などは不要なため、GitHub統合と比べて簡単に脆弱性監視ができるというメリットがあると思います。

参考

以上