Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Mana...

Takuma Kume
September 14, 2023

 KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes

# タイトル

KubernetesにおけるSBOMを利用した脆弱性管理

# 概要

GMOペパボでは、複数のWebサービスを複数のオンプレミスのKubernetes上で運用しています。 エンジニアは各ソフトウェアの脆弱性を管理し対応していく必要があります。

脆弱性管理において、以下の課題がありました。

- Kubernetes上で実行されている全てのコンテナイメージの脆弱性を網羅的に管理できていない
- 脆弱性の量が多すぎて全て対応するのが困難である

これらの課題に対して Trivy Operator や Dependency Track などを用いて対応してきたので、事例を紹介します。

Takuma Kume

September 14, 2023
Tweet

More Decks by Takuma Kume

Other Decks in Technology

Transcript

  1. 2 自己紹介 ホスティング事業部 SREチーム シニアエンジニア 2016年 中途入社 久米拓馬 @takumakume • 福岡在住 •

    ルアーフィッシング・珈琲焙煎 • Webアプリケーションプラットフォームの開発・ 運用 • Kubernetes / Cloudnative
  2. 今回紹介するもの 3 trivy-operator Container Container Container SBOM SBOM SBOM Dependency

    Track Kubernetes Cluster Scan Generate K8s上のワークロードのコンテナイメージから trivy-operator で SBOMを生成しDependency Track で管理
  3. 今回紹介するもの 5 • aquasecurity/trivy-operator • Kubernetes上で実行するOperator • ワークロードのコンテナイメージを対象に脆弱性のスキャンや SBOMの生成, etc…

    • Dependency Track • 継続的にSBOMを解析するためのプラットフォーム • Web UI、APIの提供 • Policy によるアラートの発行 , etc... ソフトウェアの簡単な説明
  4. 脆弱性管理における現状と課題 9 前提共有:ペパボのサービスが動くインフラ On-premises Datacenter Baremetal Servers Private Cloud “Nayh”

    (Openstack) Kubernetes Clusters Private Container Registry 10+ clusters 300+ images Public Container Registry ※ 全てのサービスがKubernetes上で動いているわけではない
  5. 脆弱性管理における現状と課題 • コンテナイメージをBuild&Pushするワークフローで trivy を実行して脆弱性を検知 • 各 Kubernetes クラスタで trivy-operator

    を実行して脆弱性を検知 • プライベートコンテナレジストリのコンテナイメージの SBOMを収集してDependency Track で管理 10 現状のコンテナ環境における脆弱性管理
  6. 脆弱性管理における現状と課題 • コンテナイメージをBuild&Pushするワークフローで trivy を実行して脆弱性を検知 → ワークフローの実装に依存しており抜けが発生する • 各 Kubernetes

    クラスタで trivy-operator を実行して脆弱性を検知 → 現状はリアルタイムの脆弱性通知のみであり、全体を継続的に管理しづらい 脆弱性が大量に通知され優先順位が高い脆弱性が埋もれる • プライベートコンテナレジストリのコンテナイメージの SBOMを収集してDependency Track で管理 → パブリックなコンテナレジストリなど管理外のイメージが抜ける 11 課題
  7. trivy-operatorによるSBOMの収集 15 SBOM Report 略 • ワークロードのコンテナイメージをスキャンし てSBOM Reportを生成 •

    v0.15.x 時点のSBOM Format は CycloneDX 1.4 • 環境変数を有効にするだけで利用可能 OPERATOR_SBOM_GENERATION_ENABLED
  8. Dependency TrackによるSBOMの管理 18 trivy-operator Container SBOM Report Dependency Track Scan

    Generate trivy-operator が SBOM を生成し Webhook で送信する Webhook Dependency TrackのAPIを実行する必要があるため trivy-operatorがWebhookを実行するだけでは実現できない
  9. Dependency TrackによるSBOMの管理 20 trivy-operator Container SBOM Report Dependency Track Scan

    Generate trivy-operator が SBOM を生成し Webhook で送信する RegoでSBOMを取り出して Dependency TrackのAPIを実行
  10. Dependency TrackによるSBOMの管理 22 課題 • Dependency Track上でどのSBOMがどのクラスタから送られてきたか分からない • 複数の Kubernetes

    クラスタがあり、それぞれ管理者が違うため脆弱性の対応を誰がやるか ハンドリングしにくい • イメージによっては複数のクラスタで同じものが使われている • → SBOM Upload時に任意のタグを付与する。既に Uploadされていたら、任意のタグを追加 で付与したい。
  11. Dependency TrackによるSBOMの管理 23 trivy-operator Container SBOM Report Dependency Track Scan

    Generate SBOM アップロード後に、対象ProjectにTagを追加する posteeのインテグレーションを改修する必要がある
  12. Dependency TrackによるSBOMの管理 24 posteeの仕組み • regoを用いたテンプレートからでインテグレーションに値を渡す Webhookで受信したBody SBOMのパスを指定して `result` に格納

     ↓ インテグレーションの実装によって、 Dependency TrackのAPIを実行し `result` (SBOM)をUpload • テンプレートを簡単に変更できるが、運用に合わせて実行する APIを変えるとなると小回り が効かない
  13. Dependency TrackによるSBOMの管理 28 trivy-operator Container SBOM Report Dependency Track Scan

    Generate takumakume/sbomreport-to-dependencytrack sbomreport- to-dependencytrack
  14. KEVを用いた脆弱性対応 30 CISA KEV(Known Exploited Vulnerabilities) catalog • 米国サイバーセキュリティ・インフラセキュリティ庁( CISA)が公開している既知の悪用が観

    測された脆弱性 • CVE IDが割り当てられている • 実際に悪用されている • 明確な是正ガイダンスが提供されている https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
  15. KEVを用いた脆弱性対応 32 Dependency Trackとの連携 KEV Database Github Actions Dependency Track

    Fetch Create Policy • KEVに登録されているCEV IDに該当するソフトウェアを検知できるように Dependency Track のPolicyとして定義
  16. KEVを用いた脆弱性対応 34 takumakume/dependency-track-policy-applier • jq があれば一覧や構造化データをパースしてPolicy化できる • KEV の JSON

    を Dependency TrackのPolicyに取り込む例: • 今後何らかのCVEリストを元にPolicy運用したい場合も柔軟に取り込める • 社内独自の対応必須 CVEリスト • etc...
  17. KEVを用いた脆弱性対応 36 DependencyTrack/dependency-track • Policy の作成 API において、Policty Violationする条件を設定することができ ない問題があった

    • ワークアラウンドとしてPolicy Create → Update で回避 • 修正版は Dependency Track 4.9でリリース予定とのこと
  18. まとめ 39 • Kubernetes 上で利用しているコンテナイメージの SBOM 収集に、 trivy-operator を使っている •

    SBOM は Dependency Track に集約している • trivy-operatorのWebhookをハンドリングしてDependency TrackにSBOMを 送信するソフトウェアを実装した • 大量の脆弱性から特に優先度の高いものをKEVを用いて判断している • KEVに登録されたCVEを元にDependency TrackのPolicyを生成するソフトウェ アを実装した