はじめに
DevSecOps(デブセックオプス)は、開発(Dev)・セキュリティ(Sec)・運用(Ops)を統合する開発手法です。
従来のウォーターフォール開発では「リリース直前にセキュリティ検査」が一般的でしたが、これでは問題の発見が遅れ、修正コストが膨大になります。DevSecOpsでは、セキュリティをCI/CDパイプラインの各段階に組み込み、問題を早期発見・早期修正(Shift Left) することを目指します。
IPA「プロフェッショナルデジタルスキル試験(PD試験)」PD(S)区分のシラバスにも明記されている概念です。
Shift Leftとは
従来:
コーディング → テスト → 統合 → ステージング → [セキュリティ検査] → リリース
↑ 問題発見が遅い
DevSecOps (Shift Left):
[コーディング] → [テスト] → [統合] → [ステージング] → リリース
↑セキュリティ検査を各フェーズに組み込む
リリース直前での発見は、コーディング時の発見と比べて修正コストが30倍になるとも言われます(IBM System Science Institute調査)。
CI/CDパイプラインへのセキュリティ統合
各フェーズで使うツール
# GitLab CI/CD の例
stages:
- code_analysis # 静的解析
- build
- test
- security_scan # 動的解析・依存関係チェック
- deploy
sast:
stage: code_analysis
script:
- semgrep --config=auto . # SAST: コードの脆弱性静的解析
dependency_check:
stage: code_analysis
script:
- dependency-check.sh --project myapp # SCA: 依存ライブラリのCVEチェック
dast:
stage: security_scan
script:
- zap-baseline.py -t https://staging.myapp.com # DAST: 動的スキャン
主要なセキュリティ検査ツール
| 種別 | ツール例 | 検出対象 |
|---|---|---|
| SAST(静的解析) | Semgrep・SonarQube・Checkmarx | SQLインジェクション・XSS等のコードパターン |
| DAST(動的解析) | OWASP ZAP・Burp Suite | 実行時の脆弱性 |
| SCA(ソフトウェア構成分析) | Dependabot・Snyk・OWASP DC | 依存ライブラリのCVE |
| Container Scan | Trivy・Clair・Grype | コンテナイメージの脆弱性 |
| IaC Scan | Checkov・tfsec | Terraform等のミス設定 |
| シークレットスキャン | git-secrets・TruffleHog | APIキー・パスワードの誤コミット |
セキュアコーディング実践
よくある脆弱性と対策
SQLインジェクション(Python例)
# NG: 文字列結合でクエリ生成
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# OK: プレースホルダを使用
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
シークレットの管理
# NG: ハードコーディング
DATABASE_URL: "postgresql://user:password123@host/db"
# OK: 環境変数 or Secrets Manager
DATABASE_URL: "${DATABASE_URL}"
# AWS Secrets Manager / Azure Key Vault / HashiCorp Vault を使用
DevSecOps文化の醸成
ツールを入れるだけでは機能しません。現場で重要なのは:
- セキュリティチャンピオン制度: 各チームにセキュリティ担当者を置く
- セキュリティ研修の定期実施: OWASP Top 10のチーム学習
- 失敗を責めない文化: 脆弱性の報告を奨励する
PD試験(S区分)との関連
PD(S)シラバルでは「DevSecOps」が実務技能として明記されています。
試験では以下のような判断力が問われます:
- パイプラインのどの段階でどのスキャンツールを使うか
- コンテナ環境でのセキュリティ設計
- インシデント発生時の対応手順
まとめ
- DevSecOps = 開発の各フェーズにセキュリティを組み込む(Shift Left)
- CI/CDパイプラインでSAST・DAST・SCA・Container Scanを自動化
- ツールと文化の両輪が必要
PD試験の詳細・シラバス解説はこちら。