2026年のDevOpsパイプラインセキュリティ:DevSecOpsのベストプラクティスと面接質問

DevSecOpsの重要な手法、CI/CDパイプラインの保護方法、2026年の技術面接で求められるセキュリティに関する知識を解説します。SAST、SCA、OIDCフェデレーション、コンテナセキュリティまで網羅的に紹介します。

DevSecOpsのベストプラクティスとCI/CDパイプラインセキュリティ

DevOpsパイプラインのセキュリティは、大規模にソフトウェアをリリースする組織にとって重要な差別化要因となっています。OWASP Top 10 CI/CDセキュリティリスクでは、不十分なフロー制御から侵害されたビルド依存関係まで、最新のパイプラインにおける最も危険な脆弱性が特定されています。本ガイドでは、2026年の技術面接で求められるDevSecOpsの必須プラクティスを解説します。

シフトレフトセキュリティ

DevSecOpsは、ソフトウェアデリバリーライフサイクルのすべての段階でセキュリティチェックを統合します。本番環境前の最終ゲートとしてセキュリティを扱うのではなく、シフトレフトの手法により、修正コストが低く、迅速に出荷できる開発段階で脆弱性を検出します。

CI/CDの攻撃対象領域を理解する

最新のCI/CDパイプラインは、ソースコードリポジトリ、ビルドランナー、アーティファクトレジストリ、デプロイメントターゲットにまたがる複雑な攻撃対象領域を持っています。2025年3月のtj-actions/changed-files侵害では、広く使用されているGitHub Actionに悪意のあるコードが注入され、23,000以上のリポジトリからシークレットが漏洩しました。2026年初頭のTanStack攻撃では、有効なSLSA Build Level 3の来歴を持つ170以上の汚染されたnpmパッケージが公開され、攻撃者がビルドプロセスを制御している場合、暗号化された証明でさえバイパスできることが実証されました。

これらのインシデントは、3つの重要な制御ポイントを浮き彫りにしています:

  • ソースの完全性:ブランチ保護ルール、署名付きコミット、必須のコードレビューにより、不正な変更がビルドパイプラインに到達することを防ぎます
  • ビルドの分離:エフェメラルランナー、最小限の権限、アーティファクト検証により、侵害された依存関係の影響範囲を制限します
  • シークレットの衛生管理:短命の認証情報、OIDCフェデレーション、シークレットスキャンにより、攻撃者が狙う静的トークンを排除します

面接官は、典型的なデプロイメントパイプラインにおける信頼境界をトレースするよう候補者に求めることがよくあります。優れた回答は、攻撃者がコードを注入したり認証情報を窃取したりできる各段階をマッピングします。

SASTとSCA:脆弱性の早期検出

静的アプリケーションセキュリティテスト(SAST)は、プログラムを実行せずにソースコードのセキュリティ欠陥を分析します。ソフトウェア構成分析(SCA)は、サードパーティの依存関係における既知の脆弱性を特定します。すべてのプルリクエストで両方を実行することで、コードがマージされる前に大多数の一般的なセキュリティ問題を検出できます。

yaml
# .github/workflows/security.yml
name: Security Scan

on:
  pull_request:
    branches: [main]

jobs:
  sast:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v4
      
      - name: Run CodeQL
        uses: github/codeql-action/analyze@v3
        with:
          languages: javascript,typescript
          queries: security-extended

  sca:
    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: .
          severity: HIGH,CRITICAL
          exit-code: 1

上記のワークフローでは、SASTにCodeQL、SCAにTrivyを実行しています。Trivyでexit-code: 1を設定すると、高または重大な脆弱性が検出された場合にビルドが失敗します。GitHub Advanced SecurityとGitLab Ultimateには、それぞれのマージリクエストワークフローと統合された組み込みのSAST機能が含まれています。

OIDCフェデレーションによるシークレット管理

CI/CDプラットフォームに保存された長期間有効な認証情報は、パイプライン侵害において最も悪用される攻撃ベクトルです。GitHub Actions OIDCは、静的シークレットを実行時にクラウドプロバイダーが発行する短命のトークンに置き換えます。

yaml
# .github/workflows/deploy.yml
name: Deploy to AWS

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write  # OIDCに必要
      contents: read
    steps:
      - uses: actions/checkout@v4
      
      - name: Configure AWS credentials via OIDC
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsRole
          aws-region: us-east-1
          # AWS_ACCESS_KEY_IDやAWS_SECRET_ACCESS_KEYはどこにも保存されていない
      
      - name: Deploy to ECS
        run: aws ecs update-service --cluster prod --service api --force-new-deployment

AWS IAMロールの信頼ポリシーは、ロールを引き受けることができるリポジトリとブランチを制限します:

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
        },
        "StringLike": {
          "token.actions.githubusercontent.com:sub": "repo:my-org/my-repo:ref:refs/heads/main"
        }
      }
    }
  ]
}

