Skip to main content

セキュアなアプリケーションを構築するためのクラウドネイティブセキュリティガイド

著者:
0 分で読めます

最新のクラウドネイティブアーキテクチャは、最先端のソフトウェアテクノロジーを活用し、クラウドファーストのインフラを重視しながら、アプリケーションを安全かつ大規模に導入する手段を企業に提供します。クラウドネイティブセキュリティは、これらのアプリケーションのセキュリティに適用されるパラダイムと同じもので、ゼロトラストや多層防御 (DiD) などの概念を含む、現代的で実用的なアプローチです。クラウドネイティブアプリケーションのセキュリティには、専用のツールやサービスを使用した同じアプローチが必要です。

クラウドネイティブセキュリティとは

クラウドネイティブセキュリティは、クラウドベースのプラットフォーム、インフラ、およびアプリケーションのセキュリティを確保する手法です。開発プロセスの最初から本番までセキュリティを組み込み、何層ものセキュリティを確保し、新しい脆弱性を継続的にモニタリングします。

クラウドネイティブとは

クラウドネイティブとは、システムアーキテクチャの構築に焦点を当てた設計原則、ソフトウェア、サービスの集合のことで、主要なホスティングプラットフォームとして設計されたクラウドがあります。クラウドネイティブアプリケーションは、現在のクラウドベースのインフラ機能を活用して高いスケーラビリティ、回復力、セキュリティを備えたアプリケーションを開発することを目的としています。また、継続的インテグレーションの手法による迅速な開発や導入の実現も目指しています。

また、クラウドネイティブなアプローチにより、従来のサーバーインフラの管理や導入に関わる負担を軽減し、運用を簡素化できるだけでなく、ソフトウェア駆動型インフラモデルを活用することで、高度な自動化を実現できます。

上記の定義は、クラウドネイティブを一般的に理解するための明瞭な基礎となりますが、Cloud Native Computing Foundation (CNCF) などの機関からはこのテーマについてもっと具体的な見解が示されています。

多くの場合、クラウドネイティブは「クラウドファースト」と考えれば十分ですが、CNCF はベンダーニュートラルなアプローチを重視し、最小限の追加設定でクラウドプロバイダー間で移植可能なプロジェクトやソフトウェアを推奨しています。また、最大の CNCF プロジェクト (Kubernetes) で重点が置かれているコンテナも非常に重視しています。企業が、CNCF の定義の範囲外にあるホスティングサービスを使用しているとしても、一般的なクラウドネイティブの定義に合致することは明らかです。どの定義が設計に最も適しているかは、個々のチームの判断に委ねられます。

クラウドネイティブアプリケーションとは

クラウドネイティブアプリケーションとは、クラウドネイティブアーキテクチャの文脈で構築・設計されたソフトウェアプログラムおよびサービスのことをいいます。クラウドネイティブアプリは、クラウドネイティブの利点を生かした形で機能するのに必要な設計原則、導入パラダイム、運用プロセスを包含する、特定かつ独自の単位となります。

クラウドネイティブの一般的な原則とは対照的に、特定のアプリケーションでは、明確な実装の決定を行い、ツールや不変のアーティファクトのようなパターンの選択が求められます。これらは大規模なシステムのクラウドネイティブの機能強化に役立ちます。

クラウドネイティブの定義に該当するソフトウェアの設計とデプロイの方法が多種多様であることは明らかですが、すべてのクラウドネイティブアプリケーションに共通する一般的な特徴がいくつかあります。

ほとんどのクラウドネイティブアプリケーションは、自動化テストやアプリケーションコードのビルドから基盤となるインフラの自動デプロイや拡張に至るまで、さまざまな形態の自動化に大きく依存しています。最も成功している企業の中には、高度に自動化された堅牢なクラウドネイティブ CI/CD システムを利用して、1 日に何千件ものデプロイメントを実行しているところもあります。当社の「クラウドネイティブセキュリティの現状」レポートによると、クラウドネイティブの自動化レベルが高い企業ほど、セキュリティテスト手法の導入が進んでいます。完全に自動化された導入パイプラインを備えた組織は、クラウドネイティブなアプリケーションのセキュリティを確保するため、SAST および SCA ツールを採用する可能性が 2 倍高くなっています。

クラウドネイティブアプリでは、通常、マイクロサービスアーキテクチャのパターンが採用されます。これによりコンポーネントを個別に拡張することで、増大するサービス需要に対応できます。DevOps の原則を利用したアプリケーション開発で成功するには、クラウドネイティブであることがほぼ常に暗黙的に必要とされます。

