クラウドストライク2026年版グローバル脅威レポートエグゼクティブサマリー:AI時代に必読の脅威インテリジェンスレポート
ダウンロード

ガイドでCNAPPについて理解する

クラウドネイティブアプリケーション保護プラットフォームの主な利点と統合のヒントについて説明します。クラウドセキュリティ戦略を強化してください。

詳細を見る

ガイドでCNAPPについて理解する

クラウドネイティブアプリケーション保護プラットフォームの主な利点と統合のヒントについて説明します。クラウドセキュリティ戦略を強化してください。

詳細を見る

コンテナ化とは?

コンテナ化とは、アプリケーションの実行に必要なすべてのライブラリ、ファイル、設定、バイナリを1つの実行可能イメージにパッケージ化するソフトウェア展開プロセスです。これにより、アプリケーションは分離され、OSカーネルのみをホストマシンと共有しながら実行できるようになります。コンテナ化により、開発者は複数のデバイスやオペレーティングシステムで実行できる単一のソフトウェアパッケージを作成できます。コンテナ化アプリケーションは、動作に必要なファイルへのアクセスをユーザーに要求する必要がないため、「そのまま動作する」状態になります。必要なものはすべてパッケージ化されています。コンテナ化により、移植性、スケーラビリティ、リソース効率が向上し、仮想マシン (VM) の多くの欠点を解消するとともに、リソース消費量が少ない代替手段となります。

2024 State of Application Security Report

2024年版アプリケーションセキュリティの現状レポート

クラウドストライク2024年版アプリケーションセキュリティの現状レポートをダウンロードして、アプリケーションセキュリティにおける最も重要な課題についてご確認ください。

今すぐダウンロード

コンテナ化の仕組み

ソフトウェアアプリケーションのコンテナ化の簡略化されたバージョンには、次の3つのフェーズが含まれます。

  1. 開発:開発フェーズでは、開発者がソースコードをコミットする際に、開発者は、アプリケーションの依存関係をコンテナイメージファイル内に定義します。コンテナの設定はコードとして保存されるため、従来のソースコード管理システムと高い互換性を持っています。コンテナイメージファイルは通常、アプリケーションのソースコードとともに保存されるため、コンテナ化は、イメージファイルとその関連依存関係をソースコードに追加するだけで、非常にシンプルに行えることがあります。
  2. ビルド:ビルドフェーズでは、イメージはコンテナリポジトリに公開され、そこでバージョン管理、タグ付け、そしてイミュータブル化が行われます。これは基本的にコンテナを作成するステップです。アプリケーションにイメージファイルを組み込み、必要な依存関係をインストールしてイメージにプルするように設定すると、そのイメージは実体化され、保存する準備が整います。これはローカルで行うことも、参照およびダウンロードが可能なオンラインリポジトリで行うこともできます。
  3. 展開:展開フェーズでは、コンテナ化アプリケーションが、継続的インテグレーション/継続的デリバリー (CI/CD) パイプライン、テスト環境、ステージング環境、または本番環境にローカルで展開され、実行されます。環境からアクセスできるようになると、イメージは実行可能ファイルとして認識され、実行可能になります。

コンテナ化技術、コンテナオーケストレーションの手法、プラットフォームは多種多様ですが、Open Container Initiativeはコンテナランタイムとイメージの業界標準と仕様の定義に取り組んでいます。組織は、導入前に利用可能な技術を徹底的に評価し、自社に最適なものを見極める必要があります。

コンテナオーケストレーション

コンテナオーケストレーションとは、コンテナ化アプリケーションのプロビジョニング、展開、スケーリング、ロードバランシング、管理のプロセスを自動化することです。単一のアプリケーションに含まれる数百(場合によっては数千)ものマイクロサービスのSDLC(ソフトウェア開発ライフサイクル)を自動化することで、ユーザーエラーの可能性を低減し、開発効率を向上させます。

コンテナ化の利点

