Sysdig

SCSK株式会社

ブログ

HOME Developer Square ブログ Sysdigのサプライチェーンポリシーを試してみる

Sysdigのサプライチェーンポリシーを試してみる

SCSK技術者によるブログ!
お久しぶりです。第34回担当の川杉です。今回はSysdigのサプライチェーンポリシーのご紹介です。
それでは、参りましょう!

サプライチェーン攻撃とは?

皆さん、ソフトウェアサプライチェーンってご存知でしょうか。ソフトウェアサプライチェーンとは、ソースコードやライブラリ、ビルド、テストなど、ソフトウェアが本番環境でリリースされるまでの一連のプロセスとその関連要素の総称です。近年、海外を中心にこのソフトウェアサプライチェーンを狙った攻撃が大きな注目を集めています。従来の攻撃は「公開されたWebサービス」や「VPN機器」など、外部に露出しているシステムの脆弱性を狙うケースが主流でした。しかし、サプライチェーン攻撃では、ソフトウェアの供給口が標的となります。

例として下記のような攻撃があげられます。

  • ビルド環境の乗っ取り
    CI/CDサーバなどを攻撃し、コンテナイメージやバイナリに悪意あるコードを混入させる
  • 依存パッケージのすり替え
    パッケージマネージャーの脆弱性を利用し、正規パッケージをマルウェアにすり替える
  • コンテナレジストリの改ざん
    正規のリポジトリやレジストリに侵入し、コンテナイメージのタグ名をそのままに中身を書き換えることで悪意あるイメージを配布する

開発者や運用者が信頼しているプロセスを逆手に取ることで、攻撃の発見を遅らせることができ、甚大な被害を与える可能性があります。このような攻撃の対策にはパッケージの脆弱性対応だけでなく、SBOMによるソフトウェアの透明性の確保や、コンテナイメージの署名の確認による改ざんのチェックなどが有効です。

サプライチェーンポリシーについて

Sysdigのサプライチェーンポリシーは対象イメージに署名が付与されているか確認します。署名がない、もしくは署名検証に失敗したイメージはポリシー違反として検知されます。署名検証はコンテナイメージのデプロイ前にSysdig Admission Controllerによって実施されます。また、検知後のアクションとしてデプロイのブロックもしくはCLIでのWarning表示のどちらかを設定可能です。コンテナイメージが改ざんされている場合、署名検証で失敗します。サプライチェーンの保護に役立つナイスな機能ですね。
機能の詳細は下記のSysdig公式ドキュメントをご参照ください。
https://docs.sysdig.com/en/docs/sysdig-secure/policies/supply_chain/

事前準備

ここからは実際に作成例を見てサプライチェーンポリシーについて理解を深めていきましょう。
まずは早速検証の準備から始めていきましょう。
今回の検証で事前に用意するものは以下の通りです。

  • CosignをインストールするLinuxサーバ
  • Admission Controllerおよびsupply chainを有効化したSysdig Agentのデプロイ

Admission ControllerおよびSupply chain policyの有効化手順
Shieldのvalues.yamlに下記を追記ください。

features:
  admission_control:
    supply_chain:
      enabled: true
      image_signature:
        enabled: true
  supply_chain:
    enabled: true
    image_signature:
      cosign:
        enabled: true
 

Admission Controller有効化の詳細は下記をご参照ください。
https://docs.sysdig.com/en/sysdig-secure/install-shield-linux-kubernetes/#admission-controller

いざ検証

まずはLinuxサーバにcosignを導入し、公開鍵を生成します。
※本番導入を前提に検証する場合はお手元の環境で利用しているコンテナイメージ署名の公開鍵やOIDCプロバイダー情報を設定してください。検証の際は下記URLの制限事項をご参考ください。
https://docs.sysdig.com/en/docs/sysdig-secure/policies/supply_chain_policies/image-signature-validation/#limitations

任意のLinuxサーバにログインし、下記コマンドを実行します。

