はじめに
KDDIアジャイル開発センター(KAG)では、クラウド型Web診断ツール「AeyeScan」を複数のアジャイル開発プロジェクトにわたって運用しております。
複数プロジェクトで活用するにあたり、運用面での工夫を行いました。
本記事ではその取り組みを紹介します。
※記事内の図解画像は生成AIを活用して作成しております。
※本記事はエーアイセキュリティラボ社へ内容を確認の上で投稿しております。
導入背景
AeyeScanとは
AeyeScanはAIを活用したクラウド型Web診断ツールです。
AIによるクローリングでログインやフォーム入力を含む広範囲の診断が自動でできる特徴があります。
【参考】以下のページが簡潔で参考になります
AeyeScan製品紹介(NVC)
DevSecOpsの推進
スクラムによるアジャイル開発案件が主体の弊社では、開発スピードを落とすことなくセキュリティを担保していく取り組みが求められます。
AeyeScanによるWeb脆弱性診断の定期実行により、既存の開発サイクルを変えることなく、一定水準のセキュリティチェックを自動化しております。
認証・評価制度への対応
SOC等の認証・評価制度において、定期的な脆弱性診断を求められるプロダクトがあります。
人力による脆弱性診断は高コストである上に、手順ミスにより正しく診断ができていないケースがあります。
AeyeScanによる自動化でコスト削減と安定的な定期実行を両立しております。
使い放題の年間ライセンス
AeyeScanの年間ライセンスは診断対象となるドメイン登録および診断の実行が無制限のため、複数のプロジェクトにおいて活用することで大きなコストメリットを得ることができます。
複数のプロジェクトでのガバナンスの効いた運用のため、「一時ユーザーの運用」「実行スケジュールの一元管理」を行っております。
一時ユーザーの運用
AeyeScanへログインする契機は新たな診断対象の登録や重要度の高い脆弱性を検知した際など、スポット的な利用が中心です。
不要なユーザーが棚卸しされずに残存することを防ぐため、定常的なユーザーではなく一時的なユーザーを運用しております。
- 利用者がSlack AppにAeyeScanユーザーの発行を申請
- AeyeScan APIでユーザーを作成
- Slack AppがDMでID/初期PWを通知
- 申請時に指定した有効期限までアクティブ
- 有効期限超過後、日次バッチでユーザーを自動削除
実行スケジュールの一元管理
複数プロジェクトの診断が輻輳することを防ぐため、実行スケジュールを一元管理しております。
- 定期実行時にコピーするテンプレートとなるスキャン情報をAeyeScan上で作成
- 毎月第n X曜日に実行する対象を定義
- AeyeScan APIを利用して巡回・診断を定期実行
- 新規サイト追加時の操作と競合しないよう、起動時刻を深夜0時に固定
【参考】同時実行に関する仕様は以下を参照
巡回やスキャンは何件まで同時に実行できますか?
AeyeScanでは、巡回やスキャンを並行で実行できる最大数を、「同時実行可能数」によって制御しております。
Slackへの結果通知
不必要な常設アカウントを作成しないため、結果の通知は各個人宛のメールではなくSlackに集約しております。
AeyeScanからWebhookで診断結果を受け取り、通知が必要なケースを判定した上でSlackに担当者へのメンションと共に通知する構成としております。
アプリ構成
これらの仕組みを弊社では以下のようなアーキテクチャで実装しております。
PythonのLambdaを中心に構成しており、Bolt for Pythonを利用してSlackと連携しております。
インフラはTerraformで管理しており、定義管理している実行スケジュールに基づいてAmazon EventBridge SchedulerがApplyされる仕様としております。
Configファイルでの定義管理
各種情報はGit上のConfigファイルで定義を管理しております。
一時ユーザーの権限制御やアラート検知時の通知先として利用すると共に、Amazon EventBridge Schedulerが定義に合わせて作成されます。
一時ユーザーの権限管理を行うため、診断対象ごとにグループを作成して、グループにドメイン・Slackユーザー・実行スケジュールを関連付けております。
さいごに
AeyeScanのWebhook・APIを活用し、セキュリティレベルを高めながら複数プロジェクトで効率的に運用する取り組みを紹介しました。
現状は一部の操作がAPIに対応していないため、事務局の手運用が一部発生しております。
今後AeyeScanのAPI対応が進めば、さらなる自動化を目指したいと考えております。





