CI/CDセキュリチE�� Top 10リスクとは�E�E/div>

OWASP Top 10 CI/CDセキュリチE��リスクは、継続的インチE��レーション�E�EI�E�と継続的チE��バリー�E�ED�E�パイプラインにおける最も重大なセキュリチE��リスクを特定してぁE��す、EI/CDパイプラインは、ソースコード、シークレチE��、本番環墁E��の直接アクセスを持つため、E��価値のターゲチE��です。このガイドでは、フロー制御、ID管琁E��依存関係攻撁E��パイプラインポイズニングなどを取り上げます、E/p>

1�E�⃣ CICD-SEC-1 - 不十刁E��フロー制御メカニズム

Critical

概要E/h3>

不十刁E��フロー制御メカニズムにより、攻撁E��E�E適刁E��レビューめE��認ゲートなしに悪意�EあるコードをCI/CDパイプラインにプッシュできます。これには、ブランチ保護ルールのバイパス、忁E��な承認�E欠如、本番環墁E��のチE�Eロイをトリガーできるユーザーの制限不足が含まれます、E/p>

リスク

適刁E��フロー制御がなぁE��、侵害されぁEつの開発老E��カウントや悪意�Eあるインサイダーが、コードレビュー、セキュリチE��スキャン、承認�Eロセスをバイパスして、コードを直接本番環墁E��プッシュできます。これにより、バチE��ドア、データ流�Eコード、また�E破壊的なペイロード�EチE�Eロイにつながる可能性があります、E/p>

脁E��なコード侁E/h3>
YAML (GitHub Actions) ❁E悪ぁE��E/span>
# No branch protection  Eanyone can push directly to main
name: Deploy
on:
  push:
    branches: [main]  # Triggers on any push to main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: |
        # Deploys immediately  Eno approval gate!
        kubectl apply -f deploy.yaml
        kubectl rollout status deployment/myapp

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: Deploy
on:
  push:
    branches: [main]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: npm test
  deploy:
    needs: test
    runs-on: ubuntu-latest
    environment: production  # Requires manual approval
    steps:
    - uses: actions/checkout@v4
    - run: |
        kubectl apply -f deploy.yaml
        kubectl rollout status deployment/myapp

緩和チェチE��リスチE/h3>
  • mainへのマ�Eジ前にPRレビューを忁E��とするブランチ保護ルールを強制する
  • 本番チE�Eロイメントに忁E���E承認老E��持つ環墁E��護ルールを使用する
  • マ�Eジ前に合格する忁E��があるスチE�EタスチェチE���E�テスト、セキュリチE��スキャン�E�を実裁E��めE/li>
  • 保護されたブランチへのプッシュと本番チE�Eロイメント�Eトリガーを行えるユーザーを制限すめE/li>

2�E�⃣ CICD-SEC-2 - 不十刁E��IDおよびアクセス管琁E/h2> Critical

概要E/h3>

CI/CDシスチE��には、人間�Eユーザー、サービスアカウント、�EチE��ト�Eクン、�EシンIDなど、褁E��のIDが関与してぁE��す。不十刁E��IAMにより、リポジトリ、パイプライン、デプロイターゲチE��への過度に許可皁E��アクセスが許されます。�E有賁E��惁E��、古ぁE��カウント、MFAの欠如がリスクを増大させます、E/p>

リスク

過剰な権限を持つ侵害されたCI/CD IDは、パイプラインの変更、シークレチE��へのアクセス、ビルドアーチE��ファクト�E改ざん、本番環墁E��のチE�Eロイが可能です。�E有サービスアカウント�E、誰がアクションを実行したかの監査を不可能にします、E/p>

脁E��なコード侁E/h3>
YAML (GitHub Actions) ❁E悪ぁE��E/span>
# Over-permissive workflow with admin token
name: CI
on: push
permissions: write-all  # Full permissions to everything!
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: |
        # Using org-wide PAT with admin access
        curl -H "Authorization: token ${{ secrets.ADMIN_PAT }}" \
          https://api.github.com/repos/org/other-repo/contents/

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: CI
on: push
permissions:
  contents: read    # Minimum required permissions
  packages: write   # Only what's needed
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/create-github-app-token@v1  # Scoped app token
      id: app-token
      with:
        app-id: ${{ vars.APP_ID }}
        private-key: ${{ secrets.APP_PRIVATE_KEY }}
        repositories: other-repo  # Scoped to specific repo