この条件は、特定のリポジトリのmainブランチへの認証情報発行を制限します。AzureとGCPは同等のOIDCフェデレーション機能を提供しています。存在しなければならないシークレットについては、HashiCorp VaultやAWS Secrets Managerなどのクラウドネイティブオプションが、一元化されたローテーションとアクセスログを提供します。

DevOpsの面接対策はできていますか?

インタラクティブなシミュレーター、flashcards、技術テストで練習しましょう。

コンテナセキュリティとSBOM生成

コンテナイメージは、アプリケーションコード以外の依存関係をもたらします。ベースイメージ、システムパッケージ、ビルドツールはすべて潜在的な脆弱性を抱えています。ビルドプロセス中にイメージをスキャンし、ソフトウェア部品表(SBOM)を生成することで、完全な依存関係チェーンの可視性が得られます。

yaml
# GitLab CI コンテナセキュリティ
container_scanning:
  stage: test
  image: registry.gitlab.com/gitlab-org/security-products/analyzers/container-scanning:7
  variables:
    CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    CS_DOCKERFILE_PATH: Dockerfile
  script:
    - /analyzer run
  artifacts:
    reports:
      container_scanning: gl-container-scanning-report.json
      cyclonedx: gl-sbom.cdx.json

CycloneDX形式のSBOMアーティファクトにより、下流の利用者は再ビルドせずに新たに開示された脆弱性をチェックできます。SLSAなどのサプライチェーンセキュリティフレームワークは、ベースライン制御としてSBOM生成を必須としています。

ステージング環境での動的アプリケーションセキュリティテスト

DASTツールは、静的分析では検出できない脆弱性(認証の欠陥、インジェクション脆弱性、セキュリティの設定ミスなど)について、実行中のアプリケーションをテストします。本番デプロイメント前にステージング環境に対してDASTを実行することで、以前のゲートを通過した問題を検出できます。

yaml
# .gitlab-ci.yml
dast:
  stage: dast
  image: registry.gitlab.com/gitlab-org/security-products/analyzers/dast:5
  variables:
    DAST_WEBSITE: https://staging.example.com
    DAST_AUTH_URL: https://staging.example.com/login
    DAST_USERNAME: $DAST_USER
    DAST_PASSWORD: $DAST_PASSWORD
    DAST_AUTH_VERIFICATION_URL: https://staging.example.com/dashboard
  script:
    - /analyze
  artifacts:
    reports:
      dast: gl-dast-report.json
  rules:
    - if: $CI_COMMIT_BRANCH == "main"

OWASP ZAPは、GitLab Ultimateを持たないチームに無料の代替手段を提供します。認証済みスキャンは、機密性の高い操作が通常存在するログイン壁の背後の機能をテストします。Kubernetes環境では、APIセキュリティテストがIngressの設定とサービスメッシュポリシーを検証します。

Infrastructure as Codeセキュリティスキャン

Terraform、Kubernetesマニフェスト、Helmチャートは、攻撃者が標的とするインフラストラクチャを定義します。IaCスキャンは、クラウド環境に到達する前に設定ミスを検出します。

yaml
# GitHub ActionsでのCheckov IaCスキャン
iac-scan:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    
    - name: Run Checkov
      uses: bridgecrewio/checkov-action@v12
      with:
        directory: terraform/
        framework: terraform
        soft_fail: false
        output_format: sarif
        output_file_path: checkov.sarif
    
    - name: Upload SARIF
      uses: github/codeql-action/upload-sarif@v3
      with:
        sarif_file: checkov.sarif

Checkovは、CISやSOC2などのセキュリティベンチマークに対してTerraform構成を検証します。SARIF出力は、統一された脆弱性追跡のためにGitHubセキュリティタブと統合されます。Ansibleを使用するチームは、セキュリティルールを持つansible-lintを同じパイプラインステージに追加できます。

GitHub Actionsサプライチェーン強化

アクションを完全なコミットSHAにピン留めすることで、メンテナーや侵害されたアカウントが既存のタグに悪意のあるバージョンを強制プッシュするタグベースの攻撃を防ぎます。2026年5月のMegalodonキャンペーンでは、6時間の間に数千のリポジトリにわたって5,700以上の悪意のあるコミットがプッシュされました。

yaml
# タグではなくコミットSHAにピン留め
steps:
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
  
  # @v4や@latestのような可変タグは避ける
  # 悪い例: uses: actions/checkout@v4

Dependabotは、新しいバージョンがリリースされたときにSHAピン留めされたアクションを更新します。OWASP DevSecOpsガイドラインは追加の制御を推奨しています:

  • permissions:ブロックを使用してワークフロー権限を必要最小限に制限する
  • pull_request_targetトリガーを無効にするか、コラボレーターからのラベル付きPRに制限する
  • 組織レベルでデフォルトが読み取り専用のGITHUB_TOKENを使用する
  • デフォルトブランチで必須のステータスチェックとブランチ保護を有効にする

