BLOG

Kubernetesで実現するモダンなセキュアコーディング

Hiroshi Matsumoto サムネール
Hiroshi Matsumoto
Published March 22, 2022

Kubernetesを本番環境で採用するために必要なことは、Kubernetesやその他のクラウドネイティブテクノロジを知ること、そしてそれらを「安全」に利用することです。
このブログでは、2回の連載で、Kubernetes上で実現するモダンなアプリケーションのセキュリティについてお伝えいたします。

本記事ではモダンなアプリケーションのセキュリティ実現に向けた、Kubernetes活用の課題についてご紹介します。

Kubernetesを取り巻く環境と、本番環境での採用に向けた課題

オンプレからクラウドへ、モノリシックなアプリからコンテナ・マイクロサービスへと日々進化する技術を最大限に活用し、DXやモダナイゼーションを実現、そしてマーケットニーズに応えるアプリを迅速にリリースすることが企業に求められる重要な課題の1つです。

企業にはこれと同時に忘れては行けない重要な課題があります。
「セキュリティ」です。

アプリケーションは便利であると同時にセキュアでなければいけません。セキュリティ対策を怠ったアプリケーションは、悪意を持った攻撃者の格好の的となり、アプリケーションのデータが脅威にさらされ、最終的には企業としての存続すら危ぶまれてしまう事態に陥るのです。

それではここで、NGINXが2021年に行ったMicroserviceに関する調査を見てみましょう。以下の4つがKubernetesの主な懸念事項であることがわかりました。(Blog: Lessons from the 2021 NGINX Survey: Your Kubernetes Adoption Journey
https://www.nginx.com/blog/lessons-from-2021-nginx-survey-your-kubernetes-adoption-journey/)

  • 知識 - 技術やその仕組みについての理解が不十分であること、特にネットワーキングとセキュリティの領域でKubernetesの専門知識を持つ人が必要です。
  • 複雑さ - Kubernetesのネットワークモデルは、レイヤー4とレイヤー7のトラフィックの混在や、Ingress Controllerの理解が必要であり、以前のものとは全く異なっています。
  • セキュリティ - Kubernetesはセキュリティをユーザが実装する必要があります。新しい環境の理解に加え、企業が求めるレベルのセキュリティを実現することは簡単ではありません。
  • スケーラビリティ - Kubernetesは理論的にスケーラブルなプラットフォームです。しかし、その運用の困難さから、スケーラビリティ自体が課題として残ります。

このように、我々はアプリケーションを最大限に自由に、安全に展開するためには、十分な知識とその知識を実務レベルで活用する必要があります。そこに不足があれば、本来得られるべきメリットが享受できず、目の前には理想とは異なる複雑に絡み合った、プラットフォームが出来上がってしまいます。

Kubernetesの活用と「セキュア」なアプリケーションの実現

Kubernetesは今までのテクノロジを元に構築されている便利な仕組みですが、Kubernetes環境を構築するインフラやその上で動作するアプリケーションは、旧来の仕組みから大きく変更する必要があります。そしてその先に、Kubernetes上で動作するスケーラブルなアプリケーションにとって、最適なセキュリティの実現があります。

 

 

理想的なアプリケーションの提供を実現するためには、大きく2つのフェーズが存在します。
第一の壁が、Kubernetesに関する知識です。Kubernetesを十分に活用するためには、新たな概念や仕組みを理解することが必要不可欠です。これらの知識を得ることにより既存のアプリケーションの設計をどのように変更すれば良いか、検討を進めることが可能となります。要は、学習コストを恐れず、積極的に勉強しましょう、ということです。

第二の壁が、このKubernetesを活用したセキュアなアプリケーション開発です。皆様は今までも既存のシステムのセキュリティを実現するため様々なソリューションを活用していたと思います。しかし、Kubernetes環境ではアプリケーションがマイクロサービス化されるため、今までのセキュリティソリューションの一部はその粒度で管理することができず、実用に耐えない状態になる可能性があります。要は、アプリケーション毎のチューニングが疎かになり、それ自体がセキュリティホールになってしまうのです。

そして、次にKubernetesが動作する環境では「開発者」や「アプリケーション」そのものを中心に捉えて考える必要があります。セキュリティはいくつかの場合において、高いセキュリティを得る代わりに、アプリケーションの自由なデプロイを妨げ、足かせとなってしまう場合が見られます。理想とする自由なアプリケーションデプロイのため、セキュリティをうまくコンポーネント化してKubernetes環境と融合させ、アプリケーションとプラットフォームを適切に融和させる必要があるのです。

まとめ

Kubernetesは間違いなく企業を大きく推進する起爆剤となるツールであり、その勢いは日々強くなっています。しかし、Kubernetesの利用は方法であってゴールではありません。我々はKubernetesを使いこなす知識を身につけ、コンテナアプリケーションに最適なセキュリティを実現する方法を知らなければいけません。
次回の記事では、イラストを使いKubernetes上でアプリケーションを動作させるステップを説明し、「DevSecOps」や「Shift-Left」などのキーワードと共に、セキュアなアプリケーションを実現するチームの連携についてご紹介します。

Kubernetesやモダンなアプリケーション開発を理解するためには?

NGINXでは以下のように様々なコンテンツを提供しておりますので是非参考にしてください。

Blog: Kubernetes Networking 101
https://www.nginx.co.jp/blog/kubernetes-networking-101/

WEBINAR: マイクロサービスの基本&NGINX解説セミナー
https://www.nginx.co.jp/resources/webinars/fundamentals-microservices/

Blog: Kubernetes環境で実現するモダンな「セキュアコーディング」
https://www.nginx.co.jp/blog/nginx-app-protect-for-securecoding/

WEBINAR: Kubernetes環境で実現するモダンなセキュアコーディング
https://www.nginx.co.jp/resources/webinars/nginx-app-protect-for-securecoding/

また、F5パートナーのカサレアル様で「第一の壁:Kubernetesに関する知識」や「第二の壁:Kubernetesを活用したセキュアなアプリケーション開発」に関するトレーニングを提供されておりますので、是非ともご検討いただければと思います。(セキュアなアプリケーション開発は2022年4月より提供開始予定となります)
https://www.casareal.co.jp/cs/service/cloudnativedojo
その他トレーニングの詳細などについては以下お問い合わせフォームよりご連絡ください
https://www.casareal.co.jp/cs/contact/

関連資料: WEBINAR:サイバーエージェント、IDCフロンティアに聞く、NGINX事例セミナー
https://www.nginx.co.jp/resources/webinars/itmedia_use_case_webinar/
製品紹介:NGINX Ingress Controller
https://www.nginx.co.jp/products/products-nginx/kubernetes-ingress-controller/
製品紹介:NGINX App Protect
https://www.nginx.co.jp/products/nginx-app-protect/