【入門編】Datadog Container Image Vulnerability ManagementによるKubernetesコンテナ脆弱性スキャンの実務運用 – 運用監視・オブザーバビリティ活用バイブル

こんにちは!Kubernetesの運用、日々のPodの管理やデプロイにお疲れ様です。

「また新しい脆弱性(CVE)のニュースが出たけれど、うちのクラスターで動いているあのコンテナイメージは大丈夫だろうか……?」
夜中にこんな不安に襲われた経験はありませんか?

世の中には数多くの脆弱性スキャナーが存在しますが、「CI/CDでビルドした瞬間」から「本番のKubernetesでランタイムとして動いている瞬間」までをシームレスに監視し、さらにオブザーバビリティ(可観測性)と完全に統合できるツールはそう多くありません。

今回は、Datadog Cloud Security Platformの強力な機能である「Container Image Vulnerability Management(コンテナイメージ脆弱性スキャン)」を取り上げます。

これをマスターすれば、バラバラだったセキュリティ情報とメトリクス・ログがDatadog上で一つに繋がり、毎日の脆弱性対応のストレスが劇的に軽くなりますよ。初心者の方にもすんなり理解できるよう、基本の「キ」から実務で使えるノウハウまで、順番に優しく紐解いていきましょう!

—

1. なぜDatadogでコンテナ脆弱性を管理するのか?(ツールの役割)

まず、「なぜわざわざDatadogを使うのか」という本質を押さえましょう。

従来の脆弱性スキャンは、「CI(JenkinsやGitHub Actionsなど)のビルド時にスキャンして、ダメなら止める」というアプローチが主流でした。しかし、これには大きな穴があります。
1. デプロイ後に新たな脆弱性が発覚する(ゼロデイや後追いでのCVE発見)
2. ベースイメージの更新漏れ
3. 「で、結局どの本番ポッドがその脆弱性の影響を受けているの?」という優先順位付け(トリアージ)の難しさ

Datadogのコンテナ脆弱性管理は、Kubernetesクラスターに常駐するDatadog Agent(正確にはCluster AgentやNode Agent)が、今まさに動いているイメージのSBOM(ソフトウェア部品表)を自動で抽出し、Datadogの脅威データベースと突合してくれます。

つまり、「CI/CDでのシフトレフト(早期発見)」と「本番環境でのランタイム監視(現状把握)」の双方を、すでに導入しているDatadogのダッシュボード上で一元管理できるのが最大の強みです。

—

2. 導入と基礎セットアップのステップ

それでは、実際にKubernetes環境へこの機能を導入していきましょう。
前提として、すでにKubernetesクラスターに Datadog Agent(Helmチャート等) がデプロイされている状態を想定して解説します。

ステップ1: Helmチャートでの機能有効化

Datadogでの脆弱性スキャンを有効にするには、Helmの値(`values.yaml`)でいくつかのフラグを立てるだけです。これだけで、Agentがコンテナのメタデータとイメージの検査を始めます。

以下が、実務でそのまま使える設定の骨子です。

datadog-values.yaml
datadog:
apiKey: “”
appKey: “”
site: “datadoghq.com” # 契約リージョンに合わせて変更(ap1.datadoghq.comなど)

# 1. SBOM(ソフトウェア部品表)の生成と収集を有効化
sbom:
containerImage:
enabled: true

2. クラスター内のセキュリティ機能を有効化
clusterAgent:
enabled: true
admissionController:
enabled: true

3. セキュリティエージェント(脆弱性スキャンやCWSを担当)の有効化
securityAgent:
compliance:
enabled: true
runtime:
enabled: true

この設定ファイルを適用して、Helmをアップグレードします。

helm upgrade datadog-agent datadog/datadog -f datadog-values.yaml

たったこれだけの設定で、Datadog Agentはクラスター内のノードで動くコンテナイメージを解析し始めます。

—

3. 精度高い「Hello World」的な動作確認

「ちゃんとスキャンが動いているか?」を確認するために、わざと少し古くて脆弱性を含んだイメージをテスト用としてKubernetesにデプロイしてみましょう。

ここでは教育目的でよく使われる、少し古い脆弱なNode.jsアプリや、古いAlpineイメージなどを利用します。

テスト用Podのデプロイ

