第7回「AeyeScan+zapierを使ってbacklogに危険度が高い脆弱性を自動で課題登録する」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/3a4710b2-54d5-b3f2-3be8-46dbd3001bce.png)


SaaS型Webアプリ診断ツール「AeyeScan」を運営している株式会社エーアイセキュリティラボが、セキュリティテストの自動化、脆弱性診断の内製化、AI/機械学習などの技術情報の共有を目的とした記事です。
AeyeScanの情報はこちら https://www.aeyescan.jp
エーアイセキュリティラボの情報はこちら、https://www.aeyesec.jp

[![2022-155641.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/dd3f69d5-879a-ed11-d6ac-353a85523c43.png)](https://www.aeyescan.jp)

こんにちは。株式会社エーアイセキュリティラボ　カスタマーサクセス担当　日髙です。
こちらの記事では脆弱性診断ツール「AeyeScan」の機能や、脆弱性診断内製化のコツ、CIツールを使ったDevSecOps等を紹介していきます。

[前回](https://qiita.com/AeyeScan/items/3cc6f90148d1873957c9)はGoogle Apps Scriptを使ってスキャンの定期実行を行う手順について紹介しました。
第7回目「AeyeScan+zapierを使ってbacklogに、危険度が高い脆弱性を自動で課題登録する」は以下のような内容でお送りします！

# 目次
[■なぜ脆弱性診断の自動化が必要?](#なぜ脆弱性診断の自動化が必要)
[■zapierの紹介](#zapierの紹介)
[■backlogの紹介](#backlogの紹介)
[■作るものの説明](#作るものの説明)
[■自動化タスクの作成](#自動化タスクの作成)
[・【backlog】課題登録用のメールアドレスを設定する](#backlog課題登録用のメールアドレスを設定する)
[・【zapier】「Zap」を作成する](#zapierzapを作成する)
[■スキャンの実行](#スキャンの実行)
[■実行結果の確認](#実行結果の確認)
[■利用上の注意](#利用上の注意)
[■おわりに](#おわりに)


# ■なぜ脆弱性診断の自動化が必要?
システム開発において、開発と運用を短い周期で繰り返していく手法をDevOpsと呼び、生産性を上げる手法として広く採用されています。
システム開発のもう一つの重要な要素としてセキュリティ品質の担保がありますが、DevOpsのサイクルにセキュリティ診断を組み込んだものをDevSecOpsと呼びます。

DevSecOpsを実現するためには、システムの開発と運用のサイクルに合わせて高い頻度でセキュリティ診断を行う必要があります。
このような高い頻度でのセキュリティ診断を実現するための手法の１つとして、CIツールなどによるセキュリティ診断の自動化が有効になります。

# ■zapierの紹介
zapierとは、様々なサービスを連携させて、タスクの自動化を行うツールです。
例えば、Slackに来た通知をLineに連携するというタスクをzapierに設定することで自動で行ってくれます。また、コードを記述することなく容易に設定が可能です。

# ■backlogの紹介
backlogとは、様々な企業で利用されているタスク・プロジェクト管理ツールで、株式会社ヌーラボが提供しています。backlogでは、課題登録をメールから行う機能が提供されており、今回そちらを利用して課題登録を行います。

# ■作るものの説明
今回は、先日AeyeScanに追加された、「Custom Webhook通知設定」を利用して、zapierにWebHookを送信し、スキャン完了後に脆弱性が存在していれば、backlogに登録するという自動化タスクを作成します。

処理の流れは以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/b5205563-16ee-b06b-7e62-1b6487b85f9f.png)

では早速作っていきましょう。

# ■自動化タスクの作成
## ・【backlog】課題登録用のメールアドレスを設定する
backlogへの課題登録を自動で行うため、事前に、課題登録用のメールアドレスを発行します。
設定方法は、backlogの「プロジェクト設定」＞「インテグレーション」＞「メールによる課題登録」より設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/36a7bdff-278c-1080-e725-61156f70987b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/f5a34170-1b56-9140-7420-c6333ffba6eb.png)

※ここでは、設定名を「AEYE通知用」として設定しました。

## ・【zapier】「Zap」を作成する
次に、zapierにて自動化タスクを作成します。zapierでは、自動化タスクのことを「Zap」と呼んでいます。

zapierにログインし、画面左上の「Create Zap」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/c7c3f475-ec1c-2f9c-655b-2a1593b31db7.png)

### 「トリガー」の作成
まずは、「トリガー」を作成します。
「トリガー」では、何が発生したらタスクを行うのかを設定します。

「1.trigger」画面の「App Event」から「Webhooks by Zapier」を選択します。
※「Webhooks by Zapier」は有償プランの登録が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/287656e2-1d58-62dd-a588-ab6bfec244d5.png)

「Trigger Event」で「Catch Hook」を選択し、「Continue」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/17f95007-2ac2-6e14-cf46-a47e9392a7f7.png)

次の画面で、「Custom Webhook URL」が表示されるので、値をコピーし、「Continue」をクリックします。
※このURLに対して、AeyeScanからのCustom Webhookが送信されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/abbb77bf-8085-349f-7428-afe645adada5.png)

### AeyeScanの「Custom Webhook」を作成
別タブでウィンドウを開き、AeyeScanにログインし、「スキャンメニュー」＞「Custom Webhook通知設定」から「+Custom Webhook新規登録」をクリックします。
以下の画面の、「Webhook URL」に先ほどコピーしたzapierの「Custom Webhook URL」を貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/2fdf02f9-061b-630a-ddb1-fe459305637f.png)

今回は、スキャン情報、ステータス、各深刻度毎の検出数が必要なため
「Webhook Body」は以下のように設定しました。

```json
{
 "scanName":"$scanName",
 "scanId":"$scanId",
 "status":"$status",
 "message":"$message",
 "critical":"$critical",
 "high":"$high",
 "medium":"$medium",
 "low":"$low"
}
```

※利用可能な変数は、設定画面からご確認可能です。また、Bodyには必ず$messageを含めるようにしてください。

#### Webhookのアクティベーション

Webhook作成後は、有効状態が「無効」となっているためアクティベーションを行います。

zapierの画面に戻り、「Test trigger」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/dcc0b2ce-8cda-8b00-fb5f-ded7a03bf4a7.png)

以下の通り、AeyeScanから送られた、WebHookの内容が表示されるので、「message」内のアクティベーション用URLをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/7ed00eec-f88d-995f-9612-497a9fbc64a6.png)

先ほど、AeyeScanの「Custom Webhook」の設定を行ったブラウザを開き、アクティベーション用URLにアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/5eec95bf-2648-de1f-d141-a362a88c69c6.png)

再度、AeyeScanの「Custom Webhook」の設定画面を開くと「有効状態」が「有効」となっていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/3671e981-7cf4-5d0a-9f4b-6c5958c3b5ec.png)

### 「フィルター」の作成
次に「フィルター」を作成します。
「フィルター」では、どういった条件の時に処理を実行するかを設定します。

「2.Action」の画面で右側の「Filter」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/44edfd67-7969-76cc-fa29-f87d391eaca1.png)

以下の画面にて、条件を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/58239288-9770-2eb6-08b3-9b8f921601da.png)

