テックカリキュラム

ゼロトラスト × CI/CD(署名・検証 / Sigstore) ── サプライチェーンを守る次世代セキュリティ

ゼロトラスト × CI/CD(署名・検証 / Sigstore) ── サプライチェーンを守る次世代セキュリティ

はじめに

近年のセキュリティインシデントでは、ソフトウェアサプライチェーン攻撃が大きな問題となっています。

  • 改ざんされたコンテナイメージ
  • 悪意ある依存パッケージ
  • CI/CDパイプラインの侵害

これらに対抗するために重要なのが、ゼロトラスト × 署名・検証です。

本記事では、Sigstoreを中心にCI/CDパイプラインでの実装方法を解説します。


1. ゼロトラストとCI/CDの関係

従来のCI/CDは「ビルド済みアーティファクトを信頼する」前提でしたが、ゼロトラストでは以下が必要です:

  • 誰がビルドしたか証明する
  • 改ざんされていないことを保証する
  • 実行前に必ず検証する

2. Sigstoreとは?

Sigstoreは、オープンソースのソフトウェア署名・検証フレームワークです。

主要コンポーネント

コンポーネント役割
cosignコンテナイメージ署名
Fulcio証明書発行(OIDCベース)
Rekor透明ログ(改ざん検知)

3. 全体アーキテクチャ

 CI/CD Pipeline ↓ ビルド(Docker) ↓ 署名(cosign) ↓ Rekorログ登録 ↓ Kubernetesデプロイ時に検証 

4. コンテナイメージの署名(cosign)

① インストール

brew install cosign

② 署名実行

cosign sign --key cosign.key myrepo/myimage:latest

③ OIDCベース署名(推奨)

cosign sign myrepo/myimage:latest

GitHub Actionsなどと連携可能です。


5. 検証(verify)

cosign verify myrepo/myimage:latest

検証内容:

  • 署名の正当性
  • 証明書の有効性
  • Rekorログとの整合性

6. Kubernetesでの強制(Admission制御)

Cosign Policy Controller

apiVersion: policy.sigstore.dev/v1beta1 kind: ClusterImagePolicy spec: images: - glob: "myrepo/*" authorities: - keyless: identities: - issuer: https://token.actions.githubusercontent.com 

未署名イメージはデプロイ不可にします。


7. CI/CD統合(GitHub Actions例)

- name: Sign Image run: cosign sign $IMAGE

OIDCを利用することで鍵管理不要になります。


8. SBOMとの連携

SBOM(Software Bill of Materials)と組み合わせることで、依存関係の可視化が可能です。

cosign attach sbom --sbom sbom.json myimage

9. ゼロトラストCI/CD設計

 Build → Sign → Verify → Deploy → Runtime検証 
  • Build:信頼された環境
  • Sign:必ず署名
  • Verify:必ず検証

10. ベストプラクティス

  • 鍵レス署名(OIDC)を利用
  • すべてのイメージを署名
  • Admissionで強制
  • Rekorログを活用

まとめ

  • CI/CDもゼロトラスト対象
  • Sigstoreで署名・検証を実現
  • Kubernetesで強制することで安全性向上
  • サプライチェーン防御の中核技術

これからの時代、「署名されていないソフトは動かさない」が標準になります。