クラウドネイティブアプリケーションは、従来のアプリケーションモデルよりも高速に構築でき、効果的に拡張できます。これにより、テクノロジー主導型の企業はすばやいイノベーションと市場開発期間の短縮を実現できます。  ただし、クラウドネイティブモデルは、クラウドネイティブアプリケーションのセキュリティと運用の責任者が考慮しなければならない根本的な変化をもたらしています。これまでインフラであったものが、アプリケーションの一部となっているからです。  特にセキュリティに関して、クラウドネイティブアプリケーションではセキュリティモデルについての新たな考え方が必要とされます。アプリケーションセキュリティと運用の概念を再定義する必要があります。

クラウドネイティブセキュリティツール vs レガシーツール

従来のレガシーソフトウェアホスティングインフラ向けに設計されたセキュリティツールやプロセスは、クラウドネイティブアーキテクチャのダイナミックで露出度の高い「ボーダーレス」なパラダイムに十分に対応するのに必要な機能セットを備えていません。

簡単に言うと、従来のセキュリティツールは、最新のクラウド需要に対応できるようには作られていません。現代のソフトウェアスタックでは当たり前とされるツールやデザインパターンの多くは、一部のセキュリティツールが最初に設計されたときには存在していませんでした。

Diagram showing the change from IT to cloud. Application security solutions replace IT.

その典型が、Terraform のようなinfrastructure as code (IaC) ツールの普及です。これらは技術的には「コード」ですが、一般的には独自の機能を持つドメイン固有言語 (DSL) を表しており、静的解析などのツールを使った従来の検証は難しく、効果的ではありません。IaC ツールでは比較的少ない労力で大量のインフラをプロビジョニングできるため、ツールのセキュリティの確保が非常に重要になります。IaC コードおよび設定の監査では、ソフトウェアとインフラエンジニアリングの歴史の中で最近開発されたベストプラクティスとツールを実装する必要があります。

IaC ツールは従来のセキュリティツールにおける重要な課題の一つですが、クラウドネイティブアプリケーションの大規模なセキュリティの確保にまつわる多くの課題のうちの一つに過ぎません。  基本的に、クラウドネイティブアプリケーションでセキュリティを確保するには、IT/運用セキュリティの責任範囲の概念をアプリケーションセキュリティモデルに移行するアプローチが必要であり、これらのコンポーネントのセキュリティ確保は、IT/運用セキュリティチームに完全に任せるのではなく、アプリケーションを構築する開発者から始める必要があります。

クラウドネイティブアプリケーションのセキュリティ

クラウドネイティブセキュリティでは、組織の全体的なクラウドネイティブ戦略に沿って運用されるセキュリティに改めて焦点を当てる必要があります。クラウドネイティブアプリケーションは、アプリケーションのコンテキストでセキュリティを確保する必要があり、クラウドネイティブアプリケーションを開発して運用するチーム、プロセス、インフラモデルの変化に対応するアプローチにする必要があります。  したがって、クラウドネイティブセキュリティでは、クラウドネイティブアプリケーションのセキュリティを重視し、開発中に脆弱性を特定し、対策を講じられるようにすることが重要です。  アプローチは総合的なものにする必要があり、ソフトウェア開発ライフサイクル全体を通じてセキュリティを組み込む必要があります。

開発者は、セキュリティプラットフォームによる支援でビジネス目標を達成し、クラウドネイティブの原則を活用した設計の提供に専念できるようになります。同時に、アプリケーション開発中により多くのインフラを定義するにつれ、開発チームはコードのセキュリティを確保する責任を認識する必要があります。もしクラウドアーキテクチャがあらゆる議論や設計の決定において最優先事項となっていない場合、真のクラウドネイティブアプリケーションを構築するという目標は達成できないかもしれません。

デザインの基礎が築かれたら、アプリケーションとインフラのコーディングが開始されます。この段階では、コードのテストセキュアソフトウェア開発ライフサイクル (SSDLC) のできるだけ早い時期から開始することが重要です。前述のとおり、従来の静的解析による単一のアプローチはもはや十分ではありません。クラウドネイティブアプリケーションコードに対しては、静的アプリケーションテスト (SAST)、動的アプリケーションテスト (DAST)、対話型アプリケーションテスト (IAST)、そしてモバイルアプリケーションセキュリティテスト (MAST) を実行すべきですが、これは行うべきテストのほんの一部です。

クラウドネイティブインフラのセキュリティを確保する

クラウドネイティブアプリケーションのインフラのセキュリティを確保することには、特有の課題もあります。IaC の設定では多くの場合、開発者がインフラとアプリケーションのコードを同時に記述し、ライブでインフラが導入されます。この特有の課題に対処できるセキュリティツールが必要になり、既存のワークフローとシームレスに統合して、インサイトと処置のアドバイスを開発者に直接提供する必要があります。これは、IDE にセキュリティ情報を直接表示したり、CLI ツールでローカルテストを可能にすることを意味します。

