Snykの選定理由（プラットフォームエンジニア視点）

## はじめに

本記事は「Snykを使ってコードをセキュアにした記事を投稿しよう！ by Snyk Advent Calendar 2023」の シリーズ 2　の 25日目の記事になります。

Web系企業でPlatform Engineeringをしている@qjuliarです。

インフラ構築でTerraformを利用している関係で、tfsecやTrivyなどの無料の静的スキャンツールをメインで活用していますが、無料だと導入しやすい一方、細かいところに手が届かないことが多々あります。

そこで今回、「Snyk Advent Calendar 2023」で何故Snykを導入しようと思ったのか、プラットフォームエンジニア視点で書いていきたいと思います。

https://qiita.com/advent-calendar/2023/snyk

## 結論

まずはじめに結論です。選定理由は以下の通りです。

- 多くのサービスと簡単に連携できる
- トップクラスの脆弱性データベース
- 組織全体のセキュリティをGUIで管理できる
- （サポートがある）

## Snykについて

聞いたことがない方もいらっしゃると思いますのでまずはSnykについて紹介します。
Advent Calendarの紹介文そのままですが。

> Snyk（スニーク）はエンジニアのためのセキュリティプラットフォームです。従来のセキュリティツールは、セキュリティ部門の目線で作られていることが多いかと思いますが、Snykは開発者の目線でエンジニアファーストで作られています。
> Snykは、コードやオープンソースとその依存関係、コンテナやIaC(Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。Gitや統合開発環境（IDE）、CI/CDパイプラインに直接組み込むことができるので、エンジニアが簡単に使うことができます。　

DevSecOpsやShift Leftを加速させるためのセキュリティプラットフォーム（ツール）です。プラットフォームというのがポイントで、単にスキャンして終わり、ではないんですよね。

スタートアップをはじめとする小規模な組織では開発が優先になってしまい、セキュリティが追いついていません。何もなければ良いのですが、規模が大きくなるにつれてセキュリティの重要性はどんどん増していき、ついにはどうしてこんな設定になっているんだ、修正しろー、直すのに時間がかかるので次回改修します、となってしまい、直らないこともしばしば。（暗号化してないからってスナップショットを取って暗号化して元に戻すなんて簡単にできないですよね）

## Snykのここがすごい！

### 1. 脆弱性データベースがすごい！

脆弱性データベースが非常に優秀です。OSSのツールを使うときにわざわざ脆弱性データベースを調べませんでしたが、SnykはCVEなどの公開データに加えて機械学習やコミュニティ、学術機関からの情報を元に独自の脆弱性データベースを構築しているそうです。さらにそのデータベースはAWSやGoogleなどにも提供されており、Amazon Inspectorでも使われています。業務でAWSを使っているため、SnykがInspectorで使われていると聞くと使いたくなりますね。

### 2. 対応・連携している言語・サービスが多い！

Slackなどのメジャーサービスはもちろん、私がPlatform Engineeringで利用しているサービスの多くで対応しています。OSSだと一部は対応していないことがあるため、使いたいサービスでちゃんと対応していることは選定する上で重要です。

- [Slack](https://docs.snyk.io/integrate-with-snyk/notification-and-ticketing-systems-integraitons/slack-integration)
- [Terraform Cloud Run Tasks](https://docs.snyk.io/integrate-with-snyk/snyk-ci-cd-integrations/terraform-cloud-integration-for-snyk-iac-using-run-tasks)
- [GitHub Actions](https://github.com/snyk/actions)
- [Visual Studio Code](https://docs.snyk.io/integrate-with-snyk/ide-tools/visual-studio-code-extension)

### 3. GUIが秀逸！

以下公式にある画像ですが、どのリポジトリにどのような脆弱性どれだけが出ているのか一目で分かります。また、リポジトリを選択すると、各ファイルに対してもどんな脆弱性が出ているのか分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56144/52354219-80f8-834b-a9aa-45ba5449d8fd.png)

お借りした画像の記事は[こちら](https://docs.snyk.io/scan-using-snyk/snyk-code/exploring-and-working-with-snyk-code-results-in-the-web-ui)

## 他サービスとの比較

Terraformに対して利用する観点で比較します。Snykの記事なので、ここでは他サービスについては軽い説明に留めておきます。

### tfsec

使いやすいです。MacだとHomebrewでインストールして`tfsec`を叩けばすぐ使えるのが魅力です。ただ悲しいかな、Trivyに統合されるため今後は使えなくなるでしょう。Terraform v1.5のimport blockがエラー検出されるのが痛いです。

### Trivy

伝説の日本人プログラマーが開発したツール。コンテナスキャンで有名だと思います。tfsecは現在Trivyに取り込まれましたので、tfsecを使っていればTrivyを使う流れになるでしょう。TrivyはTerraformやコンテナ以外にも対応していますのでSnykの対抗馬となりそうです。

## 気になるお値段は？

OSSの魅力は無料であることですよね。一方、Snykは有料です。無料版もありますが、上限に注意しないとあっという間に上限に達してその月は利用できなくなります。

最低5名からというのがネックですが、おおよそ年間40~100万円、月だと4~8万円くらいで始められます。
一人当たりだと月1万円くらいからですね。

Enterprise版は営業担当者に相談しましょう！

## 終わりに

小さい規模ではセキュリティというのは後回しにされることが多く、費用対効果も見えにくいため、そこに時間やお金をかけることが難しいことが多々あります。

逆に大きな規模になるとセキュリティの重要性が認知され、ツールを導入しやすくなりますが、既に構築されてしまったシステムを改修することは容易ではありません。

つまり、小さい規模のうちからセキュリティ対策をしておくことが重要で、その中でもShift Leftを意識して、設計・開発段階から脆弱性を潰しておくことが重要であり、そのためのツールとしてSnykは非常に有効だと思っています。