Kubescapeを使用してKubernetesの脆弱性をスキャンする方法
Kubescapeは、ARMOからの新しいオープンソースツールで、Kubernetesクラスターのスキャンを自動化し、セキュリティ問題を特定することができます。Kubescapeは、NSAおよびCISAが発表したハードニング推奨事項に対して、あなたのクラスターを監査します。
Kubescapeをインストールしてクラスターのスキャンを始める方法は次のとおりです。定期的なスキャンは、攻撃者によって利用される前に問題を解決するのに役立ちます。
Kubescapeをダウンロードしています
Kubescapeは現在、Windows、macOS、およびUbuntu用のプリビルドバイナリとして配布されています。プロジェクトのGitHubリリースページから直接ダウンロードできます。
端末に貼り付けることができる自動インストールスクリプトもあります。これにより、システムに適したバイナリが取得され、パスに追加されます。
curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bash
kubescapeを実行して、インストールが完了しているか確認してみてください。使用可能なコマンドの概要が表示されます。
クラスタをスキャンする
Kubernetesは標準のKubectl設定ファイルを使用してクラスターに接続します。スキャンしたいクラスターの設定ファイルを参照するように、シェルでKUBECONFIG環境変数を設定してください:
export KUBECONFIG=.kube/my-cluster.yamlKubescapeは、この変数が設定されていないか、指定されたファイルが無効な場合に「Kubernetes設定の読み込みに失敗しました」と表示します。複数のクラスターをスキャンしたい場合は、Kubescapeを実行するたびにKUBECONFIG変数を更新してください。
スキャンはscanコマンドで開始されます。スキャンするハードニングフレームワークを指定する必要があります。現在、nsaのみがサポートされているオプションです。
kubescape scan framework nsa --exclude-namespaces kube-system,kube-publicKubescapeは、--exclude-namespacesフラグで除外された名前空間内のリソースを除いて、クラスタ内のすべてのリソースをスキャンします。見つかった問題に対処できないため、ここに組み込みのKubernetes名前空間をリストすることをお勧めします。
最初のKubescapeスキャンには時間がかかる場合があります。ツールがフレームワークの定義をダウンロードする必要があるためです。これらは、あなたのクラスターが評価されるテストを定義します。スキャンが完了すると、発見された問題の詳細が色分けされた出力としてターミナルに表示されます。
スキャン結果
各失敗したテストは、疑わしいリソースのリスト、問題の説明、および修正のヒントを含む出力の独自のセクションを生成します。レポートの下部には、実行されたすべてのテストの概要、失敗したリソースの数、および全体の成功率を提供するテーブルがあります。
Kubescapeは、NSAによって特定されたリストに基づいて20以上の可能な脆弱性をチェックします。NSAの報告書は、対象となる問題の説明と、その問題が含まれている理由を提供しています。Kubescapeがチェックする主な問題のいくつかには次のものが含まれます:
- 特権昇格の機会
- 特権モードで実行されているコンテナ
- 危険な機能を持つコンテナが実行されています
- 露出したKubernetesダッシュボード
rootとして実行されているコンテナ- 構成ファイルに含まれる資格情報
- 誤って安全が確保された制御プレーン
Kubescapeを実行することで、クラスターの健康状態を現在のベストプラクティスガイドラインに照らしてチェックでき、データやワークロードを危険にさらしていないという自信を得ることができます。
マニフェストファイルのスキャン
Kubescapeはクラスタ接続なしで動作できます。ローカルのYAMLファイルとして保存されたリソースマニフェストをスキャンできるため、それをクラスタに適用する前にセキュリティを確認できます。スキャンしたいファイルを指定するには、フレームワーク名の後に追加の引数を加えてください:
kubescape scan framework nsa k8s/*.yamlリモートに保存されているファイル、例えばGitリポジトリ内にあるファイルをスキャンするために、URLをファイルパスとして使用することができます。
包括的なセキュリティ監査を実施する際は、デフォルトのクラスタースキャンモードを使用するのが最適です。マニフェストスキャンはCIパイプラインに組み込むのが理想です。このように使用することで、リソースを更新してクラスターに展開する際に、新たな脆弱性を意図せずに導入することを避けることができます。
オフラインスキャン
Kubescapeは、スキャンを完了するためにフレームワーク定義をダウンロードする必要があるため、オンライン使用のために設計されています。ただし、オフラインスキャンを容易にするために手動でフレームワークを保存できます。ファイルが古くならないように、定期的に更新することをお勧めします。
NSAフレームワークファイルをダウンロードしてください。
kubescape download framework nsa --output nsa.jsonダウンロードしたファイルを使用して、クラスターをスキャンしてください:
kubescape scan framework nsa --use-from nsa.json--use-from フラグは、Kubescape に指定されたファイルからフレームワークの定義を読み込むよう指示します。また、--use-default があり、これはローカルにキャッシュされたファイルが利用可能な場合、デフォルトの場所からそれを使用しようとします。ファイルが見つからない場合、Kubescape は最新の定義をサーバーからダウンロードすることに戻ります。
出力フォーマット
Kubescapeはデフォルトでターミナルに出力しますが、JSONまたはJunit形式でレポートを生成することもできます。-fフラグを追加して、希望するモードを指定してください:
kubescape scan framework nsa -f json
kubescape scan framework nsa -f junit
後者のオプションは、Junitフォーマットで動作するテストレポートツールが利用できるXMLファイルを生成します。これにより、Kubescapeスキャンを既存のテスト報告ソリューションに統合し、可視化と集計を行うことができます。
出力は、指定したレポート形式にかかわらず、あなたのターミナルの標準出力ストリームに出力されます。保存先のファイルパスを指定するには、-oフラグを追加してください:
kubescape scan framework nsa -f json -o report.jsonKubescapeの通常の進行状況メッセージは、-sフラグを使って無効にすることができます。これは、ジョブログにASCII文字を混在させたくないCIシナリオで役立ちます。
結論
Kubescapeを使用すると、Kubernetesクラスターの安全性をNSAが公開したガイドラインに対して評価できます。このシンプルなオープンソースツールは、20以上の重要なチェックに基づいて環境をベンチマークするための単一のコマンドを提供します。
Kubescapeは、クラスター内で実行するコンテナ内の脆弱性をチェックしません。そのため、docker scanやTrivyなどの別のツールが必要です。Kubescapeと並行してコンテナスキャンエンジンを実行することで、環境のセキュリティ態勢の最も完全な状況を把握することができます。