コンテナ化は、アプリケーションがホストマシン上で直接実行され、アプリケーションアセットのみでパッケージ化される従来のソフトウェア開発手法に比べて、多くの利点をもたらします。VMと同様に、コンテナ化は、展開、セキュリティ、リソース使用率、一貫性、スケーラビリティ、マイクロサービスのサポート、そしてDevOpsプラクティスとCI/CDワークフローの両方との統合といった面でメリットをもたらします。コンテナ化は、VMのパフォーマンスを凌駕することさえあります。コンテナ化が現代のソフトウェア開発と展開においてどのように価値をもたらすのかを説明します。

  • 移植性:コンテナ化アプリケーションは、依存関係が自己完結型であるため、さまざまな環境で確実に実行できます。コンテナ化アプリケーションでは、ホストマシンに依存関係を事前にインストールする必要がないため、インストールと実行のプロセスにおける煩雑さが軽減されます。
  • 分離:コンテナ化アプリケーションはプロセスレベルで分離されているため、あるコンテナに致命的なクラッシュが発生しても他のコンテナには影響がなく、障害は1つのアプリケーションのみに隔離されます。これはセキュリティにも影響を及ぼします。アプリケーションのリソースはコンテナ内で仮想化されているため、潜在的な脅威アクターはホストシステムへのアクセス権を獲得するために他の手段を講じる必要があります。
  • リソース効率:コンテナ化アプリケーションには、それ自体のコードと依存関係のみが含まれます。そのため、コンテナ化アプリケーションはVMより大幅に軽量なパッケージとなります。VMでは、より広範囲にプロビジョニングされた仮想マシンを作成するためにオペレーティングシステムコードの一部を組み込む必要があります。コンテナ化により、単一のコンピューティング環境で複数のコンテナを実行できるようになり、リソース利用効率が大幅に向上します。
  • 一貫性:コンテナ化されたアプリケーションは複数のランタイム環境間で一貫性のある動作をするため、コンテナは開発環境、ステージング環境、本番環境で信頼性を持って実行できます。
  • スケーラビリティ:コンテナは従来のアプリケーションより展開が簡単かつ迅速で、より安全であるため、拡張性も高くなります。これにより、オーバーヘッドが低減し、リソースをより効率的に活用できます。
  • DevOpsの実現:コンテナ化により、開発者はDevOpsのプラクティスに従い、SDLCの大部分を自動化できます。開発とテストの両方を効率化し、SDLCの迅速化と市場投入までの時間の短縮を実現します。
  • マイクロサービスのサポート:マイクロサービスは、APIを介して通信する小規模で独立したサービスです。開発者は、マイクロサービスごとに小さな単位で更新できるアプリケーションを開発できるので、一度にすべてを更新する必要がなくなります。コンテナ化により、あらゆる環境で効率的に動作するマイクロサービスを作成できます。コンテナ化アプリケーションはVMよりリソース使用量が少ないため、ホストマシンではより多くのマイクロサービスを実行できます。
  • CI/CD統合:コンテナ化をCI/CD開発プラクティスと統合することで、展開が迅速化されます。コンテナは軽量で移植性に優れているため、テストと展開が容易になります。また、自動作成も可能なため、CI/CDパイプラインに最適です。必要な依存関係はコンテナにコード化されるため、ライブラリの互換性に関する考慮も不要になります。
Porter Airlines

Porter Airlines

このユーザー事例をお読みになり、Porter Airlinesがクラウド、アイデンティティ、エンドポイントのセキュリティをクラウドストライクでどのように統合したかご覧ください。

ユーザー事例を読む

コンテナと仮想マシン

