DevSecOps

開発・セキュリティ・運用を統合し、セキュリティをパイプラインに組み込むアプローチ

セキュリティDevOps

DevSecOps とは

DevSecOps は、開発 (Dev)・セキュリティ (Sec)・運用 (Ops) を統合し、セキュリティをソフトウェア開発ライフサイクルの全段階に組み込むアプローチである。「セキュリティはリリース前のゲートではなく、全員の責任」という考え方。

従来 vs DevSecOps

観点 従来 DevSecOps
セキュリティの時期 リリース前にレビュー 開発の全段階
担当 セキュリティチーム 全員
発見のタイミング 遅い (手戻りが大きい) 早い (修正コストが低い)
自動化 手動レビュー CI/CD に組み込み

パイプラインへの組み込み

コード → ビルド → テスト → デプロイ → 運用
  ↓        ↓       ↓        ↓        ↓
SAST    SCA     DAST    IaC検査   監視
(静的解析) (依存脆弱性) (動的解析) (設定検査) (異常検知)
ツール 段階 検出対象
SAST (Semgrep, CodeQL) コード SQLi, XSS, ハードコード秘密鍵
SCA (Dependabot, Snyk) ビルド 依存パッケージの脆弱性
DAST (OWASP ZAP) テスト 実行中のアプリの脆弱性
IaC スキャン (cfn-lint, Checkov) デプロイ 設定ミス、過剰な権限

GitHub Actions での例

security:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    # 依存パッケージの脆弱性チェック
    - run: npm audit --audit-level=high
    # シークレットの検出
    - uses: trufflesecurity/trufflehog@main
    # IaC のセキュリティチェック
    - run: cfn-lint template.yaml

AWS でのセキュリティ自動化

サービス 用途
IAM Access Analyzer 過剰な権限の検出
GuardDuty 脅威の検出
Security Hub セキュリティ状態の一元管理
Inspector EC2/Lambda の脆弱性スキャン
Config リソース設定の監査

最小権限の原則

# ❌ 過剰な権限
Policies:
  - Statement:
      - Effect: Allow
        Action: "*"
        Resource: "*"

# ✅ 最小権限
Policies:
  - Statement:
      - Effect: Allow
        Action: [dynamodb:GetItem, dynamodb:PutItem]
        Resource: !GetAtt Table.Arn

より深く学ぶには関連書籍が役立つ。

関連用語