$LATEST_VERSION=$(curl https://api.github.com/repos/sigstore/cosign/releases/latest | grep tag_name | cut -d : -f2 | tr -d "v\", ") curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-${LATEST_VERSION}-1.x86_64.rpm"sudo rpm -ivh cosign-${LATEST_VERSION}-1.x86_64.rpm

サーバのパッケージマネージャーによってインストール方法は異なります。 詳しくは下記URLをご確認ください。
https://docs.sigstore.dev/cosign/system_config/installation/

cosignで公開鍵と秘密鍵を生成し、公開鍵の内容を確認します。

$cosign generate-key-pair
Enter password for private key:
Enter password for private key again:
Private key written to cosign.key
Public key written to cosign.pub

$cat cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpKNS2WY8kBPidZE2JuFwZE2VJ/yd
uYCtTgSe3TzlcBugrbQ1aHyQ0z4PNEfZNW/lIYsQjPUEP/KNewL65HJFew==
-----END PUBLIC KEY-----
次にサプライチェーンポリシーを作成します。
サプライチェーンポリシーには先程生成した公開鍵情報が必要となります。

20251217-2.png

これで準備完了です。
次に適当なコンテナをpullして試してみてみます。

$oc run redis --image=redis -n default
Warning: [Supply Chain Engine] Failed checks for container redis. Failing policies: [test-policy]
Warning: Violations:
Warning: x cannot retrieve image signature manifest: failed to load manifest "index.docker.io/library/redis:sha256-43355efd22490e31ca14b9d569367d05121e2be61fd8e47937563ae2a80952ae.sig" with non-retryable error: failed to pull image from remote registry "index.docker.io/library/redis:sha256-43355efd22490e31ca14b9d569367d05121e2be61fd8e47937563ae2a80952ae.sig": cannot pull manifest "index.docker.io/library/redis:sha256-43355efd22490e31ca14b9d569367d05121e2be61fd8e47937563ae2a80952ae.sig" from remote: error attempting to get manifest from remote: GET https://index.docker.io/v2/library/redis/manifests/sha256-43355efd22490e31ca14b9d569367d05121e2be61fd8e47937563ae2a80952ae.sig: MANIFEST_UNKNOWN: manifest unknown; unknown tag=sha256-43355efd22490e31ca14b9d569367d05121e2be61fd8e47937563ae2a80952ae.sig

想定通り検知されました。
今回は検知後のアクションをWarningにしているため、CLI上で警告内容が表示されます。
Warning: x cannot retrieve image signature manifestと表示されているため、コンテナイメージに署名が付与されておらず取得できなかったみたいですね。

Sysdig GUIの画面でも確認してみましょう。
検知結果はEvents画面から確認可能です。
下記のように表示されます。

20251217-3.png

最後に

今回はサプライチェーンポリシーの紹介でした。
クラウドネイティブ環境では脆弱性スキャンだけでは防げない領域があり、そこを狙われる攻撃は今後も出現することは想像に難くありません。
SysdigではSBOMのチェックもできるため、ソフトウェアサプライチェーン対策ツールとしても有用です。ソフトウェアサプライチェーン対策にお悩みの方はぜひ一度SysdigのPoCを申し込んでお試しください。

担当者紹介

SCSK 川杉
担当者名
川杉
コメント
3年ほど前からSysdigを中心にコンテナ・Kubernetes領域で仕事をしています。社内でコンテナ技術の啓蒙活動も積極的に行っています。
保有資格
Certified Kubernetes Administrator
Certified Kubernetes Security Specialist

SCSK技術者ブログ

Sysdigのサプライチェーンポリシーを試してみる

Sysdigのサプライチェーンポリシーを試してみる

Sysdig MCP Server x Claude Desktopを試してみました【セットアップから実践まで】

Sysdig MCP Server x Claude Desktopを試してみました【セットアップから実践まで】

Sysdig運用の基本!トラブルシューティングのポイントを解説

Sysdig運用の基本!トラブルシューティングのポイントを解説

クラウドにおけるサーバーレスワークロードの保護:Sysdig Secureによるアプローチ

クラウドにおけるサーバーレスワークロードの保護:Sysdig Secureによるアプローチ

Platform Engineering Kaigi 2025 参加レポート

Platform Engineering Kaigi 2025 参加レポート

検知から対応をシームレスに! Sysdigの新機能「Response Action」でインシデント対応を迅速化

検知から対応をシームレスに! Sysdigの新機能「Response Action」でインシデント対応を迅速化

【SCSK技術者によるブログ】生成AIでSysdigエージェントのアップグレードを効率化 〜Helm values.yamlの移行作業を自動化〜

【SCSK技術者によるブログ】生成AIでSysdigエージェントのアップグレードを効率化 〜Helm values.yamlの移行作業を自動化〜

【SCSK技術者によるブログ】Sysdigの「Search」機能を体験!生成AIでクエリの学習コスト無しに脆弱性調査

【SCSK技術者によるブログ】Sysdigの「Search」機能を体験!生成AIでクエリの学習コスト無しに脆弱性調査

【SCSK技術者によるブログ】ゼロトラスト文脈でのクラウドセキュリティ、そしてSysdig

【SCSK技術者によるブログ】ゼロトラスト文脈でのクラウドセキュリティ、そしてSysdig

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ネットワークポリシー編~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ネットワークポリシー編~

【SCSK技術者によるブログ】生成AIで過検知対策を効率化!Sysdig Sageの実力検証

【SCSK技術者によるブログ】生成AIで過検知対策を効率化!Sysdig Sageの実力検証

【SCSK技術者によるブログ】なぜ今、Sysdigが選ばれるのか?動画で解説!クラウドネイティブセキュリティの最前線 - SCSKの日本語伴走サポートで安心導入

【SCSK技術者によるブログ】なぜ今、Sysdigが選ばれるのか?動画で解説!クラウドネイティブセキュリティの最前線 - SCSKの日本語伴走サポートで安心導入

【SCSK技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました

【SCSK技術者によるブログ】Serverless AgentがAzure Container Appsに対応しました

【SCSK技術者によるブログ】システムコール分析における生成AIの活用

【SCSK技術者によるブログ】システムコール分析における生成AIの活用

【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~

【SCSK技術者によるブログ】Sysdig情報アップデート~AWS連携にS3オプションが追加されました~

【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編

【SCSK技術者によるブログ】Falco初学者講座 - Exceptions編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】Falco初学者講座 - List/Macro編

【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう

【SCSK技術者によるブログ】コンテナの電力消費をSysdig Monitorで監視してみよう

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~Contianer Drift編~

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう②

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①

【SCSK技術者によるブログ】~Falco初学者に送る~ Sysdig SageでFalcoを勉強してみよう①

【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)