VMの歴史は1970年代に遡り、従来は複製されたランタイム環境を作成するために使用されてきました。機能的には、VMはコンテナと同じように動作します。つまり、アプリケーションまたはオペレーティングシステムの実行に必要なリソースを、ホストハードウェア上の分離された環境に配置します。両者はスコープの点で異なります。仮想マシンはオペレーティングシステムを完全に複製し、エミュレートするシステムの特定の属性をエミュレートします。これにより、マシンとそこで実行されるソフトウェアの仮想的な複製が作成されます。一方、コンテナには、アプリケーションと、実行に必要なライブラリおよびバイナリのみが含まれます。コンテナはシステムをエミュレートするのではなく、ホストマシン上のOSカーネルを利用してシステムを操作します。その結果、コンテナはVMよりリソース使用量がはるかに少なくなります。コンテナ化では通常、VMを実行する場合よりもRAM、ディスク容量、CPUオーバーヘッドが少なくなります。次の表は、さまざまな基準でコンテナとVMを比較したものです。

項目
コンテナ
仮想マシン
隔離OSレベルの仮想化を使用し、ホストOSカーネルをコンテナ間で共有します。各コンテナは独立したユーザー空間を持ちます。完全なOS仮想化を行い、ハイパーバイザー上でゲストOSを実行します。各VMがそれ自体のカーネルとユーザースペースを持ちます。
リソースのオーバーヘッド軽量。ホストOSリソースを効率的に共有し、メモリとディスク容量の消費を抑えます。重い。各VMにはゲストOSが含まれており、コンテナと比較して多くのメモリとディスク容量が必要になります。
起動時間起動が速い。コンテナは数秒で起動します。起動が遅い。VMはOS全体の起動が必要となるため、起動に時間がかかるのが一般的です。
パフォーマンスネイティブに近いパフォーマンス。カーネルを共有するのでオーバーヘッドが最小限に抑えられます。仮想化レイヤーと個別のOSインスタンスによるオーバーヘッドが影響し、パフォーマンスが若干低下します。
スケーラビリティ高いスケーラビリティを備え、リソースのオーバーヘッドを大幅に増やすことなく、ホスト上で複数のコンテナを起動できます。スケーラビリティは高いですが、より多くのリソースを消費します。VMを追加するごとにメモリとCPUの使用量が増加します。
展開の柔軟性柔軟な展開。環境が異なっても一貫した振る舞いを維持するように移植できます。柔軟性が低い。ゲストOSと設定が異なれば、VMの移植性は低くなります。
セキュリティVMに比べて分離性が低い。ホストカーネルを共有するため、適切に設定されていない場合はセキュリティリスクが生じる可能性があります。分離性が非常に高い。各VMはそれ自体のOSを備えた上でサンドボックス化されているため、セキュリティリスクが軽減されます。
ユースケースマイクロサービス、クラウドネイティブアプリケーション、迅速な開発/テストに最適です。OS要件が異なる複数のアプリケーションやレガシーシステムの実行に適しています。

 

マイクロサービスとコンテナ化

マイクロサービスは、APIを介して通信する小規模で独立したサービスです。モノリシックアプリケーションよりも迅速な展開と高い柔軟性を提供します。マイクロサービスは開発に関連して使用され、コンテナは展開に関連して使用されるという違いがあります。マイクロサービスは、特定のタスクを実行する個別のサービスを開発者が作成できるようし、よりアジャイルなソフトウェア開発アプローチを提供します。これらのマイクロサービスは、特定のチームが個別に更新および保守できるため、開発プロセスが大幅に効率化されます。コンテナはマイクロサービスを格納することができます。マイクロサービスをVMではなくコンテナに展開することで、チームはコンテナ化のメリットをすべて享受できます。また、それぞれのマイクロサービスを分離できるため、レジリエンスと効率性が向上します。マイクロサービスは、これまで既存のモノリシックアプリケーションのモダナイズに使用されてきました。アプリケーションのさまざまな機能をマイクロサービスに分割することで、チームはより迅速に修正および更新を行うことができます。

マイクロサービスとコンテナ化が互いに補完し合う仕組み

マイクロサービスとコンテナ化がどのように相互に補完し合うかを示す例として、単一のモノリシックアプリケーションを考えてみましょう。このアプリケーションが、それぞれ独自のレイヤーで3つの独立した機能を実行しているとします。

  1. Webリクエストの処理
  2. ビジネスロジックによるリクエストの処理
  3. データベースレイヤーとの通信