緩和チェチE��リスチE/h3>
  • すべてのワークフロート�Eクンとサービスアカウントに最小権限�E原則を適用する
  • 長期間有効なPATの代わりにGitHub Appsまた�EOIDCフェチE��ーションを使用する
  • CI/CDアクセスを持つすべての人間�EアカウントにMFAを強制する
  • 賁E��惁E��を定期皁E��監査・ローチE�Eションし、古ぁE��カウントとト�Eクンを削除する

3�E�⃣ CICD-SEC-3 - 依存関係チェーンの悪用

Critical

概要E/h3>

CI/CDパイプラインは外部パッケージレジストリ�E�Epm、PyPI、Maven、Docker Hub�E�から依存関係を取得します。攻撁E��E�E、依存関係�E混乱、タイポスクワチE��ィング、侵害されたメンチE��ーアカウント、悪意�Eあるパッケージを通じてこれを悪用します。単一の汚染された依存関係がビルド中に任意�Eコードを実行できます、E/p>

リスク

悪意�Eある依存関係�Eインスト�Eル時にコードを実行し�E�Eostinstallスクリプト、setup.py�E�、シークレチE��の突E��、ビルドアーチE��ファクトへのバックドア注入、また�E永続化を確立します。SolarWindsやCodecovのようなサプライチェーン攻撁E�E、その壊滁E��な影響を実証してぁE��す、E/p>

脁E��なコード侁E/h3>
Jenkinsfile ❁E悪ぁE��E/span>
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        // No lockfile verification, no integrity checks
        sh 'npm install'           // Fetches latest  Ecould be compromised!
        sh 'pip install -r requirements.txt'  // No hash verification
      }
    }
  }
}

安�Eなコード侁E/h3>
Jenkinsfile ✁E良ぁE��E/span>
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        // Use lockfile with integrity verification
        sh 'npm ci'                   // Uses package-lock.json
        sh 'npm audit --audit-level=high'
        // Python: verify hashes from lockfile
        sh 'pip install --require-hashes -r requirements.lock'
      }
    }
    stage('SCA Scan') {
      steps {
        // Software Composition Analysis
        sh 'trivy fs --scanners vuln,secret .'
      }
    }
  }
}

緩和チェチE��リスチE/h3>
  • 常にロチE��ファイル�E�Eackage-lock.json、Pipfile.lock�E�を使用し、整合性ハッシュを検証する
  • 依存関係�E混乱を防ぐために、ネームスペ�Eススコーピングを持つプライベ�EチE冁E��パッケージレジストリを設定すめE/li>
  • すべてのビルドパイプラインでソフトウェア構�E刁E���E�ECA�E�ツールを実行すめE/li>
  • 依存関係を正確なバ�Eジョンにピン留めし、�Eージ前にすべての依存関係�E更新をレビューする

4�E�⃣ CICD-SEC-4 - パイプライン実行�Eポイズニング�E�EPE�E�E/h2> Critical

概要E/h3>

パイプライン実行�Eポイズニング�E�EPE�E��E、攻撁E��E��CI/CDパイプライン定義を変更したり、パイプラインコンチE��スト�Eで実行される悪意�Eあるコードを注入できる場合に発生します。これ�E、ブランチ�Eのパイプライン設定ファイルの操作、フォークからのプルリクエスト、また�E共有パイプラインチE��プレート�E変更を通じて起こり得ます、E/p>

リスク

パイプライン設定を変更できる攻撁E��E�E、パイプラインが利用可能なすべてのシークレチE��、賁E��惁E��、権限にアクセスできます。信頼された実行コンチE��スト�Eで、シークレチE��の流�E、ビルド�E力�E改ざん、また�E悪意�Eあるコード�EチE�Eロイが可能になります、E/p>

脁E��なコード侁E/h3>
YAML (GitHub Actions) ❁E悪ぁE��E/span>
# Runs pipeline from fork PRs with access to secrets
name: CI
on:
  pull_request_target:  # Runs in base repo context with secrets!
    branches: [main]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        ref: ${{ github.event.pull_request.head.sha }}  # Checks out fork code!
    - run: make build  # Fork's Makefile executes with secrets access
      env:
        DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
# Separate workflows: untrusted build + trusted deploy
name: CI
on:
  pull_request:  # No secret access for PR builds
    branches: [main]