以下のマニフェスト(`vulnerable-pod.yaml`)を作成してください。

apiVersion: v1
kind: Pod
metadata:
name: vulnerability-test-pod
namespace: default
labels:
app: test-vuln
spec:
containers:

  • name: web

# あえて古いバージョンのnginxを使用(脆弱性が含まれている可能性が高い)
image: nginx:1.16.0
ports:

  • containerPort: 80

クラスターに適用します。

kubectl apply -f vulnerable-pod.yaml

Datadog画面での確認

1. DatadogのUIにログインします。
2. 左側メニューから [Security] -> [Vulnerability Management] -> [Software Packages] または [Containers] に移動します。
3. フィルターに `env:default` や `image_name:nginx` を入力して検索します。

数分待つと、先ほどデプロイした `nginx:1.16.0` が検知され、含まれている重大な脆弱性(Critical / HighなCVE)のリストがズラリと表示されます。
「あ、この古いNginxにはこんなに既知の脆弱性があるんだな」と直感的に確認できれば、動作確認は大成功です!

—

4. 実務で役立つ!重要度に応じたアラート設定と優先順位付けのノウハウ

さて、ここからが本番エンジニアの腕の見せ所です。
世の中の脆弱性をすべて完璧にゼロにすることは、スピードが求められる開発現場において不可能です。だからこそ「ノイズのない、本当に対応すべき脆弱性を見極める仕組み」を作る必要があります。

ノイズを減らすための優先順位付け(トリアージ)の鉄則

Datadogの脆弱性ダッシュボードには膨大な数がヒットします。以下の3つの軸でフィルターをかけ、アラートを絞り込みましょう。

1. 「本番環境(Production)」にデプロイされているか?

  • ステージングや開発環境の脆弱性を今すぐ直す必要はありません。環境タグ(`env:prod`)で絞り込みます。

2. 「インターネットに露出(In-cluster / Reachable)」しているか?

  • 内部でひっそり動いているバッチ処理のコンテナと、外向きにAPIを叩いているフロントエンドのコンテナでは、リスクの重大性がケタ違いです。

3. 「修正パッチ(Fix available)」が存在するか?

  • 直し方がない脆弱性に怯えても仕方ありません。「Fixable: true」の条件を必ずアラートの条件に加えましょう。

実践的なSlack通知モニターの設定

「Critical(致命的)な脆弱性を持つイメージが、本番環境にデプロイされた瞬間に通知を飛ばす」モニターの作り方です。

Datadogの [Monitors] -> [New Monitor] -> [Security Platform] から、以下のような条件でアラートを作成します。

  • Queryの構築例:

# 本番環境(env:prod)で、重要度がCritical、かつ修正が存在する脆弱性が検出されたとき
@security.vulnerability(env:prod, severity:critical, fixable:true).as_count() > 0

  • アラートメッセージの書き方のコツ(現場が助かるテンプレート):

🚨 【緊急】本番環境でCriticalなコンテナ脆弱性が検知されました!

  • 影響を受けるイメージ: {{host.image_name}}
  • Kubernetes Namespace: {{kube_namespace.name}}
  • Pod名: {{kube_pod.name}}
  • 検出された脆弱性: {{security.vulnerability.name}} (CVSS Score: {{security.vulnerability.cvss}})
  • 対策: 速やかにベースイメージをアップデートし、再デプロイを実施してください。

ダッシュボードリンク: https://app.datadoghq.com/security/vulnerability…

このように、「どのPodの、どのイメージに、どう対応すればいいか」のコンテキストを通知メッセージに含めることで、アラートを受け取ったエンジニアが迷わず対応できるようになります。

—

おわりに

いかがでしたでしょうか?
Datadog Container Image Vulnerability Managementを導入すれば、「セキュリティ部門からの指摘に慌てて対応する」受動的な運用から、「Datadogのダッシュボードで常に健康状態が可視化されている」能動的なオブザーバビリティ駆動のセキュリティ運びにシフトできます。

「これをマスターすれば、毎日の作業が劇的に楽になりますよ」。
夜中に脆弱性の夢でうなされることももうありません。ぜひ、あなたのクラスターでも試してみてくださいね。

それでは、快適なKubernetesライフを!

タイトルとURLをコピーしました