コンテンツにスキップ

静的解析@インフラのホワイトボックステスト

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. YAML/JSONの静的解析

YAML

▼ 文法の誤りテスト

  • yamllint

なお、YAMLの静的解析ツールでHelmチャートを検証したい場合、Chart.yamlファイルやvaluesファイルはyamlファイルなので検証できるが、Helmテンプレートを検証できない。


JSON

▼ 文法の誤りテスト

  • jsonlint


02. IaCのソースコードの静的解析

マニフェスト

▼ マニフェストの静的解析

プロビジョニング前のIaCのソースコードを解析する。

▼ 文法の誤りテスト

Kubernetesリソースのスキーマ (カスタムリソースであればCRD) に基づいて、マニフェストの文法の誤りを検出する。

  • kubeconform (新kubeval)

▼ コード規約違反テスト

ユーザー定義のコード規約に基づいて、マニフェストのコード規約違反を検証する。

  • confest

▼ ベストプラクティス違反テスト

一般に知られているベストプラクティス項目に基づいて、マニフェストのベストプラクティス違反を検証する。

脆弱性、効率性、信頼性、のいずれかの観点で検査するツールが多い。

  • kube-linter
  • kube-score
  • kubevious
  • krr (効率性)
  • goldilocks (効率性)
  • polaris

▼ バージョンテスト

指定したKubernetesのバージョンに基づいて、マニフェストのバージョン (apiVersionキー) を検証する。

helm installコマンドにも、マニフェストのapiVersionキーが非推奨かどうかを検証する。

  • pluto
  • kubeplug
  • kube-no-trouble
  • helm installコマンド


▼ 脆弱性診断

報告されたCVEに基づいて、マニフェストの実装方法に起因する脆弱性を検証する。

  • checkov
  • kics
  • krane
  • kubeaudit
  • kube-bench
  • kube-hunter
  • kube-scan
  • kube-score
  • kubesec
  • trivy


Terraform

▼ 文法の誤りテスト

  • terraform validateコマンド

▼ 脆弱性診断

  • tfsec
  • trivy

▼ ベストプラクティス違反テスト

  • tflint

▼ 未IaC化テスト

  • driftctl


Helmチャート

▼ Helmチャートの静的解析

マニフェストになる前のHelmチャートを解析する。

▼ 構造の誤りテスト

チャートの公式ルールに基づいて、構造の誤りを検出する。

  • helm lintコマンド

▼ バージョンテスト

Helmチャートのバージョンを検証する。

  • nova


03. コンテナの静的解析

コンテナイメージ

▼ コンテナイメージの静的解析とは

コンテナのイメージレイヤーごとに解析する。

▼ ベストプラクティス違反テスト

  • hadolint

▼ 脆弱性診断

  • dockle
  • trivy


コンテナ

▼ コンテナの静的解析

稼働中のコンテナを解析する。

▼ 脆弱性診断

起動中のコンテナを解析する。

  • trivy