permissions:
  contents: read
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4  # Checks out merge commit (safe)
    - run: npm ci && npm test   # No secrets needed for build/test
    - uses: actions/upload-artifact@v4
      with:
        name: build-output
        path: dist/

緩和チェチE��リスチE/h3>
  • pull_request_targetでPRヘッドコード�EチェチE��アウトとシークレチE��アクセスを絁E��合わせて使用しなぁE/li>
  • ビルド(非信頼�E�とチE�Eロイ�E�信頼�E��EスチE�Eジを異なるワークフローに刁E��する
  • フォークPRワークフローに承認を要求し、シークレチE��の公開を制限すめE/li>
  • コントリビューターが変更できなぁE��変�Eパイプライン定義を使用する

5�E�⃣ CICD-SEC-5 - 不十刁E��パイプラインベ�Eスのアクセス制御�E�EBAC�E�E/h2> High

概要E/h3>

パイプラインベ�Eスのアクセス制御�E�EBAC�E��E、パイプラインがアクセスできるリソースを管琁E��ます:クラウドアカウント、Kubernetesクラスタ、データベ�Eス、�E部サービスなど。不十刁E��PBACは、パイプラインが忁E��以上に庁E��アクセス権を持つことを意味し、最小権限�E原則に違反します、E/p>

リスク

過度に権限を持つパイプラインは、意図した篁E��を�Eるかに趁E��たリソースにアクセスするために悪用される可能性があります。軽微なサービスの侵害されたビルドパイプラインが、本番チE�Eタベ�Eスへのアクセス、インフラストラクチャの変更、また�E他�E環墁E��のピ�EチE��に使用される恐れがあります、E/p>

脁E��なコード侁E/h3>
YAML (GitLab CI) ❁E悪ぁE��E/span>
# Pipeline with admin-level cloud credentials
deploy:
  stage: deploy
  script:
    - aws configure set aws_access_key_id $AWS_ACCESS_KEY
    - aws configure set aws_secret_access_key $AWS_SECRET_KEY
    # This key has AdministratorAccess policy!
    - aws s3 sync dist/ s3://my-bucket/
    - aws ecs update-service --cluster prod --service myapp
    # Same credentials could access ANY AWS resource

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: Deploy
on:
  push:
    branches: [main]
permissions:
  id-token: write  # For OIDC
  contents: read
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: aws-actions/configure-aws-credentials@v4
      with:
        role-to-assume: arn:aws:iam::123456:role/deploy-s3-only
        # Scoped role: only s3:PutObject on specific bucket
        aws-region: us-east-1
    - run: aws s3 sync dist/ s3://my-bucket/

緩和チェチE��リスチE/h3>
  • CI/CDでの静的な賁E��惁E��の代わりに、クラウドアクセスにOIDCフェチE��ーションを使用する
  • パイプラインごとにIAMロールをスコープし、そのパイプラインが忁E��とするリソースのみに限定すめE/li>
  • 環墁E��と�E�スチE�Eジングvs.本番�E�にチE�Eロイメントロールを�E離する
  • パイプラインのアクセスパターンを監査し、スコープ外�Eリソースアクセスにアラートを出ぁE/li>

6�E�⃣ CICD-SEC-6 - 不十刁E��賁E��惁E��の衛生管琁E/h2> Critical

概要E/h3>

CI/CDパイプラインは多数の賁E��惁E��を扱ぁE��す:APIキー、クラウドトークン、レジストリパスワード、SSHキー、署名証明書など。賁E��惁E��の衛生管琁E��不十刁E��場合、パイプラインファイルへのシークレチE��のハ�Eドコード、ログへのシークレチE��の出力、暗号化されてぁE��ぁE��ークレチE��ストレージの使用、賁E��惁E��のローチE�Eション未実施が含まれます、E/p>

リスク

漏洩したCI/CD賁E��惁E��は、最も一般皁E��初期アクセスベクターの一つです。ビルドログに露出した、リポジトリにコミットされた、また�E暗号化なしで保存されたシークレチE��は、攻撁E��E��本番シスチE��、クラウドアカウント、アーチE��ファクトレジストリへの直接アクセスを提供します、E/p>

脁E��なコード侁E/h3>
Bash (CI Script) ❁E悪ぁE��E/span>
#!/bin/bash
# Secrets hardcoded and leaked in logs
export DOCKER_PASSWORD="MyS3cret!"         # Hardcoded!
echo "Logging in with $DOCKER_PASSWORD"  # Printed to logs!

docker login -u admin -p "$DOCKER_PASSWORD" registry.example.com
docker push registry.example.com/myapp:latest

# AWS credentials in environment  Evisible in process listing
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCY"
aws s3 cp artifact.zip s3://releases/

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: Publish
on:
  push:
    tags: ['v*']
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: docker/login-action@v3  # Handles credentials securely
      with:
        registry: registry.example.com
        username: ${{ secrets.DOCKER_USER }}   # Masked in logs
        password: ${{ secrets.DOCKER_TOKEN }}  # Short-lived token
    - run: |
        docker build -t registry.example.com/myapp:${{ github.ref_name }} .
        docker push registry.example.com/myapp:${{ github.ref_name }}

緩和チェチE��リスチE/h3>
  • パイプライン定義、スクリプト、ソースコードにシークレチE��をハードコードしなぁE/li>
  • 自動ログマスキング機�Eを持つCI/CDプラチE��フォームのシークレチE��管琁E��使用する
  • すべてのCI/CD賁E��惁E��を定期皁E��ローチE�Eションし、可能な限り短期トークンを使用する
  • リポジトリとビルドログで誤って露出したシークレチE��をスキャンする

7�E�⃣ CICD-SEC-7 - 安�EでなぁE��スチE��設宁E/h2> High

概要E/h3>

CI/CDシスチE���E�Eenkins、GitLab、GitHub Actionsランナ�E�E��E、安�EでなぁE��フォルト設定で実行されてぁE��ことが多くあります。これには、古ぁE��フトウェアバ�Eジョン、E��出した管琁E��ンターフェース、無効化されたセキュリチE��機�E、E��度に許可皁E��ネットワークアクセス、�Eロジェクト間で共有されるセルフ�Eストランナ�Eが含まれます、E/p>

リスク

誤設定されたCI/CDインフラストラクチャは、ビルド環墁E��の不正アクセス、シークレチE��の傍受、�E部ネットワークへのピ�EチE��に悪用される可能性があります。�E有�Eセルフ�Eストランナ�Eでは、侵害されぁEつのワークフローが他�Eプロジェクトにも影響を与えるクロスプロジェクト攻撁E��可能になります、E/p>

脁E��なコード侁E/h3>
Groovy (Jenkins) ❁E悪ぁE��E/span>
// Jenkins with insecure configuration
// - Script console enabled without auth
// - Agent-to-controller access unrestricted
// - Outdated plugins with known CVEs

pipeline {
  agent any  // Runs on any available agent  Eno isolation
  stages {
    stage('Build') {
      steps {
        // Running as root on shared agent
        sh 'whoami'  // root
        sh 'docker build -t myapp .'
      }
    }
  }
}

安�Eなコード侁E/h3>
Groovy (Jenkins) ✁E良ぁE��E/span>
pipeline {
  agent {
    kubernetes {  // Ephemeral, isolated pod per build
      yaml """
        apiVersion: v1
        kind: Pod
        spec:
          securityContext:
            runAsNonRoot: true
            runAsUser: 1000
          containers:
          - name: builder
            image: builder:1.2.3
            securityContext:
              allowPrivilegeEscalation: false
              readOnlyRootFilesystem: true
      """
    }
  }
  stages {
    stage('Build') {
      steps {
        container('builder') {
          sh 'make build'
        }
      }
    }
  }
}

緩和チェチE��リスチE/h3>
  • 吁E��ルド後に破棁E��れるエフェメラルで刁E��されたビルド環墁E��コンチE��/VM�E�を使用する
  • CI/CDプラチE��フォームとすべてのプラグインを最新バ�Eジョンに更新する
  • ビルド環墁E��ら�Eネットワークアクセスを制限し、不要な送信トラフィチE��をブロチE��する
  • ビルドエージェントを最小限のケイパビリチE��と読み取り専用ファイルシスチE��で非rootとして実行すめE/li>

8�E�⃣ CICD-SEC-8 - サードパーチE��サービスの管琁E��れてぁE��ぁE��用

High

概要E/h3>

CI/CDパイプラインは、コード品質チE�Eル、セキュリチE��スキャナ�E、E��知シスチE��、デプロイメント�EラチE��フォームなどのサードパーチE��サービスと統合されることが多くあります。これらの統合にはアクセスト�Eクンと権限が付与され、信頼チェーンが形成されます。管琁E��れてぁE��ぁE��用とは、サードパーチE��サービスが何にアクセスし何ができるか�E可視性がなぁE��とを意味します、E/p>

リスク

侵害されたサードパーチE��サービス�E�Eodecov侵害のような�E��E、ソースコード、シークレチE��、ビルドアーチE��ファクトにアクセスできます。ガバナンスがなぁE��、チームは未知のサービスに過剰な権限を付与し、サプライチェーンに不可視�E攻撁E�Eクターを作り出す可能性があります、E/p>

脁E��なコード侁E/h3>
YAML (GitHub Actions) ❁E悪ぁE��E/span>
name: CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: npm test
    # Unknown third-party action with full repo access
    - uses: random-org/code-analysis@main  # Unpinned, unvetted!
      with:
        token: ${{ secrets.GITHUB_TOKEN }}   # Full token access!
    # Uploading coverage to external service with repo token
    - run: |
        bash <(curl -s https://example.com/uploader.sh)  # Remote script!

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: CI
on: push
permissions:
  contents: read
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: npm test
    # Vetted action pinned to SHA
    - uses: github/codeql-action/analyze@8a470fddafa5cbc14  # Pinned SHA
    # Upload via official CLI tool, not remote scripts
    - uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673
      with:
        token: ${{ secrets.CODECOV_TOKEN }}  # Scoped token
        fail_ci_if_error: true

緩和チェチE��リスチE/h3>
  • CI/CDと統合されたすべてのサードパーチE��サービスのインベントリを維持すめE/li>
  • サードパーチE��アクションをSHAハッシュにピン留めし、採用前に監査する
  • パイプラインでリモートスクリプト�E�Eurl | bash�E�を実行しなぁE/li>
  • サードパーチE��統合に付与された権限を定期皁E��レビューし最小化する

9�E�⃣ CICD-SEC-9 - 不適刁E��アーチE��ファクト整合性検証

High

概要E/h3>

ビルドアーチE��ファクト(コンチE��イメージ、バイナリ、パチE��ージ�E��ECI/CDパイプラインを通じて本番環墁E��配信されます。整合性検証がなぁE��、アーチE��ファクト�Eビルド中、転送中、アーチE��ファクトレジストリ冁E��デプロイ時�EぁE��れ�Eポイントでも改ざんされる可能性があります。これにより、コードから本番までの信頼チェーンが破壊されます、E/p>

リスク

改ざんされたアーチE��ファクトには、バチE��ドア、�Eルウェア、また�E変更されたロジチE��が含まれる可能性があります。署名と検証がなぁE��、ビルド後にアーチE��ファクトが変更されたかどぁE��を検�Eする方法がありません。攻撁E��E�Eレジストリ冁E�E正規イメージを置き換えたり、転送中のアーチE��ファクトを傍受できます、E/p>

脁E��なコード侁E/h3>
Bash ❁E悪ぁE��E/span>
#!/bin/bash
# Build and deploy without any integrity checks
docker build -t myregistry.com/app:latest .
docker push myregistry.com/app:latest

# On deployment side  Eno verification
docker pull myregistry.com/app:latest  # Could be tampered!
docker run myregistry.com/app:latest   # Tag is mutable!

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: Build and Sign
on:
  push:
    tags: ['v*']
permissions:
  id-token: write
  packages: write
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: |
        # Build with immutable tag (SHA)
        docker build -t myregistry.com/app:${{ github.sha }} .
        docker push myregistry.com/app:${{ github.sha }}
    - uses: sigstore/cosign-installer@v3
    - run: |
        # Sign image with keyless signing (Sigstore)
        cosign sign myregistry.com/app:${{ github.sha }}
        # Generate and attach SBOM
        syft myregistry.com/app:${{ github.sha }} -o spdx-json > sbom.json
        cosign attest --predicate sbom.json myregistry.com/app:${{ github.sha }}

緩和チェチE��リスチE/h3>
  • Cosign/Sigstoreまた�ENotaryを使用してすべてのビルドアーチE��ファクト(イメージ、バイナリ�E�に署名すめE/li>
  • アドミチE��ョンコントローラー�E�Eyverno、OPA Gatekeeper�E�でチE�Eロイ時に署名を検証する
  • :latestのような変更可能なタグの代わりに不変�Eタグ�E�EHAダイジェスト)を使用する
  • ソースからアーチE��ファクトまでの検証可能なチェーンを確立するためにSLSAプロベナンスを実裁E��めE/li>

🔟 CICD-SEC-10 - 不十刁E��ログ記録と可視性

Medium

概要E/h3>

CI/CD環墁E�E重要なセキュリチE��イベントを生�Eします:パイプラインの実行、設定変更、シークレチE��アクセス、デプロイメント活動など。包括皁E��ログ記録と監視がなぁE��、パイプライン冁E�E悪意�Eある活動�E検�Eされず、インシチE��ト対応が著しく妨げられます、E/p>

リスク

CI/CD活動�E可視性がなぁE��、攻撁E��E�Eアラートをトリガーすることなく、パイプラインの変更、シークレチE��の流�E、アーチE��ファクト�E改ざんが可能です。監査証跡の欠如により、侵害の篁E��と影響を特定することが不可能になります、E/p>

脁E��なコード侁E/h3>
Bash ❁E悪ぁE��E/span>
#!/bin/bash
# Pipeline with no logging or audit trail
echo "Starting deployment..."
kubectl apply -f deploy.yaml
echo "Done."

# No record of: who triggered this, what changed,
# which image was deployed, what secrets were accessed
# Build logs expire after 30 days with no archival

安�Eなコード侁E/h3>
YAML (GitHub Actions) ✁E良ぁE��E/span>
name: Audited Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Log deployment metadata
      run: |
        echo "=== Deployment Audit Log ==="
        echo "Triggered by: ${{ github.actor }}"
        echo "Commit: ${{ github.sha }}"
        echo "Ref: ${{ github.ref }}"
        echo "Workflow: ${{ github.workflow }}"
        echo "Run ID: ${{ github.run_id }}"
    - name: Deploy with audit
      run: |
        kubectl apply -f deploy.yaml 2>&1 | tee deploy.log
        # Send audit event to SIEM
        curl -X POST "${{ secrets.SIEM_WEBHOOK }}" \
          -d '{"event":"deploy","actor":"${{ github.actor }}","sha":"${{ github.sha }}"}'

緩和チェチE��リスチE/h3>
  • すべてのCI/CDプラチE��フォーム活動(パイプライン変更、シークレチE��アクセス、ユーザーアクション�E��E監査ログを有効化すめE/li>
  • CI/CD監査ログを改ざん防止ストレージを持つ雁E��型SIEMに転送すめE/li>
  • 不審な活動に対するアラートを作�Eする�E�異常なチE�Eロイ時間、設定変更、新しいサービス統吁E/li>
  • コンプライアンスとフォレンジチE��刁E��のためにビルドとチE�Eロイメント�Eログを保持する

📊 サマリーチE�Eブル

ID 脁E��性 深刻度 主な対筁E/th>
CICD-SEC-1不十刁E��フロー制御メカニズムCriticalブランチ保護、忁E��承認、環墁E��ーチE/td>
CICD-SEC-2不十刁E��IDおよびアクセス管琁E/td>Critical最小権限トークン、OIDC、MFA、賁E��惁E��ローチE�Eション
CICD-SEC-3依存関係チェーンの悪用CriticalロチE��ファイル、ハチE��ュ検証、�Eライベ�Eトレジストリ、SCA
CICD-SEC-4パイプライン実行�Eポイズニング�E�EPE�E�E/td>CriticalビルチEチE�Eロイ刁E��、不変パイプライン定義、フォーク制御
CICD-SEC-5不十刁E��PBACHighOIDCフェチE��ーション、スコープ付きIAMロール、環墁E�E離
CICD-SEC-6不十刁E��賁E��惁E��の衛生管琁E/td>CriticalシークレチE��管琁E��ログマスキング、ローチE�Eション、シークレチE��スキャン
CICD-SEC-7安�EでなぁE��スチE��設宁E/td>Highエフェメラルランナ�E、E��root、�Eラグイン更新、ネチE��ワーク刁E��
CICD-SEC-8サードパーチE��サービスの管琁E��れてぁE��ぁE��用Highサービスインベントリ、SHAピン留め、リモートスクリプト禁止
CICD-SEC-9不適刁E��アーチE��ファクト整合性検証HighCosign署名、アドミチE��ョン制御、SLSAプロベナンス
CICD-SEC-10不十刁E��ログ記録と可視性Medium監査ログ、SIEM統合、アラート、ログ保持