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

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)は、サードパーティの依存関係における既知の脆弱性を特定します。すべてのプルリクエストで両方を実行することで、コードがマージされる前に大多数の一般的なセキュリティ問題を検出できます。
# .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は、静的シークレットを実行時にクラウドプロバイダーが発行する短命のトークンに置き換えます。
# .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-deploymentAWS IAMロールの信頼ポリシーは、ロールを引き受けることができるリポジトリとブランチを制限します:
{
"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)を生成することで、完全な依存関係チェーンの可視性が得られます。
# 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.jsonCycloneDX形式のSBOMアーティファクトにより、下流の利用者は再ビルドせずに新たに開示された脆弱性をチェックできます。SLSAなどのサプライチェーンセキュリティフレームワークは、ベースライン制御としてSBOM生成を必須としています。
ステージング環境での動的アプリケーションセキュリティテスト
DASTツールは、静的分析では検出できない脆弱性(認証の欠陥、インジェクション脆弱性、セキュリティの設定ミスなど)について、実行中のアプリケーションをテストします。本番デプロイメント前にステージング環境に対してDASTを実行することで、以前のゲートを通過した問題を検出できます。
# .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スキャンは、クラウド環境に到達する前に設定ミスを検出します。
# 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.sarifCheckovは、CISやSOC2などのセキュリティベンチマークに対してTerraform構成を検証します。SARIF出力は、統一された脆弱性追跡のためにGitHubセキュリティタブと統合されます。Ansibleを使用するチームは、セキュリティルールを持つansible-lintを同じパイプラインステージに追加できます。
GitHub Actionsサプライチェーン強化
アクションを完全なコミットSHAにピン留めすることで、メンテナーや侵害されたアカウントが既存のタグに悪意のあるバージョンを強制プッシュするタグベースの攻撃を防ぎます。2026年5月のMegalodonキャンペーンでは、6時間の間に数千のリポジトリにわたって5,700以上の悪意のあるコミットがプッシュされました。
# タグではなくコミットSHAにピン留め
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# @v4や@latestのような可変タグは避ける
# 悪い例: uses: actions/checkout@v4Dependabotは、新しいバージョンがリリースされたときに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-MailletSharpSkill 創業者
10 年以上フルスタック開発に携わっています。SharpSkill を運営し、ここで公開される内容に責任を負っています。
2026年9月8日 更新
タグ
共有
関連記事

2026年版 Kubernetesシークレット管理完全ガイド:External Secrets、Vault、面接対策
Kubernetesのシークレット管理について、External Secrets Operator、HashiCorp Vaultとの連携、本番環境でのベストプラクティス、および技術面接での頻出質問を解説します。

Kubernetes Helm Charts 完全ガイド 2026:パッケージング、デプロイメント、面接対策
Helm 3を使用したKubernetesアプリケーションのパッケージングとデプロイメント手法を解説。チャート構造、テンプレート作成、依存関係管理、そして技術面接で頻出する質問と回答例を網羅的に紹介します。

ArgoCD GitOps 完全ガイド 2026年版:Kubernetes 継続的デプロイメントと技術面接対策
ArgoCD 3.4 と GitOps による Kubernetes 継続的デプロイメントを解説。Application CRD、Sync Wave、マルチクラスター管理、Flux 比較、面接質問を網羅。