時間の経過とともに、これらの各レイヤーの複雑さが増し、企業はレイヤーを3つの独立したマイクロサービスに分割することを決定します。

  1. Webサービス
  2. コアロジックAPIサービス
  3. データベースサービス

これらの3つのレイヤーをマイクロサービスに分解した後、企業はそれらをコンテナ化することを決定します。これにより、マイクロサービスは互いに独立し、コンテナ化の多くのメリットを享受できるようになります。

コンテナ化のユースケース

コンテナ化のユースケースで最も一般的なものを示します。

  • マイクロサービス:上で説明したように、独立した小さいマイクロサービスは頻繁にコンテナ化されます。
  • CI/CD:コンテナ化されたコードは、はるかに自動化しやすく、迅速な展開が可能なため、CI/CDワークフローに最適です。
  • クラウド移行:クラウド移行では、レガシーアプリケーションはコンテナ化され、クラウド環境に展開されます。「リフト&シフト」アプローチにより、すべてのコードを書き直すことなく、アプリケーションをモダナイズできます。
  • モノのインターネット (IoT) デバイス:IoTデバイスはコンピューティング能力が限られているため、更新は多くの場合手動で行う必要があります。コンテナ化により、開発者はこれらの更新を自動化できます。

コンテナ化ツール

この表には、コンテナ化アプリケーションの構築、展開、管理に使用されるコンテナランタイム、オーケストレーションプラットフォーム、コンテナ管理ツールが一覧でまとめられています。各ツールは、さまざまな展開シナリオやインフラ要件に応じて、独自の機能や能力を提供します。

ツール
説明
Dockerコンテナ内のアプリケーションを開発、配送、実行するための主要なコンテナプラットフォーム。
Kubernetesコンテナ化アプリケーションの展開、スケーリング、管理を自動化するコンテナオーケストレーションプラットフォーム。
PodmanDockerの代替として簡単に置き換え可能なデーモンレスコンテナエンジン。
Docker ComposeYAML設定ファイルを使用してマルチコンテナDockerアプリケーションを定義および実行するためのツール。
OpenShiftエンタープライズアプリケーションの開発と展開のためのKubernetesベースのコンテナプラットフォーム。
Amazon ECSWeb Services (AWS) が提供するフルマネージドのコンテナオーケストレーションサービスです。
Google Kubernetes Engine (GKE)コンテナ化アプリケーションを展開、管理、スケーリングするためにGoogle Cloudが提供するマネージドKubernetesサービス。
Apache MesosCPU、メモリ、ストレージ、その他のコンピューティングリソースをマシンから切り離し、それらを抽象化する分散システムカーネル。
Nomad大規模なアプリケーションの展開を支援する、HashiCorpの分散ジョブスケジューラーおよびクラスターマネージャーです。
LXC/LXDLinux Containers (LXC) とLXDは、Linux上でOSレベルの仮想化を提供するコンテナテクノロジーです。

クラウドストライクで始めましょう

コンテナ化には、展開の自動化が容易になるほか、多くの利点があります。しかし、パイプラインを高速化する際には、新たな攻撃対象領域や潜在的なセキュリティ侵害が生じないように注意する必要があります。信頼できるセキュリティパートナーの存在があれば、大きな力となります。CrowdStrike Falcon® Cloud Securityは、クラウドネイティブアーキテクチャ、単一のコンソール、そして侵害を防ぎ、そもそも侵害が発生するのを未然に防ぐ自動化されたコンプライアンスツールによって、パイプラインを保護します。

Container Security and Kubernetes Protection Solution Brief

クラウドストライクによるコンテナセキュリティ

このデータシートをダウンロードして、CrowdStrike Falcon® Cloud Securityがどのように堅牢なコンテナセキュリティとKubernetes保護を提供するかをご確認ください。

今すぐダウンロード

コディ・クイーン(Cody Queen)は、クラウドストライクのクラウドセキュリティを担当する、シニアプロダクトマーケティングマネージャーです。