CI/CDパイプラインにおけるSASTとDAST
パイプラインにSonarQube、Semgrep、Banditなどの静的解析と、OWASP ZAPによる動的スキャンを組み込みます。
「CI/CDパイプラインにおけるSASTとDAST」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
アプリケーションセキュリティテストとは
アプリケーションセキュリティテストは、コードが本番環境に到達する前に脆弱性を特定します。相補的な2つのアプローチとして、コードを実行せずに検査するSAST(静的アプリケーションセキュリティテスト)と、実行中のアプリケーションをテストするDAST(動的アプリケーションセキュリティテスト)があります。どちらもCI/CDパイプラインに統合して、セキュリティを左方移行できます。
SAST:静的アプリケーションセキュリティテスト
SASTは、コードを実行せずに、ソースコード、バイトコード、またはバイナリを分析してセキュリティ脆弱性を検出します。すべてのコミットで実行できるため、迅速なフィードバックが得られます。
長所:バグを早期に検出できる、コード全体をカバーできる、実行環境が不要です。
短所:誤検知率が高い、言語に依存する、実行時の設定問題を見逃します。
代表的なSASTツール
オープンソースのSASTツール:
# Semgrep (multi-language, rule-based):
semgrep --config auto ./src
# Bandit (Python):
bandit -r ./src
# ESLint security plugin (JavaScript):
npx eslint --plugin security ./src
# SpotBugs + FindSecBugs (Java):
mvn spotbugs:checkSASTのCI/CDへの統合
GitHub ActionsでSASTを実行するステップの例:
# .github/workflows/security.yml
- name: Run Semgrep
uses: returntocorp/semgrep-action@v1
with:
config: p/owasp-top-ten
auditOn: push
# Fail build if HIGH severity findings presentDAST:動的アプリケーションセキュリティテスト
DASTは、攻撃者をシミュレートし、外部から実行中のアプリケーションをテストします。認証の問題、セッション管理の欠陥、入力検証のバグなど、実行時にのみ明らかになる脆弱性を検出します。
長所:誤検知が少ない、言語に依存しない、実行時の設定問題を検出できることです。
短所:実行環境が必要で、コードパスを見逃す可能性があります。
代表的なDASTツール
CI/CD向けのDASTツール:
# OWASP ZAP (free, scriptable):
docker run -t owasp/zap2docker-stable zap-baseline.py -t https://staging.app.com
# Nikto:
nikto -h https://staging.app.com
# Nuclei (template-based):
nuclei -u https://staging.app.com -t cves/IAST:インタラクティブアプリケーションセキュリティテスト
IASTは、機能テスト中にコードの実行を監視するエージェントを使用して、実行時のアプリケーションに計測機能を組み込みます。SASTの精度とDASTの網羅性を組み合わせた手法です。例:Contrast Security、Seeker。言語固有のエージェントと、実行するテストが必要です。
セキュリティの左方移行
Shift leftとは、セキュリティテストを開発ライフサイクルのより早い段階、つまり独立したリリース前のゲートではなく、理想的には開発者のIDEやコミットの段階へ移行することです。早期に検出するほど、修正コストは低くなります。
コスト倍率:開発中のバグは1倍、ステージングでは10倍、本番環境では100倍です。
誤検知への対処
SASTツールでは誤検知が発生します。以下の方法で管理してください。
- 問題がないことを確認した箇所には、
nosec(Bandit)またはインラインの抑制コメントを使用してください - アプリケーションのコンテキストに合わせてルールセットを調整してください
- 抑制理由をコードコメントに記録してください
- 抑制設定を定期的に見直してください
CI/CDセキュリティパイプラインのアーキテクチャ
完全なセキュリティパイプライン:
- コミット前フック:シークレットスキャン(gitleaks)、SAST(semgrep)
- PRチェック:SASTの結果、依存関係スキャン(Dependabot)
- ステージングへのデプロイ:DASTスキャン(ZAP baseline)
- 本番環境:実行時監視(RASP、WAF)
AppSecの有効性の測定
CI/CDにおけるAppSecの主要な指標:
- セキュリティに関する調査結果の修正にかかる平均時間
- コード1,000行あたりの調査結果数
- 誤検知率(開発者の信頼に影響します)
- 脆弱性の流出率(ステージングと本番環境で発見された割合)
クイックチェック:SASTとDAST
ソースコードを実行せずに分析し、すべてのコミットでCIパイプラインから直接フィードバックを提供するセキュリティテストの種類はどれですか。
レッスンのまとめ
SASTはコードを静的に分析します(早期のフィードバック、誤検知が多い)。DASTは実行中のアプリケーションを動的にテストします(実行時の精度、環境が必要)。どちらもCI/CDパイプラインに組み込む必要があります。左方移行により、修正コストが最も低い段階で脆弱性を検出できます。代表的なツールには、SASTではSemgrepとBandit、DASTではOWASP ZAPとNucleiがあります。誤検知を管理するには、ルールセットを調整し、抑制設定を記録してください。
よくある質問
「CI/CDパイプラインにおけるSASTとDAST」レッスンは無料ですか?
はい。「CI/CDパイプラインにおけるSASTとDAST」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「CI/CDパイプラインにおけるSASTとDAST」で何を学びますか?
パイプラインにSonarQube、Semgrep、Banditなどの静的解析と、OWASP ZAPによる動的スキャンを組み込みます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CI/CDパイプラインにおけるSASTとDAST」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CI/CDパイプラインにおけるSASTとDAST
- ソフトウェア構成分析(SCA)
- シークレットスキャンとハードコードされた認証情報
- セキュリティチャンピオンと脅威モデリング