本連載では、ここ数回にわたり「Kubernetesネイティブな開発を始めたいけれど、どんなツールを使えば良いかわからない」という方に向け、Kubernetesネイティブなツールを紹介しています。前回までで、以下の①②について取り上げました。今回は③セキュリティ関連ツールを紹介します。

①開発ツール(A. Dev - B. Build - C. Ship)
DockerfileやKubernetesリソースを開発してデプロイするまで
②運用ツール(D. Run)
コンテナやKubernetesリソースのデバッグ
③セキュリティ関連ツール(Security:A. Dev - B. Build - C. Ship - D. Run)
マニフェストファイルの脆弱性チェックやイメージスキャン

→連載「Kubernetes入門」の過去回はこちらを参照。

③セキュリティ関連ツール(Security)

Securityのフェーズで求められる代表的な機能・対象・ツールは以下の通りです。

フェーズ 機能 対象 代表ツール
Dev セキュリティポリシーチェック ソースコード Sonar Cube
Dev セキュリティポリシーチェック マニフェスト(YAML) OPA GatekeeperKyvernoConftestTrivyPodSecurity Admission
Dev SBOMの生成 SBOM SyftTrivy
Build イメージスキャン Dockerイメージ TrivyGrype
Run 脅威検知 Kuberentesリソース FalcoTracee

以降では、いくつかピックアップして紹介します。

マニフェストをポリシーチェックする:Kyverno

「Kyverno」はKubernetes用のポリシーエンジンで、CNCF(Cloud Native Computing Foundation)のインキュベーションプロジェクトの1つです。

ポリシーは、Kubernetesのマニフェスト(YAML)で記述できるため、利用にあたっての学習コストが低い点が特徴です。Kyvernoと対比されることの多いツールとして「OPA Gatekeeper」がありますが、こちらはRego言語でポリシーを記述する必要があり、Rego言語に対する学習が必要になります。

Kyvernoを用いると、ポリシーを用いたリソースの検証・生成・変更・削除が可能です。マニフェストの誤りを検知することもできます。

また、Kyvernoではデフォルト値やラベルなどのメタデータを付与することも可能です。さらに、OCIイメージのセキュリティチェックや暗号化など、さまざまな機能を利用できるようになっています。

Kyvernoの動作は、KubernetesのDynamic Admission Controlの仕組みを活用しています。Dynamic Admission Controlは、KubernetesのAPIサーバに対してWebhookを登録し、APIリクエストが処理される前にカスタムロジックを実行可能とするものです。

Webhookは、APIサーバがリクエストを受け取ったときに呼び出されます。カスタムロジックでは、特定のラベルにマッチした場合のみPodを作成したり、特定のネームスペースでのみリソースの作成を許可したりすることができます。

なお、Kubernetesビルトインのポリシーエンジンを使いたい場合にはPod Security Admissionの利用を検討するのも良いでしょう。

イメージの脆弱性をチェックする:Trivy

Trivyは、コンテナイメージやファイルシステム、Gitレポジトリなどの脆弱性をスキャンするツールです。もともとは個人が開発していたものですが、現在はAqua Security社のポートフォリオの一部となっています。

Trivyは以下のコマンドでインストール可能です。

% brew install aquasecurity/trivy/trivy

例えば、以下のように指定することでコンテナイメージをスキャンできます。

$ trivy image [イメージ名]

ランタイムの脆弱性をチェックする:Falco

「Falco」は、アプリケーションやコンテナの振る舞いを監視し、予期しない動作や攻撃を検知してアラート通知するランタイムセキュリティツールです。Sysdig社によって2016年に開発され、CNCFのインキュベーションプロジェクトとして登録されています。

標準で用意されているさまざまな検知ルールは、カスタマイズして利用することも可能です。 Kubernetesとの親和性も高く、構築用のHelm Chartが用意されています。eBPF Probeモードで動作させることができ、システムコールの挙動まで確認することが可能です。

SBOMを開発する:Syft

「Syft」は、Anchore社が開発したOSSで、コンテナイメージやファイルシステムを基にSBOM (Software Bill of Materials)を生成するためのCLIツールです。

SBOMは、ソフトウエアに含まれる部品や依存関係を一覧化した文書で、セキュリティリスクやライセンスなどの管理に役立ちます。これについては、米国のバイデン大統領が2021年5月に発した国家のサイバーセキュリティ改善に関する大統領令でも言及されており、あまり開発者の目に入らない範囲でも注目を浴びています。

Syftは、以下のコマンドでインストール可能です。

$ brew install syft

Syftを使うと、SPDXやCycloneDXなどの標準的なフォーマットでSBOMを作成できます。 例えばコンテナイメージを基にSBOMを作成するためには以下のコマンドを実行します。

$ syft [イメージ名]

* * *

今回は、セキュリティ関連ツールを紹介しました。もちろん、本稿で挙げたツールが全てではありません。いろいろなツールを試してみて、自身の開発作業を効率化する“最強の環境”を作ってみてはいかがでしょうか。本稿が、そのきっかけになれば幸いです。