セキュリティ

セキュリティファーストなCI/CDパイプライン構築ガイド

Deploy 編集部
Deploy 編集部
Deploy CTO。15年以上のソフトウェア開発経験を持ち、多数の企業のDevOps導入を支援。
2025年08月25日
11分で読める
セキュリティを最優先としたCI/CDパイプラインの設計と実装方法を詳しく解説。脆弱性スキャン、セキュアなデプロイメント、コンプライアンス対応まで。
#セキュリティ #CI/CD #DevSecOps #脆弱性スキャン #コンプライアンス
セキュリティファーストなCI/CDパイプライン構築ガイド

セキュリティファーストCI/CDとは

セキュリティファーストCI/CD(DevSecOps)は、開発プロセスの早期段階からセキュリティを組み込むアプローチです。従来の「開発後にセキュリティチェック」ではなく、「セキュリティを前提とした開発」を実現します。

セキュリティファーストCI/CDの重要性

現代のサイバー攻撃は高度化・多様化しており、従来のセキュリティ対策では不十分です。セキュリティファーストCI/CDにより、以下のメリットが得られます:

  • 早期脆弱性検出:開発段階での脆弱性発見により、修正コストを大幅削減
  • 自動化されたセキュリティチェック:人的ミスを排除し、一貫したセキュリティレベルを維持
  • コンプライアンス対応:規制要件への自動対応
  • 開発効率の向上:セキュリティチェックの自動化により、開発速度を維持

セキュリティファーストCI/CDパイプラインの構成要素

1. 静的コード解析(SAST)

ソースコードを解析して潜在的な脆弱性を検出します。

# GitHub ActionsでのSAST設定例
name: Security Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run CodeQL Analysis
        uses: github/codeql-action/init@v2
        with:
          languages: javascript, python
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2
      
      - name: Run SonarQube Scan
        uses: SonarSource/sonarqube-scan-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

2. 依存関係スキャン(SCA)

使用しているライブラリやパッケージの既知の脆弱性をチェックします。

# Node.jsプロジェクトでの依存関係スキャン
npm audit --audit-level moderate

# Pythonプロジェクトでの依存関係スキャン
pip install safety
safety check

# GitHub Actionsでの自動スキャン
- name: Run npm audit
  run: npm audit --audit-level moderate
  continue-on-error: true

- name: Run Snyk to check for vulnerabilities
  uses: snyk/actions/node@master
  env:
    SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

3. コンテナイメージスキャン

Dockerイメージ内の脆弱性を検出します。

# Trivyを使用したイメージスキャン
trivy image --severity HIGH,CRITICAL your-image:latest

# GitHub Actionsでの自動スキャン
- name: Build image
  run: docker build -t ${{ github.repository }}:${{ github.sha }} .
  
- name: Run Trivy vulnerability scanner
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: '${{ github.repository }}:${{ github.sha }}'
    format: 'sarif'
    output: 'trivy-results.sarif'

4. 動的セキュリティテスト(DAST)

実行中のアプリケーションに対してセキュリティテストを実行します。

# OWASP ZAPを使用したDAST
- name: OWASP ZAP Full Scan
  uses: zaproxy/action-full-scan@v0.4.0
  with:
    target: 'https://your-app.com'
    rules_file_name: '.zap/rules.tsv'
    cmd_options: '-a'

5. インフラストラクチャセキュリティ

インフラストラクチャの設定ミスや脆弱性を検出します。

# Terraformのセキュリティチェック
- name: Run tfsec
  uses: aquasecurity/tfsec-action@v1.0.3
  with:
    working_directory: './terraform'

# Checkovを使用したセキュリティスキャン
- name: Run Checkov
  uses: bridgecrewio/checkov-action@master
  with:
    directory: './terraform'
    framework: terraform

セキュリティゲートの実装

パイプライン段階別セキュリティチェック

開発段階

  • IDE拡張機能によるリアルタイム脆弱性検出
  • Git hooksによるコミット前チェック
  • プルリクエスト時の自動セキュリティスキャン

ビルド段階

  • 依存関係スキャン
  • 静的コード解析
  • シークレットスキャン

デプロイ段階

  • コンテナイメージスキャン
  • インフラストラクチャスキャン
  • 設定検証

シークレット管理

GitHub Secretsの活用

# シークレットの安全な使用
- name: Deploy to production
  run: |
    echo "Deploying with secure credentials..."
    deploy-script.sh
  env:
    DATABASE_URL: ${{ secrets.DATABASE_URL }}
    API_KEY: ${{ secrets.API_KEY }}
    JWT_SECRET: ${{ secrets.JWT_SECRET }}

外部シークレット管理システムとの連携

# AWS Secrets Managerとの連携
- name: Configure AWS credentials
  uses: aws-actions/configure-aws-credentials@v1
  with:
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws-region: us-east-1

- name: Retrieve secrets
  run: |
    DATABASE_PASSWORD=$(aws secretsmanager get-secret-value \\
      --secret-id prod/database/password \\
      --query SecretString --output text)
    echo "DATABASE_PASSWORD=$DATABASE_PASSWORD" >> $GITHUB_ENV

セキュリティ監視とログ管理

セキュリティイベントの監視

セキュリティログの収集と分析により、インシデントを早期に検出し、対応することができます。

コンプライアンス対応

PCI DSS対応

  • カードデータの暗号化
  • アクセス制御の実装
  • 定期的なセキュリティテスト
  • 監査ログの保持

GDPR対応

  • 個人データの保護
  • データ処理の記録
  • プライバシー影響評価
  • データ主体の権利対応

セキュリティファーストCI/CDの実装手順

フェーズ1:現状分析と計画策定

  1. 現在のセキュリティリスクの評価
  2. セキュリティ要件の定義
  3. ツール選定と導入計画

フェーズ2:基本セキュリティチェックの導入

  1. 静的コード解析の設定
  2. 依存関係スキャンの導入
  3. シークレットスキャンの実装

フェーズ3:高度なセキュリティ機能の追加

  1. 動的セキュリティテストの導入
  2. コンテナセキュリティの強化
  3. インフラストラクチャセキュリティの実装

フェーズ4:監視と継続的改善

  1. セキュリティメトリクスの設定
  2. インシデント対応プロセスの確立
  3. 定期的なセキュリティ監査

成功事例

「セキュリティファーストCI/CDの導入により、脆弱性の発見から修正までの時間を80%短縮し、セキュリティインシデントを90%削減することができました。」

— 大手金融機関のDevSecOps責任者

まとめ

セキュリティファーストCI/CDは、現代のソフトウェア開発において不可欠なアプローチです。適切なツールとプロセスの導入により、開発効率を保ちながらセキュリティを大幅に向上させることができます。段階的な実装と継続的な改善により、組織全体のセキュリティ意識を高めることが重要です。

この記事をシェア
Deploy 編集部
Deploy 編集部

Deploy CTO。15年以上のソフトウェア開発経験を持ち、多数の企業のDevOps導入を支援。