VScode+WSL2にSnykを導入してTerraformのセキュリティスキャンする

# 1. 概要

毎度Terraformのコードに脆弱性がないのか確認するのは大変なので、手軽に素早くチェックするためにSnykというツールを使います。今回はVScodeとWSL2環境で使っていきます。WSLと謳っていますが、WSL上にSnykをインストールすれば、後はローカルでSnykを使うのと大差ないかと思います。

# 2.準備

まず、Snykにアカウントを作成します。
14日間はお試しで使えて、14日後は一か月で300回までスキャンすることが出来ます。アカウント作成はSnykのマニュアルと表示されたガイドに従って、アカウント作成を進めてください。マニュアルは以下です。
https://docs.snyk.io/getting-started/introducing-snyk

# 3.Snyk設定

### 3.1.インストール
次にSnykをWSL2にインストールします。
ターミナルを開き、以下を実行します。
```
curl https://static.snyk.io/cli/latest/snyk-linux -o snyk
chmod +x ./snyk
sudo mv ./snyk /usr/local/bin/
```
インストールが完了したら、以下を実行し、snykコマンドが使用できるか確認します。
```
snyk --version
```
次に登録が出来たら、VScodeにSnykをインストールします。
VScodeの左メニューより、Extensionsを開きます。「Snyk」を検索して、以下「Snyk Security - Code, Open Source Dependencies, IaC Configurations」をインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/5ae3b0c5-987e-d455-a3ed-84e426939f67.png)

### 3.2.VScodeの認証と設定
インストールが完了したら、snykのアカウント画面に戻り、トークンを入手します。
画面左ペインの一番下のアカウントをクリックして、「Account setting」をクリックします。


![snyk01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/82b43437-4fe6-79df-41c6-0de468712e2a.png)

Auth TokenのKEY項目をクリックして、トークンを表示します。
表示されたトークンをコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/99613a17-2081-335d-b09e-b6233a7e2ed7.png)

WSL2のターミナルに戻り以下を実行し、トークンを使用して認証します。
```
snyk auth <トークン>
```
認証が完了したら、VScodeの左メニューで「Snyk」アイコンをクリックします。クリックすると、以下の画面が表示されるため、「Trust workspace and connect」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/fd3ba7c0-2dc0-2635-5757-1fcae153d872.png)

クリックすると、VSCodeに設定されれたworkspace内のディレクトリ直下のファイルに対し、セキュリティチェックが開始されます。
※Web画面が開き、以下のような認証画面が開いたら、「Authenticate」をクリックして、もう一度認証します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/a1dfd284-c938-c516-be35-c1bc4a9212dd.png)

とりあえず、成功すると以下のような画面が表示されますが、workspace内にセキュリティチェックに有効なファイルがないと、「OPEN SOURCE SECURITY」でエラーが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/dfa8de68-6a86-325b-f22a-5dd93b95ebd1.png)

今回は、一旦無視し、組織設定をします。
[ctr]+[shift]+[p]キーを押して、コマンドパレットを開き、「snyk: Settings]を実行し、Snykの設定画面を開きます。設定画面から、「Remote[WSL:Ubuntu<バージョン>]」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/7631d9bc-76d9-694b-1423-5a7691de8732.png)

設定画面より、「Snyk>Advanced:Organization」項目にSnykの組織名を入力します。
「https://app.snyk.io/org/< orgslugname >」のorgslugname部分を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/a63b307e-a987-4df0-d4e2-2b25d369b726.png)

### 3.3. セキュリティチェック実行 
VScodeをリロードした後、[ctr]+[shift]+[p]キーを押して、コマンドパレットを開き、「snyk: Rescan」を実行します。workspace内のterraformファイルのスキャンが開始されます。また、保存するたびに自動でスキャンしてくれるようになります。

スキャン後、セキュリティ的に問題があると、以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/aee3df0b-7db1-0211-c150-2775fd30776f.png)

マウスオーバーすると、セキュリティ的に問題があった個所の詳細が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/840c2b42-a902-d3f7-b8f4-30235e0af956.png)


スキャンするWorkSpaceを追加する場合は、VSCode自体の設定でWorkSpaceの追加をします。[File]-[Add Folder to Workspace...]をクリックし、追加したいフォルダを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3143329/3c98c374-9ea4-3cf7-f7e9-a62324a9a81d.png)

# 4.まとめ
環境が大きくなったり、ファイル数が多くなると、セキュリティ的に危ない構成を組んでも築かない場合がありますが、Snykを使うとこういうミスもなくなり、超便利です。無料プランだと月300回までなので、保存するたびにスキャンすると、あっという間に上限に達してしまいますので、気になる方は、自動スキャンをオフにしておいたほうがいいかと思います。