よくあるDevSecOps面接質問

面接官は技術的な深さと実践的な経験の両方を評価します。これらの質問はDevOpsセキュリティの面接で頻繁に登場します。

Q: リポジトリへのシークレットのコミットをどのように防ぎますか?

detect-secretsやgitleaksなどのツールを使用したpre-commitフックは、コミット前にステージされた変更をスキャンします。GitHub EnterpriseやGitLabのサーバーサイドプッシュルールは、既知のシークレット形式に一致するパターンを含むコミットをブロックします。開発者はローカルフックをバイパスできるため、シークレットスキャンはCIでもバックストップとして実行する必要があります。

Q: SAST、DAST、SCAの違いを説明してください。

SASTは、SQLインジェクションパターンやハードコードされた認証情報などのバグを見つけるために、実行せずにソースコードを分析します。SCAは、パッケージバージョンをCVEデータベースと照合することで、依存関係の既知の脆弱性を特定します。DASTは、悪意のあるリクエストを送信して応答を観察することで、実行中のアプリケーションをテストします。成熟したパイプラインは3つすべてを実行します:SASTとSCAはすべてのPRで、DASTは本番リリース前のステージングで実行します。

Q: CI/CDにおける最小権限の原則とは何ですか?

ビルドジョブは、その特定のタスクを完了するために必要な権限のみを持つ必要があります。ステージングにデプロイするジョブは、本番環境の認証情報を必要としません。OIDCフェデレーションは、特定のリポジトリ、ブランチ、ワークフロージョブにスコープされた認証情報を発行することでこれを強制します。OWASP CI/CD Top 10は、過剰な権限を持つ侵害されたジョブが攻撃対象領域を劇的に拡大するため、不適切なIDおよびアクセス管理をトップリスクとしてリストしています。

Q: コンテナイメージの整合性をどのように検証しますか?

コンテンツ信頼署名(Docker Content Trust、Sigstore cosign)は、イメージが信頼されたパイプラインによってビルドされたことの暗号化検証を提供します。SBOM証明書はイメージ内のコンポーネントを文書化します。Kubernetesのアドミッションコントローラーは、署名されていないイメージや既知の重大な脆弱性を持つイメージを拒否します。レジストリスキャンは、ビルド時間後に現れる脆弱性を検出します。

Q: CI/CDに対するサプライチェーン攻撃とその防止方法を説明してください。

tj-actions/changed-files攻撃は、広く使用されているGitHub Actionを侵害し、攻撃者が制御するエンドポイントにシークレットを抽出するコードを注入しました。防止策には、タグではなくコミットSHAにアクションをピン留めすること、Dependabotを使用してピン留めされたバージョンを更新すること、組織レベルのポリシーで実行できるアクションを制限すること、予期しないネットワーク接続や認証情報アクセスについてワークフローの実行を監視することが含まれます。

今すぐ練習を始めましょう!

面接シミュレーターと技術テストで知識をテストしましょう。

技術面接のためのDevSecOpsロードマップ構築

セキュリティ実装について構造化された思考を示す候補者は際立ちます。実践的なDevSecOpsの展開は、最初に影響が大きく労力の少ない制御を優先します:

  • シークレットスキャンとブランチ保護を即座に有効にする。両方とも無料で、最も一般的な攻撃ベクトルをブロックします
  • 最初のスプリント内にプルリクエストチェックにSASTとSCAを追加し、マージ前に脆弱性を検出する
  • 静的認証情報からOIDCフェデレーションに移行し、CI/CDプラットフォームから最も危険なシークレットを排除する
  • イメージビルドの一部としてコンテナスキャンとSBOM生成を実装する
  • Terraform、Kubernetes、クラウド構成のIaCスキャンをデプロイする
  • 認証や機密データを扱うアプリケーションにDASTを追加する
  • 本番Kubernetesクラスター用にFalcoまたは同等のランタイム監視を確立する

面接官はトレードオフを認識する候補者を評価します。セキュリティスキャンはパイプラインのレイテンシーを追加します。誤検出はアラート疲労を引き起こします。成熟したDevSecOpsプラクティスは閾値を調整し、補償制御で計算されたリスクを受け入れ、修復までの平均時間を継続的に測定します。

今すぐ練習を始めましょう!

面接シミュレーターと技術テストで知識をテストしましょう。

今日のチャレンジ

DevOps のバグを見つけられますか

実際のコード、隠れたバグ、1日1回。アカウントなしで試せます。

Anthony Fillion-Maillet

執筆

Anthony Fillion-Maillet

SharpSkill 創業者

10 年以上フルスタック開発に携わっています。SharpSkill を運営し、ここで公開される内容に責任を負っています。

2026年9月8日 更新

タグ

#devops
#devsecops
#security
#cicd
#pipeline

共有

関連記事