|
Kubernetes (k8s) は、コンテナ化されたワークロードのデプロイ、スケーリング、管理を自動化する、人気の高いオープンソースのコンテナオーケストレーションシステムです。Kubernetes は、コンテナの自己修復、自動スケーリング、サービス検出機能を提供しますが、セキュリティリスクも伴います。Docker は、アプリケーションの構築、デプロイ、管理に使用されるコンテナプラットフォームです。軽量で移植性が高く、スケーラブルな Docker コンテナは、特にマイクロサービスアーキテクチャにおけるアプリケーションの開発と配信を大幅に容易にするため、多くの開発者や組織に選ばれています。しかし、コンテナ化の普及に伴い、Docker はますます複雑かつ深刻なコンテナセキュリティの課題に直面しています。 この記事では、主に Kubernetes と Docker が直面するセキュリティ問題を紹介し、オープンソースで無料のコンテナ セキュリティ ツールをいくつか推奨します。 Kubernetesのセキュリティ問題(1)クラスターセキュリティ クラスター セキュリティには、認証、承認、暗号化を有効にして、API サーバー、etcd、Kubernetes コントローラー マネージャーなどの制御コンポーネントを保護することが含まれます。 (2)ノードセキュリティ ノード セキュリティとは、主に、不要なユーザー アカウントの削除やアプリケーション アクセスのコンプライアンスの確保など、ネットワークを適切に構成し、Kubernetes ランタイム環境を保護することを指します。 (3)アプリケーションセキュリティ アプリケーションセキュリティとは、Kubernetesにおいてアプリケーションを実行するコンテナであるポッドを保護することを意味します。これらのアプリケーションを保護するには、ポッド自体を保護することが前提となります。Kubernetesは、アプリケーションを保護するためのセキュリティ機能を複数提供しています。これらの機能は、リソースへのアクセス制限、ネットワークポリシーの適用、コンテナ間の安全な通信のサポートなどに利用できます。 Dockerコンテナのセキュリティ問題(1)鏡の汚れ 現在、Docker Hubにはサードパーティがアップロードしたイメージが大量にホストされており、その品質は大きく異なります。中には、ハッカーが悪意のあるプログラムを含むイメージを意図的にアップロードし、ユーザーがダウンロードして使用できるように偽装している可能性があります。ユーザーが誤ってこのようなイメージを使用してコンテナを起動した場合、コンテナが侵害される可能性は間違いなくあります。したがって、ユーザーはこれらのイメージをスキャンして検証し、コンテナで使用するイメージが信頼できるものであることを確認する必要があります。信頼できないサードパーティのイメージは可能な限り使用しないでください。 (2)サイバー攻撃 Dockerはデフォルトでブリッジネットワークを使用します。これらのネットワークは仮想ブリッジを作成し、同じブリッジに接続されたコンテナ同士が通信できるようにします。コンテナが侵害されると、攻撃者はネットワーク経由でホストマシン上の他のコンテナにアクセスできるようになる可能性があります。同時に、攻撃者はDDoS攻撃などの手法を用いてコンテナサービスを妨害し、ホストマシンのリソースを枯渇させ、場合によってはホストマシン全体をクラッシュさせる可能性があります。 (3)カーネル攻撃 ハッカーがコンテナにアクセスすると、共有カーネルのため、理論的にはカーネルを攻撃してホストを制御したり影響を与えたりすることが可能になります。 (4)不適切な操作 不適切な操作は、コンテナの脆弱性に簡単につながる可能性があります。例:
(5)Dockerデーモンを標的とした攻撃 Dockerはクライアント/サーバーアーキテクチャを採用しています。サーバーとして機能するDockerデーモンは、CLIまたはREST APIを介してクライアントからのコマンドを受け取り、コンテナ上で対応する操作を実行します。しかし、すべてのリクエストが信頼できるユーザーによって開始されるわけではありません。攻撃者はリクエストを偽造し、デーモンに危険な操作を実行させる可能性があります。 (6)Docker脆弱性攻撃 Docker自体はアプリケーションであり、コードに脆弱性が存在することは避けられず、プログラムへの攻撃につながる可能性があります。 まとめると、コンテナのセキュリティ確保には、デバイス、システム、ネットワーク、イメージ、アプリケーション、運用など、様々なレイヤーが関わってきます。中でも、コンテナ自体のセキュリティは見落とされがちです。以下のコンテンツでは、KubernetesクラスターとDockerコンテナの保護、Dockerイメージの静的スキャン、セキュリティ監査、Kubernetesクラスターの強化、ランタイムセキュリティの実現に役立つオープンソースツールを主に推奨します。 1. トリビーhttps://github.com/aquasecurity/trivy Trivyは、包括的かつ多用途なセキュリティスキャンソフトウェアです。セキュリティ上の問題を発見し、その問題が見つかる場所をターゲットとするスキャナーを搭載しています。コンテナ、Kubernetes、コードリポジトリ、クラウドにおける脆弱性、設定ミス、パスワード漏洩、SBOMエラーなどの問題を発見するために使用できます。Trivyは、ほとんどの一般的なプログラミング言語とクロスプラットフォームのオペレーティングシステムをサポートしています。 Trivy は次のオブジェクトのスキャンをサポートしています。
Trivy が特定できる問題は次のとおりです。
Trivy スキャンを実行すると、脆弱性の重大度と CVE 番号を含む脆弱性のリストが生成されます。 実際のインストールと使用方法は以下の通りです。 (1)インストール macOS および Linux 用の Homebrew を使用してインストールします。 あるいは、スクリプトを使用してインストールすることもできます。 あるいは、ソース コードからインストールすることもできます。 (2)コンテナイメージをスキャンする スキャン結果は次のとおりです。 2. セキュリティのためのDockerベンチhttps://github.com/docker/docker-bench-security Docker Bench for Security は、Docker コンテナを本番環境にデプロイするための一般的なベスト プラクティスを数十個自動的にチェックする Docker セキュリティ関連のコマンドのセットです。 次のスクリプトはローカル マシンから実行できます。 あるいは、Docker を使用して実行することもできます。 3. クレアhttps://github.com/quay/clair Clairは、Dockerおよびappcコンテナの脆弱性を静的に解析するオープンソースプロジェクトです。このツールは複数のデプロイメントモードを提供し、高いスケーラビリティと可用性を実現します。ClairはREST APIをサポートし、HTML形式のスキャンレポートを提供します。また、Dockerレジストリと統合して脆弱性レポートを自動生成することもできます。 Clairの現在のバージョンであるv4は、コンテンツの検査と脆弱性の報告のためのエンジンとしてClairCoreライブラリを使用しています。より高レベルでは、ClairはClairCoreライブラリで提供される機能のサービスラッパーと見なすことができます。Clair V4のアーキテクチャは次の図に示されています。 詳細な使用方法については、公式ドキュメントを参照してください: https://quay.github.io/clair/howto/getting_started.html 4. キューブベンチhttps://github.com/aquasecurity/kube-bench CISベンチマークは、ITシステムとデータの保護に関する世界的に認められた標準規格です。サイバー攻撃に対して脆弱なオペレーティングシステム、ソフトウェア、ネットワークを保護するための一連のガイドラインを提供します。 Kube-benchは、KubernetesのデプロイメントがCIS Kubernetesベンチマーク(Kubernetesセキュリティのベストプラクティスを網羅)に沿って最適化されているかどうかを確認するためのオープンソースツールです。したがって、CISベンチマークの目的でのみスキャンが必要な場合は、kube-benchが最適です。 Kubenchを実行する方法はいくつかあります。Pod内でKubenchを実行することもできますが、実行中のプロセスを確認するためにホストのPID名前空間へのアクセスと、設定ファイルなどのファイルが保存されているホスト上の特定のディレクトリへのアクセスが必要になります。GitHubリポジトリにはクラウド固有のjob-*.yamlファイルが含まれており、Kubenchはマシンで実行されているKubernetesのバージョンに基づいて、実行するテストスイートを自動的に決定します。 例えば: 詳細については、関連ドキュメントを参照してください: https://github.com/aquasecurity/kubench/blob/main/docs/running.md 5. kubeaudithttps://github.com/Shopify/kubeaudit kubeaudit は、次のような一般的なセキュリティ制御に照らして Kubernetes デプロイメントを監査できるオープンソース ツールです。
kubeaudit 用の Brewhome のインストールは次のとおりです。 Kubeauditは、マニフェスト、クラスター、ローカルの3つのモードで実行できます。また、マニフェストの自動修復機能も備えており、競合製品との差別化を図っています。 マニフェスト モードで実行 - このモードでは、関連する Kubernetes リソースのマニフェスト ファイルが必要です。 例えば: 出力結果: さらに、クラスター モードもあります。 ローカルモード: さらに、kubeaudit には、外観、機能、制限、権限、rootfs、seccomp、netpols、asat など、複数の監査プロファイルがあります。 6. キューブスケープhttps://github.com/kubescape/kubescape Kubescapeは、IDE、CI/CDパイプライン、クラスターに適したオープンソースのKubernetesセキュリティプラットフォームです。リスク分析、セキュリティ、コンプライアンス、構成ミスのスキャンなどの機能を備えており、Kubernetesユーザーと管理者の貴重な時間、労力、リソースを節約します。 インストール: スキャンを実行します: 結果は次のとおりです。 7. キューブハンターhttps://github.com/aquasecurity/kube-hunter kube-hunterは、Kubernetesクラスターのセキュリティ脆弱性を発見するためのPythonで開発されたオープンソースの侵入テストツールです。ローカルマシン、クラスター内、アクティブモードとパッシブモードの両方でリモート実行可能なカスタムモジュールの作成をサポートしています。 アクティブ モードでは、kube-hunter はあらゆる脆弱性を検出でき、ステージング環境でシミュレートされた攻撃ツールとして実行することもできます。 インストールと使用方法は以下の通りです。 8. 繊毛https://github.com/cilium/cilium Ciliumは、eBPFベースのネットワーク可観測性とセキュリティソリューションを提供するネットワークセキュリティ検査プロジェクトです。DockerおよびKubernetesと互換性があり、アプリケーションコードやコンテナ設定を変更することなくセキュリティポリシーを適用できます。 9. シフトとグリープhttps://github.com/anchore/syft https://github.com/anchore/grype Syftは、コンテナイメージとファイルシステムからソフトウェア部品表(SBOM)を生成するために使用されるGoベースのCLIライブラリです。Grypeは、コンテナイメージとファイルシステムの脆弱性スキャンツールです。SyftをGrypeなどのスキャンツールと併用することで、システムの脆弱性や異常を検出できます。 Syft のインストール: Grype のインストール: 具体的な使用方法については、公式ドキュメントを参照してください。 10. ドックルhttps://github.com/goodwithtech/dockle Dockle は、CIS (Center for Internet Security) Docker ベンチマークとベスト プラクティスに基づいて安全な Docker コンテナ イメージを構築するツールです。 Docker イメージをスキャンするためのコマンドは次のとおりです。 (1)Dockerイメージをスキャンする: (2)Dockerイメージファイルをスキャンする: (3)スキャンしたJSON結果を取得します。 詳しい手順については、公式マニュアルを参照してください。 |