Snyk から Slack にアラートを送る (Slack integration)

# はじめに

この記事は[「Snykを使って開発者セキュリティにまつわる記事を投稿しよう！ by Snyk Advent Calendar 2022」](https://qiita.com/advent-calendar/2022/snyk)の 7 日目です。ぜひカレンダーにご参加ください！

Snyk の Toshi です。皆さんの記事、いつも楽しみに読んでいます。Snyk を試していただく、使っていただくのはもちろん、記事を書いていただけることをうれしく感じています。ありがとうございます。

Snyk にはさまざまな機能があり、たくさんの使い方があります。この記事では、個人的にぜひ試してほしい機能として **Slack integration** を紹介します。

所要時間は約 5 分で簡単に、だれでも、設定できますのでぜひやってみてください。



# Snyk から送信されるアラートについて

Snyk はユーザーがログインやスキャンをしていないときも、新たな脆弱性の混入や、脆弱性の修正リリースを定期的にモニタリングしています。そして、脆弱性が検出されたり、フィックスがリリースされるとメールで通知を送ります。

でも最近は、メールよりも Slack で通知してほしい、という方も多いのではないでしょうか。もちろん可能です！そこで、この記事ではSlack へのアラート送信を設定します。

必要に応じて次のドキュメントも参照してください。

ドキュメント: [**Slack integration**](https://docs.snyk.io/integrations/notifications-ticketing-system-integrations/slack-integration)



# 0. Slack 通知でできることと事前準備

## Slack 通知でできること

Slack 通知では、以下 2 種類のメッセージを送信します。

* 新たな脆弱性の検出アラート
* 既存の脆弱性の修正リリースのアラート

これらのメッセージはどちらも、デフォルト設定ではメールにて送信されています。

## 事前準備

設定作業を行う前に、以下 3 点の準備が必要です。

1. Snyk アカウント (まだであればFree プランへ[サインアップ](https://app.snyk.io)してください)
1. Slack ワークスペース (フリープランに[申し込み](https://slack.com/intl/ja-jp/get-started)できます)
1. アラート送付先の Slack チャンネル

3 番目の Slack チャンネルは、設定作業中に作成することも可能です。ただし、以下の設定手順では、チャンネルが作成済みであるという前提で説明しています。


# 1. Snyk の Slack インテグレーションを設定してアラートを送る

必要な作業時間は約 5 分。とても簡単です。以下の Step 1 から Step 8 まで、進めてください。

ただし、Slack ワークスペースへ Slack app を作成する権限を持っていない場合 ([Step 5](#step-5-%E3%83%9C%E3%82%BF%E3%83%B3slack-%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%82%92%E9%81%B8%E6%8A%9E-slack))、承認待ちが発生します。

## 設定ステップ (Step 1〜8)

### Step 1: Snyk Web UI へログイン [Snyk]

* [Slack Web UI](https://app.snyk.io) より Snyk にログインします (**図1-1**)

**図1-1:** Snyk ログイン画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/0a8e5d4c-5c19-9194-c245-b4bf1b8d16b8.png)


### Step 2: Snyk の Slack integration の設定画面を開く [Snyk]

* Snyk Web UI にて Slack integration の設定画面を表示します
* **Integrations** → **Notifications** → **Slack** の順に選択してください (**図1-2**)

**図1-2:** Slack integration 画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/80fea966-c134-5b2c-893f-dce296b0db37.png)

### Step 3: リンク「generate a WebHook URL」を選択 [Snyk]

* Snyk Web UI の Slack integration 設定画面にて、リンク **generate a WebHook URL** を選択します (**図1-3**)
* Step 8 でこの画面に戻るため、リンクを右クリックする等により新しいタブで開くことをオススメします

**図1-3:** Snyk の Slack integration 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/cb53628c-d1cd-7a34-6339-1f45bb114826.png)

### Step 4: Slack ワークスペースの選択 [Slack]

* 前ステップで開いた Slack の設定画面にて、**アラート送信先の Slack ワークスペース**を選択します (**図1-4**)
* 当該ワークスペースにサインインしていない場合は、このタイミングでサインインしてください

**図1-4:** Slack app 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/632490f3-3390-8c43-b6a5-0333631d4391.png)


### Step 5: ボタン「Slack に追加」を選択 [Slack]

* Slack の設定画面にて、**Slack に追加** ボタンを選択します (**図1-5**)
* なお、ワークスペースに Slack app を追加する権限がない場合、[追加の承認ステップ](#step-5-%E3%81%A7%E3%81%AE%E8%BF%BD%E5%8A%A0%E8%A8%AD%E5%AE%9A-%E5%BF%85%E8%A6%81%E3%81%AA%E5%A0%B4%E5%90%88)が必要です。

**図1-5:** Slack app 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/b2169acf-750d-6868-8ac1-1b6c97a1e5cb.png)

### Step 6: 送信先チャンネルを指定してボタン「Incoming Webhook インテグレーションの追加」を選択 [Slack]

* Slack の設定画面にて、ドロップダウンから **送信先チャンネル** を選択します (**図1-6**)
* 続いて **Incoming Webhook インテグレーションの追加** ボタンを選択します (**図1-6**)

**図1-6:** Slack app 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/dd8b3aff-2ad2-169c-7237-91fde113aa78.png)

### Step 7: 生成された Webhook URL をコピー [Slack]

* Slack 側設定が完了し、Webhook URL が生成されました
* Snyk 設定に入力するため、この **Webhook URL** をコピーします (**図1-7**)
* なお、送信先チャンネルにも Slack 側設定が完了したというメッセージが表示されているはずです (**図1-8**)

**図1-7:** Slack app 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/95d339e5-016f-3806-13e9-3bf90d9a7838.png)

**図1-8:** Slack メッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/ea98adc3-f590-aeeb-f691-3a4cddd8e528.png)


### Step 8: コピー済みの URL をペーストし、ボタン「Connect」を選択 [Snyk]

* Step 3 で使った Snyk Web UI に戻り、**Webhook URL** フィールドに Webhook URL をペーストした後、**Connect** ボタンを選択します (**図1-9**)
* 赤色の Disconnect ボタンが表示されたら設定完了です (**図1-10**)
* なお、送信先チャンネルにも Snyk 側設定が完了したというメッセージが表示されます (**図1-11**)

**これで設定は完了です！** 続いて、実際にアラートを受け取って確認しましょう。[「2. Slack にてアラートを確認する」](#2-slack-%E3%81%AB%E3%81%A6%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B)へ進んでください。

**図1-9:** Snyk の Slack integration 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/0afe20cb-6632-e39f-e3b7-6699b46f60db.png)

**図1-10:** Snyk の Slack integration 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/55e44626-fd04-559b-d568-078a1713a710.png)

**図1-11:** Slack メッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/24dd2404-d051-0a3f-ec71-3833c30942f6.png)