【 SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた(Monitor編)

【SCSK技術者によるブログ】Falco初学者講座 - condition編

【SCSK技術者によるブログ】Falco初学者講座 - condition編

【SCSK技術者によるブログ】Sysdig Sageを使ってみた

【SCSK技術者によるブログ】Sysdig Sageを使ってみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編②~

【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~

【SCSK技術者によるブログ】Sysdigをセキュアに使おう~IP Allowlist編~

【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた

【SCSK技術者によるブログ】Node ExporterをSysdig Monitorに連携してみた

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

【SCSK技術者によるブログ】Sysdigの設定をTerraformで管理してみた

【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ

【SCSK技術者によるブログ】CNAPPの理解とSysdigのカバレッジ

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~マルウェア検知編~

【SCSK技術者によるブログ】Sysdigのライセンス体系

【SCSK技術者によるブログ】Sysdigのライセンス体系

【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた

【SCSK技術者によるブログ】Sysdig とMicrosoft Entra ID間でSAML認証設定を試してみた

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~

【SCSK技術者によるブログ】Sysdigと組み合わせて効果的なソリューションのご紹介 ~ポリシーエンジン編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~

【SCSK技術者によるブログ】Sysdigの脅威検知はFalcoだけじゃない ~AWSサインインなりすまし検知編~

【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた

【SCSK技術者によるブログ】Sysdig SecureのRisks機能を試してみた

【SCSK技術者によるブログ】Sysdigの防御機能Kill Processを試してみた

【SCSK技術者によるブログ】Sysdigの防御機能Kill Processを試してみた

ページトップへ