複数条件設定したい場合は、「+And」や「+Or」ボタンをクリックして、条件を増やすことができます。

また、左側の「Choose field」には、設定項目としてWebHookパラメータを設定することができ、
「Choose field」の入力リストを展開すると、取得したWebHookパラメータが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/4ab436aa-8804-de9d-64f3-f0ef67119097.png)

今回は、「脆弱性が存在したら」という条件のため、以下を条件として設定します。
・スキャンが完了している
・深刻度「Low」以上の検出数が「0」件より大きい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/9e00ce30-f6d6-ebbd-542e-2f8b993d6654.png)

上記を設定し、「Continue」をクリックします。

### 「アクション」の作成
次に「アクション」を作成します。
アクションは、何をするかを設定します。
今回は、backlogへの課題登録のためのメールを送信します。

「Action」画面の「App Event」にて、「Gmail」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/4793d33a-7760-d4a3-0622-e6aa6b269b2d.png)

「Action Event」にて、「Send Email」を選択し「Continue」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/2373baba-1384-cc32-4667-ef659b986e7c.png)

次に、Googleアカウントとの連携を行います。
「Choose an account...」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/f1cb47b2-b2f4-fce0-6e6f-f56a7d1a6cdc.png)

「+Connect a new account」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/93a7eda3-474a-8e03-5400-bd780ec73731.png)

