BLOG

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

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

このブログでは、2回の連載で、Kubernetes上で実現するモダンなアプリケーションのセキュリティについてお伝えいたします。
本記事ではイラストを使いKubernetes上でアプリケーションを動作させるステップを説明し、セキュアなアプリケーションを実現するチームの連携についてご紹介します。

モダンなセキュアコーディングの実現

皆様がKubernetesを採用される理由は何でしょうか?アプリケーションの柔軟性のため、コンテナ活用によるスケールアップのため、といった理由が考えられます。更に、開発者の皆様にとってKubernetesでのメリットは何でしょうか?コンテナによる可搬性の向上、自由なアプリケーションツールの選択、言語、フレームワークなどに縛られないマイクロサービス化、といった理由が考えられます。
これらの多くのニーズを吸収し、自由なアプリケーションデプロイ環境を実現するKubernetesですが、企業におけるセキュリティはいずれの場合においても、企業が求めるレベルを実現しなければいけません。開発環境における自由度が向上した結果、セキュリティが蔑ろになってはいけませんし、また逆にセキュリティが開発環境を限定し自由な開発を大きく毀損してはいけません。企業は双方をうまく両立させる必要があるのです。

セキュリティレベルを維持しつつ、開発者が自由にデプロイできるアプリケーション開発の流れを見ていきましょう。

モダンなセキュアコーディングの実現

まずはアプリケーションを開発し、リリースします。アプリケーションはセキュアコーディングによりセキュアに開発され、静的解析(SAST)や動的解析(DAST)など様々なツールを活用することで、セキュアなアプリケーションであることが確認できます。これは企業のアプリケーションリリースのルールに則っている正しい手法です。インターネットからアプリケーションを利用する多くのユーザを惹きつけ、そして攻撃者には侵入を許さないシステムであることがわかります。

モダンなセキュアコーディングの実現

皆様はKubernetesを活用することでユーザニーズに合わせたアプリケーションの拡張を実現することができます。多くのユーザからの接続に対しても即座に対応することが出来るのです。アプリケーションはリリース時点でセキュアであることが確認できているので、攻撃者の侵入は許しません。ただし、攻撃者はインターネットを通じて常に脆弱なアプリケーションを探しており、攻撃のタイミングを見計らっています。

モダンなセキュアコーディングの実現

そしてある時、突然に、不幸にも皆様のアプリケーションに関係の深いフレームワークで脆弱性が発見されます (Log4jを思い出してください) 。アプリケーションのセキュリティを損なうわけには行きません。直ちに対応が必要です。どのアプリケーションでどのように対応が必要であるか、、、調査し対応が必要です。漏れなく正確に把握するためには時間が必要です。その調査と並行し、セキュリティに関する情報は日々アップデートされます。脆弱性は複数同時に発生することもあります。皆様は最新の情報を収集しながら、適切な対応を取らなければいけません。

モダンなセキュアコーディングの実現

Kubernetesではアプリケーションがマイクロサービス化されます。そして、先述の通り、それらのアプリケーション毎に適切なセキュリティを実現すること、汎用的なセキュリティポリシーやアプリケーションに特化したセキュリティポリシーのチューニング等、適切にセキュリティレベルを実現することが求められます。このセキュリティレベルをアプリケーションリリースのスピード感を損なうことなく、素早く実現することが必要なのです。
そこで重要になるのが「DevSecOps」や「Shift-Left」などのキーワードであり、各チームの連携です。

  • どのアプリケーションにどのような対処が必要なのか(開発者視点)
  • 外部からのどのような攻撃があるのか(セキュリティ担当者視点)
  • 適切なオペレーションで実現できるのか(運用者視点)

これらの視点をシームレスに連携させてアプリケーションを運用することが必要です。それぞれのプロフェッショナルが知識を共有し、アプリケーションに最適な形で緊急度や重要度に応じた適切なセキュリティをKubernetes環境で実現するためには、アプリケーションをよく知るエンジニア(多くの場合は開発エンジニア)がアプリケーションに特化したセキュリティポリシーのチューニングを行う必要があります。従来のセキュアコーディングに加え、Kubernetes上で実現するSecurity as Codeによりセキュリティポリシーのチューニングを実現することが「Kubernetesで実現するモダンなセキュアコーディング」のコンセプトです。

これらに必要な知識や観点を習得することで、Kubernetesでのセキュアなアプリケーションの提供をスピード損なうことなく実現することが可能となります。

まとめ

Kubernetesを活用すること、また企業が求めるセキュリティを実現することは簡単なことではありません。この課題に対する「銀の弾丸」は無いのです。
我々がより良いソリューションを選択し、Kubernetesを中心としたエコシステムと共に成長するためには、「知識」がその道を照らす灯台となることは間違いありません。
社内や社外の多くの人と対話し、情報を共有し、そして正しい知識と共に自社にとって最良の方法を実践すること、この姿勢を保つことがセキュアなアプリケーションプラットフォームを実現する鍵となります。
我々、F5はそのようなお客様を最大限支援し、最高のパートナーとなるよう日々活動を続けます。

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/