Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、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エージェント・コンポーネントは、インスツルメンテッド・ノード(ホスト)ごとにデプロイされ、ランタイム・ワークロードの動作を継続的に観察します。収集される情報には次のようなものがあります。
これらの2つの情報を関連付けることで、Sysdigは、イメージにインストールされただけのパッケージと実行時にロードされるパッケージを区別することができます。この情報は、脆弱性情報に反映されます。
現在サポートされているKubernetesコンテナのランタイムです。
Snyk.ioの脆弱性管理ワークフローでは、ランタイムのEVE情報を利用して、検出された脆弱性をフィルタリングしたり、優先順位をつけたりすることができ、上記と同様のアプローチをとります。
SysdigのEVE情報をSnykの脆弱性管理ワークフローに統合するには、以下の条件を満たしている必要があります。
SnykとSysdigの両方のインスツルメンテーションが設置されている必要があります。お客様のインフラストラクチャーに既にインストールされているコンポーネントに対応する、以下のインストールパスを選択してください。
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
$ 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
パラメーター:
SysdigのシークレットをSnykのネームスペースにコピーします。
データが初期化され、初期プロファイルの送信が開始されるまで1時間ほどかかりますが、その後はSnykの脆弱性管理ワークフローを使ってEVEのデータを活用できるようになります。
EVEとEVE Connectorを有効にせず、Sysdig helm chartを既にインストールしている場合は、以下の作業が必要です。
以下の内容で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 は以下のコマンドでアップグレードします
$ helm upgrade --namespace sysdig-agent sysdig-agent \
--reuse-values \
-f sysdig-values.yaml \
sysdig/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 -