使用するアカウントを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/8a4da9da-da09-1866-b580-18459a440790.png)

使用するアカウントを確認し、「Continue」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/e016465f-17ed-9ce8-902c-ad9bfc7d28ee.png)


メールの送信先、件名、本文などを設定します。
ここでも、Webhookパラメータを設定することが可能です。

「TO」に[【backlog】課題登録用のメールアドレスを設定する](#【backlog】課題登録用のメールアドレスを設定する)で作成した課題登録用のメールアドレスを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/0c168e82-fde0-00e7-2b87-7e8428ecf969.png)

「Subject（件名）」と「Body（本文）」は以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/a4a1a665-ec8b-2c96-0c89-83560e0afe33.png)

件名や本文は課題の内容としてbacklogに登録されるので、ご利用環境に併せてご設定ください。

設定後、テストメール送信画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/4c5e882d-5fb4-e6c6-9d40-17f5ddae5e9b.png)

テストメール送信後、以下の画面が表示されるので、「Turn on Zap」をクリックすることで、作成したZapが有効状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/15c934ad-0a64-d495-c8f4-73252168c825.png)

# ■スキャンの実行
スキャンを実行し、作成したZapが動作するかを確認します。

AeyeScanにて新規スキャンを作成します。
スキャン作成時の通知設定にて、以下のとおり作成した「Custom Webhook」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/6d531b55-21c2-ebb6-1adc-f3ffc2fa56cf.png)

スキャン作成について詳しくは[第1回](https://qiita.com/AeyeScan/items/f7c647db9365ff8b2ffb)の記事をご覧ください。

スキャン実行を行い、完了するまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/4f2bf981-4b09-fcc2-1cd5-c37713530c7d.png)

# ■実行結果の確認

## zapierの確認
zapierにて作成したZapのhistoryを表示します。
以下の通り、4回タスクが実行されていますが、最後の一回のみActionが実行され、「Success」となっていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/9995a013-ac98-e59e-09fb-0fef7a1f7b5c.png)

## backlogの確認

backlogにて課題が登録されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/23e9141b-75fd-2514-77cd-7f3f8b3b70dc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/bce0a7d5-9410-b189-2230-aa626f1fc340.png)


# ■利用上の注意
今回、zapierの「トリガー」として利用した「Webhooks by Zapier」機能や複数のアクションを設定する（マルチステップ）機能は、有償プランとなります。
業務にて継続的に利用する場合は、有償プランでのご利用が必要です。

# ■おわりに
今回は、zapierを利用して、脆弱性が存在していれば、backlogに登録するという自動化を行いました。
タスク登録の内容や条件は、今回ご紹介した手順をカスタマイズして利用可能ですので、ぜひご活用ください。
また、今回は、backlogへのタスク登録を行いましたがzapierから別のタスク管理ツールへの連携も可能ですので、手順をカスタマイズしてご活用ください。

AeyeScanのトライアル、脆弱性診断の自動化のご相談は[こちら](https://www.aeyescan.jp/)

[![2022-155641.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422105/dd3f69d5-879a-ed11-d6ac-353a85523c43.png)](https://www.aeyescan.jp)