### Step 5 での追加設定 (必要な場合)

* **この追加設定は必要な場合だけ行うステップです**
* ワークスペースに Slack app を追加する権限がない場合、ワークスペース管理者 (またはオーナー) による承認が必要となります
* **Request to install Incoming Webhook for Snyk** モーダルに、管理者向けの依頼メッセージを入力した後、**Submit Request** ボタンを選択します (**図1-12**)
* Slack の設定画面には Request Submitted と表示されます (**図1-13**)。承認されるまで [Step 6](#step-6-%E9%80%81%E4%BF%A1%E5%85%88%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%83%9C%E3%82%BF%E3%83%B3incoming-webhook-%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%82%92%E9%81%B8%E6%8A%9E-slack) の設定はお待ちください
* 承認されると Slackbot よりメッセージ (**図1-14**) が送られ、Step 6 の設定を再開できます

**図1-12:** Slack 承認依頼
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/d90229ef-9c1c-4cb6-9196-1d5bcf48dbaf.png)

**図1-13:** Slack app 設定画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/dc5230a9-a11e-a9df-383b-0bd7a2f86679.png)

**図1-14:** Slack メッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/cf192f99-f58b-46e9-6bf1-5557074f6349.png)






# 2. Slack にてアラートを確認する

新たな脆弱性の検出時や、既存の脆弱性への修正リリース時にアラートが送られてきます。Slack にて確認してください。アラートを受け取るタイミングは、スキャン対象のプロジェクトにより変わります。24 時間程度、またはそれ以上かかることもありますので、お待ちください。

**図2-1**: 脆弱性の検出時のアラート (例)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/b838c69b-2ef2-83ca-70ab-9f0b3d94a10a.png)

**図2-2**: 修正リリース時のアラート (例)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/e25f0bb3-4f51-1342-4541-3425f48f398d.png)



# 3. メールでの通知をカスタマイズする

Slack でアラートを受信していると、メールでの通知を停止したくありませんか？
メール通知はカスタマイズ可能なので、ぜひ見直してみましょう。
カスタマイズは Organization とユーザー個別の 2 つのレベルで設定できます。ここではユーザーレベルでカスタマイズしてみます。

Snyk Web UI の画面左下のドロップダウンから、**Notification preferences** を選択します。その後、**Issue alert emails** で **Vulnerabilities** のチェックを外すと、メールでのアラートが停止されます。**(図3-1)**

ドキュメント: [**Managing notifications**](https://docs.snyk.io/features/user-and-group-management/notifications) - [**Change personal notification preferences**](https://docs.snyk.io/features/user-and-group-management/notifications#change-personal-notification-preferences)

**図3-1:** Notification preferences 画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89952/f93eb6ec-71cc-d774-0107-5f04935c59f3.png)



# まとめ

この記事では Slack 連携を設定して、Snyk からのアラートを Slack チャンネルでチェックできるようにしました。脆弱性対策には継続的な取り組みが大切。Snyk を使えば、脆弱性の監視も、脆弱性の修正作業も継続して実施できます。

それではまた👋 Happy Snyking!