# 2026年のDevOpsパイプラインセキュリティ:SAST、DAST、サプライチェーンと面接対策 > DevOpsパイプラインセキュリティの2026年最新ベストプラクティス。SAST、DAST、SCAの統合方法、SBOM生成とSLSAプロベナンス、そしてDevSecOps面接質問への対策を解説します。 - Published: 2026-09-15 - Updated: 2026-09-15 - Author: Anthony Fillion-Maillet - Reading time: 12 min --- DevOpsパイプラインのセキュリティは、プリコミットフックから本番環境の監視まで、CI/CDワークフローのすべての段階にセキュリティチェックを組み込むことを求めています。[Datadog State of DevSecOps Report 2026](https://www.datadoghq.com/state-of-devsecops/)によると、87%の組織が少なくとも1つの既知の悪用可能な脆弱性を持つサービスを運用しており、ソフトウェアサプライチェーン攻撃による世界経済への被害は年間800億ドルを超えています。 > **セキュリティツールの優先順位** > > シークレット検出から始めることを推奨します(影響度が最も高く、誤検出率が最も低い)。次にSCAで既知のCVEを検出し、チューニング済みのSAST、IaCスキャン、最後にDASTを追加します。各ツールは次のツールを追加する前に価値を実証する必要があります。 ## SAST:マージ前に脆弱性を検出する静的解析 静的アプリケーションセキュリティテスト(SAST)は、コードを実行せずにソースコードを解析します。ツールはコードベースを解析し、抽象構文木を構築し、既知の脆弱性シグネチャとパターンマッチングを行います。すべてのプルリクエストでSASTを実行することで、SQLインジェクション、XSS、ハードコードされた認証情報をメインブランチに到達する前に検出できます。 Semgrepは2026年においてデファクトスタンダードのオープンソースSASTツールとなっています。正規表現ベースのスキャナーとは異なり、Semgrepはコード構造を理解し、YAMLでカスタムルールをサポートします。 ```yaml # .github/workflows/sast.yml name: SAST Scan on: pull_request: branches: [main, develop] jobs: semgrep: runs-on: ubuntu-latest container: image: semgrep/semgrep:latest steps: - uses: actions/checkout@v4 - name: Run Semgrep run: semgrep scan --config=auto --sarif --output=semgrep.sarif - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: semgrep.sarif ``` `--config=auto`フラグは、検出された言語に一致するコミュニティルールを読み込みます。SARIF出力はGitHub Securityタブと統合され、検出結果を時系列で追跡できます。 ## DAST:静的解析では見つけられない脆弱性を検出するランタイムテスト 動的アプリケーションセキュリティテスト(DAST)は、実行中のアプリケーションを攻撃して、ランタイムでのみ発現する脆弱性を検出します。認証の不備、認可の欠陥、ビジネスロジックのバグは、実際のHTTPリクエストを行わなければ検出できません。SASTでは管理者エンドポイントに適切なアクセス制御がないことを検出できませんが、DASTは認証情報なしでアクセスを試み、脆弱性を報告します。 [OWASP ZAP](https://www.zaproxy.org/)は、最も広く利用されているオープンソースDASTツールです。2026年初頭にリリースされたZAP 3.0では、GraphQLとgRPCスキャンのネイティブサポートが追加されました。 ```yaml # .github/workflows/dast.yml name: DAST Scan on: deployment: types: [created] jobs: zap-scan: runs-on: ubuntu-latest steps: - name: ZAP Full Scan uses: zaproxy/action-full-scan@v0.12.0 with: target: ${{ secrets.STAGING_URL }} rules_file_name: '.zap/rules.tsv' cmd_options: '-a -j -l WARN -z "-config api.disablekey=true"' - name: Upload Report uses: actions/upload-artifact@v4 with: name: zap-report path: report_html.html ``` DASTはライブターゲットが必要なため、デプロイ後に実行されます。ステージング環境がテスト対象となり、本番環境はスキャントラフィックから隔離されます。 > **本番環境でのDAST** > > 本番環境に対してアクティブなDASTスキャンを実行すると、レート制限のトリガー、データの破損、セキュリティ監視のアラート発生のリスクがあります。本番環境の構成をミラーリングしたステージング環境を使用してください。 ## SCA:既知の脆弱性を検出する依存関係スキャン ソフトウェア構成分析(SCA)は、[National Vulnerability Database](https://nvd.nist.gov/)やGitHub Advisory Databaseなどの脆弱性データベースに対して依存関係をスキャンします。単一の脆弱な推移的依存関係がアプリケーション全体を危険にさらす可能性があります。2026年のDatadogレポートによると、42%のサービスがもはや積極的にメンテナンスされていないライブラリに依存しています。 Trivyは、コンテナ、ファイルシステム、gitリポジトリの脆弱性を単一のバイナリでスキャンします。CycloneDXおよびSPDX形式でSBOM出力を生成できます。 ```yaml # .github/workflows/sca.yml name: Dependency Scan on: push: branches: [main] schedule: - cron: '0 6 * * *' # Daily at 6 AM jobs: trivy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@0.28.0 with: scan-type: 'fs' scan-ref: '.' format: 'sarif' output: 'trivy-results.sarif' severity: 'CRITICAL,HIGH' - name: Upload Trivy scan results uses: github/codeql-action/upload-sarif@v3 with: sarif_file: 'trivy-results.sarif' ``` スケジュールされた日次スキャンは、コードの変更がなくても新しく公開されたCVEを検出します。CRITICALとHIGH重大度にフィルタリングすることで、低リスクの検出結果によるアラート疲れを防止します。 ## サプライチェーンセキュリティ:SBOMとSLSAプロベナンス [EUサイバーレジリエンス法](https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act)は、2026年9月から報告義務が発効し、EU内で販売される製品にソフトウェア部品表(SBOM)の生成を義務付けています。SBOMは、直接的な依存関係、推移的な依存関係、およびそれらのバージョンを含む、ソフトウェア内のすべてのコンポーネントをリストアップします。 [SLSA](https://slsa.dev/)(Supply-chain Levels for Software Artifacts)は、ソフトウェアがどのようにビルドされたかを検証することでSBOMを補完します。SBOMは「このソフトウェアにはどのコンポーネントが含まれているか?」に回答し、SLSAは「ビルドプロセスは信頼できるか?」に回答します。 ```yaml # .github/workflows/supply-chain.yml name: Supply Chain Security on: push: tags: - 'v*' jobs: build-with-provenance: runs-on: ubuntu-latest permissions: contents: read id-token: write attestations: write steps: - uses: actions/checkout@v4 - name: Build container image run: docker build -t myapp:${{ github.ref_name }} . - name: Generate SBOM uses: anchore/sbom-action@v0.17.0 with: image: myapp:${{ github.ref_name }} format: cyclonedx-json output-file: sbom.json - name: Sign with Cosign uses: sigstore/cosign-installer@v3.7.0 - name: Sign image and attach SBOM run: | cosign sign --yes myapp:${{ github.ref_name }} cosign attach sbom --sbom sbom.json myapp:${{ github.ref_name }} cosign sign --yes --attachment sbom myapp:${{ github.ref_name }} ``` SigstoreのCosignは、Fulcio認証局に裏付けられたキーレス署名を使用してアーティファクトに署名します。署名はアーティファクトをそれを生成したCIワークフローにバインドし、イメージが信頼されたパイプラインから来たことを検証できます。 ## シークレット検出:最初の防衛ライン ハードコードされたシークレットは、コードベースで最も一般的なセキュリティ検出結果です。バージョン管理にコミットされたAWSアクセスキー、データベースパスワード、APIトークンは、あらゆる規模で侵害を引き起こしてきました。シークレット検出はプリコミットで実行され、認証情報がリポジトリに入る前にブロックします。 [Gitleaks](https://github.com/gitleaks/gitleaks)は、正規表現パターンとエントロピー分析を使用してシークレットを検出します。プリコミットフックにより、シークレットがコミットされることを防止します。 ```yaml # .pre-commit-config.yaml repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.21.2 hooks: - id: gitleaks args: ['--verbose'] ``` ```yaml # .github/workflows/secrets.yml name: Secrets Detection on: pull_request: jobs: gitleaks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Gitleaks scan uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` `fetch-depth: 0`オプションは完全な履歴をクローンし、Gitleaksが最新のコミットだけでなく、PRのすべてのコミットをスキャンできるようにします。 ## DevSecOps面接質問:採用担当者が問う内容 DevSecOps面接では、セキュリティの知識と実践的なCI/CD経験の両方が評価されます。以下の質問は、シニアDevOpsおよびプラットフォームエンジニアリング職の2026年の面接で頻繁に出題されています。より多くのパイプラインセキュリティに関する質問は、[CI/CDパイプラインセキュリティ面接モジュール](/technologies/devops/interview-questions/cicd-pipeline-security)で確認できます。 ### 「既存のパイプラインにシフトレフトセキュリティをどのように実装しますか?」 シフトレフトセキュリティは、テストを開発サイクルの早い段階に移動させることです。実践的な実装には、シークレット検出のプリコミットフック、プルリクエストでのSASTスキャン、ビルドフェーズでのSCAチェックの追加が含まれます。重要なのは段階的な導入です:シークレット検出から始めます(誤検出率が最も低く、シグナルが最も高いため)。次に既知のCVE用のSCAを追加し、SASTルールをチューニングしてノイズを減らしてからブロッキングチェックとして有効にします。 ### 「SASTとDASTの違いを説明してください。それぞれどのような場合に使用しますか?」 SASTは、実行なしでソースコードを解析します。コード構造に対するパターンマッチングにより、SQLインジェクション、XSS、安全でない暗号化を検出します。SASTはコードのみを必要とするため、すべてのPRで早期に実行されます。 DASTは実行中のアプリケーションを攻撃します。認証バイパス、アクセス制御の不備、ランタイムでのみ発現するインジェクション脆弱性を検出します。DASTはステージング環境に対してデプロイ後に実行されます。 両者は互いを補完します。SASTはマージ前にコーディングエラーを検出し、DASTはデプロイされたアプリケーションが安全に動作することを検証します。成熟したパイプラインでは両方を実行します。 ### 「SBOMとは何ですか?なぜ必要とされていますか?」 ソフトウェア部品表は、正確なバージョンを含む直接的および推移的な依存関係を含め、ソフトウェア内のすべてのコンポーネントをリストアップします。EUサイバーレジリエンス法などの規制要件により、2026年9月からEU市場に参入する製品にSBOM生成が義務付けられています。 実務的には、SBOMは迅速なインシデント対応を可能にします。新しいCVEが公開された場合、セキュリティチームはすべてのリポジトリを手動でスキャンする代わりに、SBOMデータベースにクエリを実行して脆弱なコンポーネントを実行しているすべてのサービスを特定できます。 ### 「セキュリティツールでアラート疲れを防ぐにはどうしますか?」 アラート疲れは、シグナル対ノイズ比が低すぎるために開発者がセキュリティの検出結果を無視するときに発生します。防止には、ブロッキングゲートを有効にする前に各ツールをチューニングする必要があります。SASTについては、コードベースで誤検出を生成するルールを無効にし、クリーンアップ後に段階的に有効にします。SCAについては、既知のエクスプロイトを持つCRITICALおよびHIGH重大度の検出結果に焦点を当てます。DASTについては、将来のスキャンから誤検出を除外するようにベースラインスキャンを構成します。 追跡すべき指標は、実際の脆弱性の修正までの時間です。その数値が増加している場合、開発者はアラートを無視しています。 > **面接対策** > > これらの質問は実践的な経験をテストします。特定のツール、構成の決定、実装前後の指標を含む実際のパイプラインからの例を準備してください。 ## コンテナとランタイムセキュリティ コンテナイメージスキャンは、デプロイ前に脆弱性を検出します。ランタイムセキュリティは、本番環境のコンテナを異常な動作について監視します。この組み合わせは、既知の脆弱性(ベースイメージのCVE)と未知の脅威(侵害されたコンテナ、クリプトマイナー)の両方に対処します。 Trivyはビルドパイプラインの一部としてイメージをスキャンします。[Falco](https://falco.org/)はeBPFを使用してランタイムの動作を監視します。 ```yaml # .github/workflows/container-security.yml name: Container Security on: push: branches: [main] jobs: scan-image: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build image run: docker build -t myapp:${{ github.sha }} . - name: Scan image uses: aquasecurity/trivy-action@0.28.0 with: image-ref: myapp:${{ github.sha }} format: 'table' exit-code: '1' severity: 'CRITICAL' ignore-unfixed: true ``` `ignore-unfixed: true`フラグは、利用可能なパッチがない脆弱性をスキップします。これにより、現在修正できないCVEのためにデプロイがブロックされることを防止します。 ランタイムセキュリティについては、Falcoルールが実行中のコンテナ内の疑わしいアクティビティを検出します。[コンテナサプライチェーンセキュリティモジュール](/technologies/devops/interview-questions/container-supply-chain)では、イメージ署名とアドミッションコントロールについて詳しく解説しています。 ## IaCセキュリティ:TerraformとKubernetesマニフェストのスキャン Infrastructure as Codeは、構成レイヤーでセキュリティリスクをもたらします。過度に許容的なIAMポリシー、パブリックアクセス可能なS3バケット、暗号化されていないデータベースは、IaCテンプレートの安全でないデフォルトから生じます。 [Checkov](https://www.checkov.io/)は、Terraform、CloudFormation、Kubernetes、Helm、Dockerfileの誤設定をスキャンします。 ```yaml # .github/workflows/iac-scan.yml name: IaC Security Scan on: pull_request: paths: - 'terraform/**' - 'k8s/**' - 'helm/**' jobs: checkov: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Checkov uses: bridgecrewio/checkov-action@v12 with: directory: . framework: terraform,kubernetes,helm output_format: sarif output_file_path: checkov.sarif soft_fail: false - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: checkov.sarif ``` パスフィルターにより、インフラストラクチャファイルが変更されたときのみIaCスキャンが実行され、アプリケーションのみの変更に対するCI時間を短縮します。 ## 2026年の完全なDevSecOpsパイプライン 2026年の本番対応DevSecOpsパイプラインは、各段階でこれらのツールを統合します: - **プリコミット**: Gitleaks(シークレット)、オプションのローカルSAST - **プルリクエスト**: Semgrep(SAST)、Trivy(SCA)、Checkov(IaC) - **ビルド**: コンテナイメージスキャン、SBOM生成 - **デプロイ前**: Cosignによるイメージ署名、Kyvernoによるアドミッションコントロール - **デプロイ後**: ステージングに対するZAPによるDAST - **ランタイム**: コンテナ監視用のFalco、クラウドセキュリティポスチャ管理 無償のスタック(Semgrep、Trivy、ZAP、Gitleaks、Checkov、Falco)はすべてのカテゴリをカバーします。商用ツールは中央ダッシュボード、ポリシー管理、チューニング作業の削減を追加しますが、セキュリティカバレッジはライセンスコストなしで達成可能です。 DevSecOps職への準備として、個人プロジェクトでこれらのパイプラインを構築する練習をすることを推奨します。[クラウドIDとシークレット管理モジュール](/technologies/devops/interview-questions/cloud-identity-secrets)では、シークレット管理の側面について解説しています。 --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/ja/blog/devops/devops-pipeline-security-sast-dast-2026