DevSecOps

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

セキュリティDevOps

DevSecOps とは

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

従来 vs DevSecOps

従来と 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 での例

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 でのセキュリティ自動化

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

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

この記事は役に立ちましたか?

関連用語

関連する記事