Snykとの統合による効果的な脆弱性のエクスポージャー

By 清水 孝郎 - FEBRUARY 17, 2022

SHARE:

本文の内容は、2022年2月18日現在における、docs.sysdig.com上のIntegrate Effective Vulnerability Exposure with Snyk(https://docs.sysdig.com/en/docs/sysdig-secure/integrate-effective-vulnerability-exposure-with-snyk/#copy-the-sysdig-secret) を元に日本語に翻訳・再構成した内容となっております。

効果的な脆弱性のエクスポージャー

Effective Vulnerability Exposure(略してEVE)は、Sysdigが開発した新技術で、特定のコンテナ・イメージの実行時の挙動と、そのソフトウェア・パッケージで検出された脆弱性を組み合わせます。この組み合わせにより、どのパッケージが実行時に効果的にロードされているか、つまりインフラにとってより直接的なセキュリティの脅威となっているかを判断します。

組織にとって実際のリスクとなる脆弱性に優先順位をつけることは、脆弱性管理プログラムを成功させるための最も重要な要素の一つです。イメージには何百もの脆弱性が含まれていることがよくあります。これに、重要なインフラストラクチャーのデプロイメントで実行されているワークロードの数を掛けると、修正すべき潜在的な脆弱性の総数が実際には非常に多いことが容易にわかります。

リストのフィルタリングを開始するために、一般的に使用され受け入れられている多くの優先順位付け基準があります(深刻度とCVSSスコアリング、エクスプロイト可能性の指標、ランタイムスコープとその他の環境の考慮事項など)。EVEは、観察されたランタイムの動作に完全に裏付けられた新しい基準であり、脆弱性管理ツールベルトに追加することで、優先的に対処する必要のある脆弱性の作業セットを大幅に削減することができます。

テクノロジーの概要

Sysdigエージェント・コンポーネントは、インスツルメンテッド・ノード(ホスト)ごとにデプロイされ、ランタイム・ワークロードの動作を継続的に観察します。収集される情報には次のようなものがあります。

  • イメージ・ランタイムの動作プロファイル:アクセスしたファイル、実行中のプロセス、システムコールなど。詳細は「イメージのプロファイル」を参照してください。
  • ランタイムコンテナが使用するコンテナイメージに関連する「Bill Of Materials」:使用されたパッケージやバージョン、それらに一致する脆弱性など。
これらの2つの情報を関連付けることで、Sysdigは、イメージにインストールされただけのパッケージと実行時にロードされるパッケージを区別することができます。この情報は、脆弱性情報に反映されます。

サポートされているパッケージ・フォーマット/パッケージ・マネージャー

  • Debian (deb)
  • Alpine (apk)
  • RHEL (rpm)
  • Ubuntu (deb)
  • Java (Maven)
  • Golang
  • NPM (JS)
  • Python (Pypi)
現在サポートされているKubernetesコンテナのランタイムです。
  • Docker daemon
  • ContainerD

Snykとの統合における概要

Snyk.ioの脆弱性管理ワークフローでは、ランタイムのEVE情報を利用して、検出された脆弱性をフィルタリングしたり、優先順位をつけたりすることができ、上記と同様のアプローチをとります。

SysdigのEVE情報をSnykの脆弱性管理ワークフローに統合するには、以下の条件を満たしている必要があります。
  • 両製品を使用するためのアカウントと作業用ライセンスを持っていること:Snyk, Sysdig Secure
  • 両方の製品を使って対象のランタイムノードをインストゥルメントする:Snyk, Sysdig Secure
  • SysdigアカウントでSysdig EVEを明示的に有効にするよう、Sysdigのコマーシャル・コンタクトに依頼してください。特に、以下の機能のフラグが必要です。
    • Image Profiling
    • Scanning v2 EVE
    • Scanning v2 EVE integration
SnykとSysdigの両方のインスツルメンテーションが設置されている必要があります。お客様のインフラストラクチャーに既にインストールされているコンポーネントに対応する、以下のインストールパスを選択してください。

インストール手順

Snykがインストールされていて、Sysdigがインストールされていない場合

  1. Snykインスツルメンテーションを実行するために、現在使用しているネームスペースを確認してください。デフォルトはsnyk-monitorです。最後のステップでシークレットをコピーする際に必要になります。
  2. 公式のhelm chartを使ってSysdig agent bundleをインストールします。

    helmにsysdiglabチャートを追加します:

    $ helm repo add sysdig https://charts.sysdig.com

    登録されているすべてのチャートリポジトリからチャートのリストを更新します。:

    $ helm repo update

    ネームスペース sysdig-agentを作成します:

    kubectl create ns sysdig-agent

    Sysdig agent bundleをインストールして、必須のパラメータを提供し、eveとeveConnectorフラグを有効にし、その他の設定キーを好みに合わせて調整します。

    $ helm install --namespace sysdig-agent sysdig-agent \
         --set clusterName="sysdig-eve" \
         --set sysdig.accessKey="<access-key>" \
         --set sysdig.settings.collector=collector-static.sysdigcloud.com \
         --set sysdig.settings.collector_port=6443 \
         --set nodeAnalyzer.apiEndpoint="secure.sysdig.com" \
         --set nodeAnalyzer.runtimeScanner.deploy=true \
         --set nodeAnalyzer.runtimeScanner.eveConnector.deploy=true \
         sysdig/sysdig
    
  3. Sysdigのエージェントイメージ、RuntimeScanner、EveConnectorポッドが稼働しており、健全であることを確認します。
    $ kubectl -n sysdig-agent get po
    NAME                                             READY   STATUS    RESTARTS   AGE
    sysdig-agent-8rmkt                               1/1     Running   0          24s
    sysdig-agent-eveconnector-api-74767bbf54-lw97g   1/1     Running   0          23s
    sysdig-agent-hprw7                               1/1     Running   0          24s
    sysdig-agent-jrx2q                               1/1     Running   0          24s
    sysdig-agent-node-analyzer-5hltb                 4/4     Running   0          24s
    sysdig-agent-node-analyzer-b5ftm                 4/4     Running   0          24s
    sysdig-agent-node-analyzer-cd8rc                 4/4     Running   0          24s
    


    パラメーター:

    • clusterName: このクラスターをグローバルに識別するためのクラスター名を設定します.上記の例では “sysdig-eve”
    • sysdig.accessKey: Sysdig agent key
    • sysdig.settings.collector: リージョンに応じたコレクター・アドレスの設定
      • US-east-1: collector.sysdigcloud.com
      • US-west-1: ingest-us2.app.sysdig.com
      • EU: ingest-eu1.app.sysdig.com
    • nodeAnalyzer.apiEndpoint: リージョンに応じたAPIエンドポイントの設定
      • US-east-1: secure.sysdig.com
      • US-west-1: us2.app.sysdig.com
      • EU: eu1.app.sysdig.com
    • nodeAnalyzer.runtimeScanner.deployとnodeAnalyzer.runtimeScanner.eveConnector.deployを設定します。
      • 両方ともtrueに設定します。
  4. SysdigのシークレットをSnykのネームスペースにコピーします。

    データが初期化され、初期プロファイルの送信が開始されるまで1時間ほどかかりますが、その後はSnykの脆弱性管理ワークフローを使ってEVEのデータを活用できるようになります。


EVEなしでSysdigがインストールされており、Snykがインストールされていない場合

EVEとEVE Connectorを有効にせず、Sysdig helm chartを既にインストールしている場合は、以下の作業が必要です。
  1. Snyk instrumentationをドキュメントに従ってインストールする
  2. Sysdigエージェント・ヘルムチャートの再インストール(およびアップグレード):

    以下の内容でsysdig-values.yamlファイルを作成します:

    nodeAnalyzer:
      runtimeScanner:
        deploy: true
        image:
          repository: sysdig/vuln-runtime-scanner
          tag: 0.1.0
          digest:
          pullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 150m
            memory: 512Mi
            ephemeral-storage: "2Gi"
          limits:
            cpu: 1000m
            memory: 1536Mi
            ephemeral-storage: "4Gi"
        settings:
          eveEnabled: false
        eveConnector:
          deploy: true
          image:
            repository: sysdig/eveclient-api
            tag: 1.0.0
            digest:
            pullPolicy: IfNotPresent
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 1000m
              memory: 512Mi
          settings:
            replicas: 1
    

    Helm は以下のコマンドでアップグレードします

    1. $ helm upgrade --namespace sysdig-agent sysdig-agent \
          --reuse-values \
           -f sysdig-values.yaml \
           sysdig/sysdig
      

    Sysdigも Snykも無い場合

    1. Sysdig agent bundleを公式のhelm chartを用いて、最初のインストールシナリオの手順とパラメータを含めてインストールします。
    2. Snyk instrumentationをそのドキュメントに従ってインストールします。
    3. SysdigのSecretをSnykのネームスペースにコピーします。

    Sysdigシークレットのコピー

    SysdigとSnykインスツルメンテーションの両方がデプロイされ、正常に動作するようになったら、Sysdigのネームスペースで自動生成されたシークレットをSnykのネームスペースにコピーする必要があります。

    Sysdig(sysdig-agent)とSnyk(snyk-monitor)のデフォルトのネームスペースを仮定して、あなたの特定の値に置き換えてください:

    $ kubectl get secret -n sysdig-agent sysdig-eve-secret -o json | jq '{ "apiVersion": .apiVersion, "kind": .kind, "type": .type, "metadata": { "name": .metadata.name }, "data": .data }' | kubectl apply -n snyk-monitor -f -