クラウドネイティブのセキュリティツールは、ローカルの開発者環境にセキュリティに関するインサイトを提供するだけでなく、ソフトウェアライフサイクルの各フェーズに統合する必要があります。ソースコード管理システムにおける自動スキャンや、CI/CD システムによるコンテナイメージなど、派生アーティファクトのスキャンを優先する必要があります。また、統合スキャンの結果では、開発者が優先順位を判断しやすくなるように対策アドバイスを提供する必要があります。

従来のオンプレミス型のインフラでは、論理的なネットワーク境界に依存することが多く、これにより未承認のトラフィックが特定の社内リソースに侵入するのを防止し、これが緩いセキュリティコントロールとして機能していました。クラウドネイティブでは、境界の概念は実質的な価値を持ちません。ほとんどのクラウドプロバイダーのほぼすべてのリソースは、数行の設定や UI の変更で一般に公開できます。同じ論理ドメインに見えるデータでも、実際には複数のネットワークや物理的な場所を横断して目的地に到達している場合があります。この点を踏まえ、企業は「ゼロトラスト」モデルを採用しなければなりません。このモデルでは、すべてのコンポーネントやサービスが潜在的な攻撃対象であると考えます。認証は、ネットワークの場所に関係なく、システム内のすべてのノードやリソース間で行われます。

開発プロセスにおけるクラウドネイティブアプリケーションセキュリティへの重要性が高まっていることから、クラウドネイティブなセキュリティソリューションの必要性が本番環境でも継続していることに注目することが大切です。従来のアーキテクチャでは、通常、1 種類のコンピューティングリソース、つまりハードウェアサーバーが利用可能というのが一般的でした。従来のセキュリティツールでは、これらのリソースの周囲を保護するため、静的なネットワーク構成やファイアウォールを使用してアクセスやトラフィックの流れを制御していました。クラウドネイティブインフラは、新しいアプリケーションの迅速な導入やリソースの再設定など、極めてダイナミックになるように基礎から設計されています。

クラウドネイティブセキュリティアーキテクチャとは

クラウドネイティブセキュリティアーキテクチャは、クラウドで導入、実行されているすべてのものを可視化するために使用する戦略で、セキュリティチームがクラウド上のアプリケーション、インフラ、およびプラットフォームをモニタリングし、セキュリティを確保できるようにしています。クラウドセキュリティアーキテクチャの詳細をご覧いただけます。

クラウドネイティブアプリケーションでは、仮想マシン、コンテナ、サーバーレス機能など、さまざまなコンピューティングリソースやランタイムを使用できる可能性があります。クラウドネイティブエコシステムのもう一つの製品であるコンテナは、実行環境をモニタリングしてセキュリティを確保するため専用のセキュリティツールを必要としています。クラウドネイティブ環境で強固なセキュリティ態勢を維持するためには、ランタイムでアーティファクトや設定をスキャンすることが重要です。

クラウドネイティブアプリにはクラウドネイティブセキュリティプラットフォームが必要

クラウド全体は絶えず変化していますが、クラウド自体は今後も続いていくはずです。イノベーションの加速化に伴い、企業が遅れずについていけるような新しいテクノロジーやツールの開発が必要です。企業では、既存のオンプレミスソフトウェアインフラをクラウドに移植し、時代遅れの抽象化やセキュリティモデルを強要し、クラウドネイティブアプリケーションが提供するメリットを逃してしまうことが多々あります。

オンプレミスホスティングの時代に構築されたセキュリティモデルやツールは、特に深刻な負債となります。これらのツールのほとんどは、クラウドが第一層のホスティングプラットフォームとして普及する前に設計されたもので、適切なセキュリティを提供するという点では不十分です。驚くほどペースが速く競争の激しい分野において、アプリケーションを拡張できること、さらに重要なことにセキュリティを確保することは最優先事項です。現代のクラウド時代において競争力の維持を望む企業は、クラウドネイティブなアプリケーションの構築と、その保護に役立つクラウドネイティブなセキュリティプラットフォームの活用に注力すべきです。

「ソフトウェアの導入では、多くの不確定要素があります(...中略...)すべて手作業での設定は、面倒で時間がかかり、エラーが発生しやすく、気が進まないことが多いでしょう。だからこそ、私たちは Snyk でセキュリティを含むすべてを自動化する必要があると考えたのです」

Coveo、クラウドプラットフォームプロダクトマネージャー、アレックス・エメリー氏 (Alex Emery)

Snyk の一元化されたプラットフォームを活用して、クラウドネイティブアプリケーションのすべてのコンポーネントのセキュリティを確保しましょう。