本連載では、エンタープライズシステムでコンテナ/Kubernetesを活用した業務システムを開発・運用するエンジニアに向けて、知っておくべきKubernetesセキュリティの基礎知識、Microsoftが提供するパブリッククラウド「Azure」を使ったクラウドにおけるKubernetesのセキュリティ対策のポイントや注意点といった実践的なノウハウを紹介します。

コンテナ/Kubernetes環境に求められるセキュリティとは?

今日、オンプレミスの環境で運用されていた業務システムの多くが、クラウドへの移行を進めています。クラウドを活用することで、高い拡張性を持つセキュアなシステムを短期間で開発できます。加えて、コンテナベースのクラウドネイティブ・アプリケーションにモダナイズすることで、変化の激しいビジネス環境に追随できるだけでなく、最新技術を起点としてこれまでになかったビジネスモデルを構築し、ソフトウェアで市場を変革することも視野に入れることが可能になります。

Kubernetesは、コンテナ化したアプリケーションの展開やスケーリング、管理などを自動化するOSS(オープンソース・ソフトウェア)であり、多くの場合クラウドに展開されます。従来のプラットフォームと比較して、柔軟性が高くセキュリティのメリットもありますが、一方でサイバー攻撃者の標的になることも多くなっています。

そのような背景もあり、米国家安全保障局(NSA:National Security Agency)と米国土安全保障省サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)は2021年8月3日に、Kubernetes環境に対する脅威やリスクを最小限に抑えるための対策を解説したセキュリティガイダンス「Kubernetes Hardening Guidance」]を公開しました。

同ガイドでは、コンテナ/Kubernetesにはさまざまな脅威が存在し、セキュリティ面で検討・対策すべき項目は多岐にわたると説明しています。例えば、ワークロードにおけるビルド・デプロイ・ランタイムのそれぞれのフェーズで適切なセキュリティ対策が必要になるなど、コンテナ/Kubernetesを利用したシステムならではのセキュリティの観点があります。コンテナ/Kubernetesで堅牢なシステムを構築するには、多層防御の考え方が重要であるほか、可観測性を実現するためのアプローチも必要となります。

さらに、ミッションクリティカルなエンタープライズシステムにおいては、関連法規の準拠や開発運用の組織体制の見直しなどの整備が求められます。業務システムのアプリケーション開発からインフラ設計に至るまでの幅広い知識と経験も必要であり、どこからどう初めてよいか戸惑うこともあるでしょう。これらのセキュリティ対策にゴールはなく、保護する対象に対し、誰がどう安全性を担保し続けるかなど、組織横断的な知見が必要です。

そのため、Kubernetesのセキュリティ対策の第一歩として行うべきことは「なにが脅威なのかを正しく整理して理解する」ことです。次のパートでは、脅威モデリングについて説明します。

脅威モデリングとは?

システムにおいて複数のセキュリティ対策を講じていたとしても、何か1つの脅威に対して考慮が漏れている場合、その脅威を起点に侵害される可能性があります。セキュリティ対策を網羅的に講じるためには、まずシステムに存在する脅威を洗い出し、可視化しておくことが有効です。脅威モデリングとは、システムに関する潜在的な脅威を洗い出すことで、実施すべき対策を導き出すために用いられるプロセスです。

Kubernetes Hardening Guidance では、Kubernetesに存在する一般的な脅威例として、以下の3点が挙げられています。

Kubernetes Hardening Guidanceに記載されている脅威の例と概要

  • サプライチェーンリスク:コンテナの構築サイクルやインフラストラクチャ等を構成するあらゆる要素が悪用されることによって発生する問題

  • 悪意のある脅威アクタ―:外部の攻撃者が、コントロールプレーン、ワーカノード、コンテナ化されたアプリケーションなど、Kubernetesアーキテクチャのコンポーネントの脆弱性や設定ミスを悪用することで発生する問題

  • 内部脅威:管理者、ユーザー、クラウドサービスプロバイダー等のKubernetesインフラストラクチャにアクセスできる内部の者がその権限を悪用することで発生する問題

例えば、外部脅威への対策は行っていたとしても、内部脅威を想定できていなかった場合、内部脅威を起点として攻撃を許してしまう恐れがあります。そうした事態を防ぐためにも、システムにおいて想定される脅威を洗い出しておくことは重要です。

Kubernetes Hardening Guidanceの例を参考にすることもよいですが、組織やシステムの要件・設計によって、考慮すべき脅威は異なる場合があります。そのため、対象システムに応じた脅威モデリングを行っておくことが望ましいでしょう。

Kubernetesにおいても、既存の脅威モデルフレームワークを活用可能です。その例として、著名な脅威モデリング手法である"STRIDE"というアプローチを活用した手法を紹介します。