セキュリティテストの導入
1. 目的
CI/CDパイプラインの構築で構築したCI/CDパイプラインでは、静的解析・自動テスト・自動デプロイまでは構築できていますが、セキュリティ観点の検査は組み込まれていません。このままでは、セキュリティ上問題のあるリソースがシステムに組み込まれても検知できません。
そこで、CI/CDパイプラインにセキュリティテストを導入してみましょう。
2. やるべきこと
- CI/CDパイプラインに実装すべきセキュリティテストと、利用する技術スタックを検討してみましょう
- 実際にCI/CDパイプラインに組み込んでみましょう
- 簡単な脆弱性を意図的に埋め込み、テストで検知できるか確認してみましょう(すべてを網羅する必要はなく、代表的なケースに絞って構いません)
3. 余裕があれば
- 運用中のリソースに対する継続的な脆弱性監視まで設計してみましょう
4. ツール・機能の候補
※ 以下のすべてを使う必要はなく、目的に合わせて適切なものを選んでみましょう。ここに無いツールを使っても構いません。
| ツール・機能名 | 概要 |
|---|---|
| Semgrep | 多言語対応のソースコード脆弱性スキャナ。SQLインジェクションや任意コード実行などのパターンを検出 |
| CodeQL | GitHub純正のソースコード解析。Code Scanningタブと統合される |
| Bandit | Python専用のソースコード脆弱性スキャナ |
| Trivy | 依存パッケージ・コンテナイメージ・IaCコードなどを横断的にスキャン |
| Dependabot | 依存パッケージの脆弱性を検出し、修正のPRを自動で作成 |
| Snyk | 多言語対応の商用セキュリティスキャンサービス |
| OSV-Scanner | Google製のOSVデータベースを使った依存関係スキャナ |
| Checkov | TerraformやCloudFormation等のIaCコードから設定不備を検出 |
| GitHub Secret Scanning / Push Protection | APIキーなどの機密情報のコミット・Pushを検出・ブロック |
| gitleaks | OSSの機密情報検出ツール。CIから実行可能 |
| ECR Enhanced scanning | コンテナイメージのレジストリ上での継続的な脆弱性スキャン |
| Amazon Inspector | EC2 / Lambda / ECRに対する継続的な脆弱性監視 |
| OWASP ZAP | 動作中のWebアプリに対するDASTツールの定番 |
5. 目安期間
2〜3週間