変更要約: AZ-400 第4章を深掘り(比較表・シナリオ・FAQ・ひっかけ・深掘り段落を各節に追加、図を日本語版に対応)
4.1パイプラインへのセキュリティ統合(DevSecOps)
セキュリティの左シフト——SAST/DAST、依存関係スキャン、コンテナイメージスキャン、IaC スキャン、GitHub Advanced Security——を理解します。パイプラインで早期に脆弱性を検出します。
DevSecOps はセキュリティを左(早期)にシフトします。パイプラインに各種スキャンを組み込み、本番前に脆弱性を止めます。
4.1.1スキャンの種類
- SAST:静的解析でソースコードの脆弱性を検出(ビルド前/中)。
- 依存関係スキャン(SCA):OSS ライブラリの既知の脆弱性を検出。
- コンテナ/IaC スキャン:イメージの脆弱性やテンプレートの設定不備を検出。
- DAST:動的解析で稼働中アプリの脆弱性を検出(デプロイ後)。
「ソースの静的解析=SAST」「OSS 依存の既知脆弱性=依存関係スキャン(SCA)」「稼働中アプリの動的解析=DAST」「コンテナ/IaC の設定不備=イメージ/IaC スキャン」「GitHub での統合=Advanced Security(コード/シークレット/依存)」 は AZ-400 で頻出です。早期(左)に検出するほど修正コストが下がります。
AZ-400 の DevSecOps は「セキュリティをパイプラインに織り込み、種類の違うスキャンを適所で回す」設計を問います。SAST(静的解析)はソースコードを実行せずにインジェクションや安全でない API 利用などを検出し、PR/ビルドの早い段階で止めます。依存関係スキャン(SCA)は OSS ライブラリの既知脆弱性(CVE)とライセンス問題を検出し、Dependabot 等で自動 PR を出します。コンテナイメージスキャンはベースイメージや層の脆弱性を、IaC スキャンは Bicep/Terraform/ARM の設定不備(公開ストレージ、過剰権限など)を検出します。これらはコードを「動かさず」に見るため左(早期)に置けます。一方 DAST(動的解析)はデプロイ後の稼働中アプリに実際のリクエストを送って実行時の脆弱性を見つけるため、ステージング等での実施になります。GitHub では GitHub Advanced Security(コードスキャン=CodeQL、シークレットスキャン、Dependabot/依存関係レビュー)で統合し、Azure DevOps でもマーケットプレースの拡張や Microsoft Defender for DevOps(Defender for Cloud の DevOps セキュリティ)で横断管理します。重大度の高い検出はパイプラインを失敗(ブロック)させ、結果はセキュリティダッシュボードに集約。設計の要は、「動かさない検査は左(SAST/SCA/IaC/イメージ)、動かす検査は右(DAST)」を適所に置き、しきい値でゲートして本番前に脆弱性を止めることです。
| スキャン | 対象/タイミング | 検出するもの |
|---|---|---|
| SAST | ソース・ビルド前/中(左) | コードの脆弱性(インジェクション等) |
| 依存関係スキャン(SCA) | OSS 依存・ビルド時 | 既知の CVE・ライセンス問題 |
| コンテナ/IaC スキャン | イメージ/テンプレート・ビルド時 | イメージ脆弱性・設定不備 |
| DAST | 稼働中アプリ・デプロイ後(右) | 実行時の脆弱性 |
シナリオ:脆弱なコードや既知 CVE を含む依存が本番に出てしまうのを、パイプラインで防ぎたい。→ PR/ビルド段階に SAST(CodeQL 等)+依存関係スキャン(Dependabot/SCA)+IaC スキャン+コンテナイメージスキャンを組み込み、重大度が高ければビルドを失敗させてマージ/デプロイをブロック。ステージングでは DAST で実行時を確認。検出は GitHub Advanced Security(または Defender for DevOps)のダッシュボードに集約して継続管理します。
FAQ:SAST と DAST はどう違う? SAST はコードを実行せずソースを静的に解析し、開発の早い段階(PR/ビルド)で内部の欠陥(インジェクション、安全でない API 等)を見つけます。DAST はデプロイ後の稼働中アプリに外部からリクエストを送り、実行時/構成の脆弱性を見つけます。両者は補完関係で、左に SAST/SCA、右(ステージング)に DAST、が定石です。
ひっかけ:「OSS ライブラリの既知脆弱性を検出」に SAST を選ぶのは誤り——それは依存関係スキャン(SCA)の役割です。SAST は自分のソースコードの欠陥を見ます。また「稼働中アプリの実行時脆弱性」を SAST で賄おうとするのも誤りで、それは DAST。スキャンの種類と対象(自コード/依存/イメージ/IaC/稼働中)を正しく対応づけます。
4.1.2この節のまとめ
- 左シフト=SAST/依存スキャン/IaC・コンテナスキャン(ビルド時)+DAST(デプロイ後)
- GitHub 統合=Advanced Security(コード/シークレット/依存関係)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. ビルド段階でソースコードの脆弱性(インジェクション等)を静的に検出したい。何を使いますか?
Q2. 利用している OSS ライブラリに既知の脆弱性がないか、パイプラインで自動チェックしたい。何を使いますか?
Q3. デプロイ後の稼働中アプリに対して、実際にリクエストを送って脆弱性を検出したい。何を使いますか?

