コンテナ・セキュリティーは、コンテナ化されたアプリケーションと基盤となるインフラストラクチャーを、ビルドからデプロイ、実行時に至るまでのソフトウェア開発ライフサイクル全体を通じて保護します。
コンテナ・セキュリティーは、保護対策の強化とセキュリティー・リスクの最小化の両方を目的としています。
まず、「コンテナ・セキュリティー」には複数の意味があるため、ここでは何を説明しているのかを明確にしましょう。コンテナとは、アプリケーションのコードと必要なすべてのライブラリーおよび依存関係をバンドルした自己完結型のソフトウェア・ユニットです。これより、デスクトップ、従来型のITインフラストラクチャーおよびクラウド・インフラストラクチャーなど、あらゆるコンピューティング環境でコードを実行できるようになります。ここで説明しているセキュリティー上の課題は、データを保持・保護するコンテナに焦点を当てています。
データは今や商取引とコミュニケーションの生命線です。現代の世界はデータがなければ機能しなくなるため、何としてでも情報を保護する必要があります。欺瞞と犯罪は、今なお人間の本質の一部として根強く存在しています。現在のサイバー犯罪者は、以前の泥棒と同じ動機を持っており、セキュリティーの脆弱性を悪用するためのツールとノウハウを備えているに過ぎません。
データを完全に保護するためには、コンテナを理解する必要があります。さらにコンテナには、企業や個人のデータに対して多数のアクションを実行するアプリが格納されているため、アプリの重要性をしっかり理解する必要があります。
アプリはいくつあるでしょうか。正確な数を探り当てるのは困難ですが、2025年4月までに、Google PlayとApple App Storeはそれぞれ約200万種類のアプリを提供しました。これらのアプリを使用するのが組織か個人かにかかわらず、アプリのユーザーからアプリ自体へのデータ転送が行われる以上、セキュリティーの脆弱性はほぼ確実に発生します。
こうした転送は、ゲーム・アプリで遊ぶために個人的な財務データを提供する個人から、会計アプリに機密データや専有情報を提供する企業まで幅広く行われます。こうした情報がもしも(マルウェアやその他のタイプのサイバー脅威によって)盗まれたり暴露されたりすれば、渉外業務上の悪夢、競争優位性の喪失、セキュリティー侵害につながりかねません。さらには、数百万ドル、いや数十億ドル相当の顧客データ盗難に至る可能性さえあります。
あらゆるレベルで、膨大な個人情報がアプリと共有され、またアプリを通じて共有されています。リスクは大きいため、強力なコンテナ・セキュリティー体制を維持することは、サイバーセキュリティーの極めて重要な部分となります。
ソフトウェア開発の文脈では、コンテナ・テクノロジーはアプリケーションの実行に必要なものすべてを保持しています。コンテナは、すぐに使用でき、さまざまな環境で一貫して実行できる自己完結型のエンティティーとしてすべてのものをパッケージ化します。アプリの実行に必要なすべてのファイルは次のとおりです。
コンテナ・イメージは静的で変更されることのないファイルで、実行可能なコードを含み、ITインフラ上で他と分離された状態で動作します。コンテナ・イメージには、オペレーティング・システム上でコンテナを作成する際に必要なコンポーネントが格納されています。コンテナ・イメージはさまざまなレイヤーで構成されており、テンプレートのように機能します。
コンテナ・イメージは、クラウドネイティブ環境でアプリケーションを配信するためのデフォルトの形式であり、ここがコンテナ・セキュリティーの開始点です。ベース・イメージは、すべての派生イメージの基盤となるため、セキュリティーの観点から非常に重要です。コンテナのセキュリティーは、信頼できるソースを使用することから始まります。イメージが信頼できる組織から取得され、信頼できるレジストリーでホストされ、すべてのコンポーネントについて入手可能なソースコードが含まれていることを確認する必要があります。
たとえ信頼できるベースイメージから始めた場合でも、ライフサイクル全体を通じて脆弱性を積極的に管理することが不可欠です。レジストリーに統合されているか、別のツールとして提供されているイメージ・スキャナーを使用して、すべてのコンテナ・イメージを定期的にスキャンしましょう。また、一般的にコンテナ構成ミスと呼ばれる、ポリシーやベスト・プラクティスに違反するコンテナ・イメージも特定してください。
ソフトウェア開発ライフサイクル(SDLC)は、ソフトウェアとその稼働期間における寿命の「シーズン」を管理します。ここに概説されている7つの段階はすべて必要なものであり、順番に実行する必要があります。
これらの開発段階には、数多くの重要なテクノロジーが密接に関連しており、それぞれのソリューション(およびそれらが提供するセキュリティ対策)についても、SDLCにおいて使用する段階で説明します。
最初の段階は、プロジェクトのあらゆる側面を定義することです。つまり、まずはプロジェクトの範囲、期待する目標、取り組みに利用できるリソースを大まかに定めるということです。ただし通常は、コストとメリットの分析、実現可能性調査、スケジュール設定などといった他の活動もこの段階において行います。
次の2つの関連するテクノロジーは、SDLCのどの段階でも実装できるため、計画段階で議論することをおすすめします。
次の段階では、利害関係者とユーザーのニーズというレンズを通して、プロジェクトのニーズをさらに掘り下げます。ここでは、プロジェクトに適用されるさまざまな要件をすべて収集、分析、管理する必要があります。
この段階では、通常は設計者が注目されます。これは、要件に関して収集したすべての情報を実際のソフトウェア設計に集約するためです。この設計の青写真では、必要なアーキテクチャー、必要なデータ構造、採用すべきユーザー・インターフェースを記述します。
以下に挙げる4つの関連テクノロジーは、使用する際には設計段階において扱うことが望ましいものです。
すべての「準備」作業が完了したら、いよいよソフトウェア・デザイナーが提供した設計仕様を使用してソフトウェアを構築します。開発者はコードを記述し、アプリケーション・プログラミング・インターフェース(API)を作成し、必要に応じてコンポーネントが統合されていることを確認します。
Linuxは通常、設計段階で使用されますが、開発段階でも使用されます。なぜなら、開発段階ではソフトウェアのアーキテクチャーやプラットフォームが決定され、コーディング・プロセスもこの段階から始まるためです。
これまでの段階がすべて完了したのなら、ソフトウェアを公開し、ユーザーにリリースします。デプロイメントには、ソフトウェアのパッケージ化や構成など、ソフトウェア製品を大量配布用に準備するために必要なすべての関連タスクが含まれます。
Kubernetesは、コンテナ化されたアプリを保護するための自動化されたオープンソース・プラットフォームを提供することで、コンテナ・オーケストレーションの取り組みとコンテナのセキュリティーをサポートします。Kubernetes環境は、ロールベースのアクセス制御(RBAC)、ポッド(Kubernetesにおけるコンテナの管理単位)間の通信を管理するネットワーク・ポリシーなどのセキュリティー機能を提供します。また、シークレット管理(パスワード、APIキー、暗号化キー、トークンなどの機密データの安全な保管を優先)も提供します。
Kubernetes のセキュリティー・プロセスでは、Kubernetesクラスター全体を定期的に監視して、設定ミス、つまりセキュリティー・リスクの扉を開いて脆弱性を露呈する可能性のある設定がないかを確認します。技術的には、Kubernetesはソフトウェアのライフサイクルのどの段階でも採用できますが、一般にKubernetesの主な用途として認識されているのは、コンテナ化されたアプリケーションのデプロイメントとスケーリングの処理です。
前述したように、マイクロサービスはデプロイメント段階でも使用できます。
SDLCプロセスの最終段階は、ソフトウェアに対する継続的なサポートを提供することです。この段階では、プログラムの機能拡張、バグ修正、その他のパフォーマンス改善などが行われる場合があります。
セキュリティー・ポリシーの有効性を強調するために組織が実行できる日常的な手順はさまざまです。これらの多くは、常識的なアプローチに基づいており、実証済みの脆弱性管理原則を用います。
多くのコンテナ・セキュリティー対策では、何らかの形でアクセスを制限します。例えば、コンテナの権限は最小権限の原則に基づいて控えめに付与し、動作に必要な権限のみを与えます。同様に、アクセス制御の権限を限定し、許可されたユーザーのみがコンテナ・レジストリー内のイメージにアクセスして操作できるようにします。適切なユーザー認証と不正アクセスの防止を実現するために、ロールベースのアクセス制御(RBAC)ルールを遵守しましょう。最後に、コンテナの基本イメージは承認済みのソースからのみ取得するようにします。実装前にベース・イメージを確認して、適切に精査され、公式に認められているソースからのものであることを確認します。
脆弱性を効果的に制限するには、コンテナー・イメージをスリム化し、不要なサービス、プロセス、パッケージを削除することで、攻撃対象領域を減らす必要があります。その目的は、コンテナ・イメージを標的とする潜在的な攻撃経路を最小限に抑えることです。
コンテナ・セキュリティー・ツールを使用して、コンテナ環境の定期的な脆弱性スキャンを実施します。さらに、定期的にイメージをスキャンし、使用しているコンテナ・エンジン(Dockerなど)とともにコンテナ・イメージを定期的に更新します。
脆弱性はいつ発生するかわからないため、常に警戒を怠らず、実行時の監視を定期的に実施し、実行時のセキュリティーを維持することが重要です。ネットワーク・セキュリティに関する潜在的な問題にも常に注意を払っておくべきです。チームワークはセキュリティーを強化します。社内全員が協力して、ますます重要性を増しているコンテナ・セキュリティーに継続的に取り組むことが求められます。
Red Hat OpenShift on IBM Cloudは、フルマネージドのOpenShiftコンテナ・プラットフォーム(OCP)です。
コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントにより、コンテナ化されたワークロードを実行およびスケールアップします。
IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。