/
ゼロトラストセグメンテーション

マイクロセグメンテーションによる回復力のある安全なマイクロサービスの構築

この記事はもともと掲載されました 新しいスタック。

約10〜12年前、ソフトウェアの世界では、エンタープライズアプリケーションのアーキテクチャ的側面に変化がありました。アーキテクトとソフトウェアビルダーは、プライベートデータセンターにデプロイされた巨大で緊密に結合されたモノリシックアプリケーションから、パブリッククラウドインフラストラクチャでホストされるよりマイクロサービス指向のアーキテクチャに移行し始めました。マイクロサービスに固有の分散型の性質は、パブリッククラウドにおける新たなセキュリティ上の課題です。過去10年間で、スケーラブルで自律的で堅牢なエンタープライズアプリケーションを構築するためのマイクロサービス指向アーキテクチャの採用が増加しているにもかかわらず、組織は従来のデータセンターと比較して、クラウドでのこの新しい攻撃対象領域からの保護に苦労することがよくあります。これには、マルチテナントや、インフラストラクチャや運用環境に対する可視性と制御の欠如に関する懸念が含まれます。このアーキテクチャの変化により、特にコンテナベースのデプロイの高速化が最も重視されているため、セキュリティ目標の達成が難しくなります。

この記事の目的は、マイクロセグメンテーションとは何か、そしてマイクロセグメンテーションがソフトウェアアーキテクト、DevOpsエンジニア、ITセキュリティアーキテクトに安全で回復力のあるマイクロサービスを構築するのをどのように支援できるかを理解することです。具体的には、一般的なコンテナオーケストレーションメカニズムであるKubernetesに関連する ネットワークセキュリティ の課題について説明し、侵害が発生したときにラテラルムーブメントを防ぐためのマイクロセグメンテーションの価値を説明します。

マイクロサービス展開におけるセキュリティ上の課題

マイクロサービス指向のアーキテクチャでは、アプリケーションをより小さな疎結合サービスに分割する必要があります。これらのサービスは分散されているため、多くの場合、独自のデータストアを持つことになります。これらの各サービスは、オブジェクトコード、サードパーティライブラリ、オペレーティングシステム、ツール、その他の依存関係からすべてをパッケージ化するメカニズムを提供するコンテナを使用して個別にデプロイされます。すべての必需品がパッケージ化されると、コンテナはそれらをスムーズに実行するための実行環境を提供します。これらのコンテナーは、Kubernetes などのオーケストレーターを使用して管理されます。

一般的な概念によれば、コンテナエコシステムは分離を通じてセキュリティを強化するように設計されています。ただし、コンテナー間の分離は、必ずしも必要なセキュリティ境界を提供するわけではありません。Kubernetes は、認証、承認、ネットワーク ポリシー、ポッド セキュリティ標準など、いくつかのセキュリティ機能を提供します。しかし、残念ながら、コンテナもKubernetesもデフォルトでセキュリティを提供していません。Kubernetes デプロイでは、デフォルト構成ではセキュリティよりも機能が優先されます。したがって、これらのコンテナの作成、移動、破棄を担当する開発者または信頼性エンジニアは、デプロイメントのセキュリティを確保する方法を常に知っているとは限りません。ネットワーキングとセキュリティの観点から、Kubernetesの重要な側面のいくつかを詳しく見てみましょう。

  1. Namespace: Kubernetesでは、名前空間は、クラスターリソースを複数のユーザー間の仮想空間に分割する論理的な方法です。Linux とは異なり、 ネットワーク セグメンテーションは強制されません。名前空間はセキュリティ境界ではないため、ある名前空間のサービスは別の名前空間のサービスにアクセスできることに注意してください。
  2. ネットワークポリシー: Kubernetesネットワークポリシーは、名前空間、ポッド、およびIPアドレスブロック間のレイヤー3およびレイヤー4通信を可能にするアプリケーション固有の構造です。Kubernetes がインストールされている場合、ネットワークポリシーはデフォルトでは使用できません。ポッドを作成する前に、ネットワーク ポリシーを適用するようにネットワーク プラグインをインストールして構成する必要があります。また、ネットワークポリシーをサービスレベルで適用できないことにも注意してください。これは、アクセス制御をサービスに拡張できないため、セキュリティの観点からは重大な欠点です。
  3. Pod セキュリティ標準: クラスターでは、ポッドは同じ物理マシンまたは仮想マシンを共有する複数のコンテナをサポートします。これにより、ポッド内のコンテナ間でのデータ共有と通信が可能になります。Pod セキュリティ標準を使用すると、管理者はきめ細かな承認モデルを使用してリソースとその権限を制御できます。このセキュリティ制御にはアドミッション コントローラーが必要ですが、既定では有効になっていません。特権ポッドは、すべてのコンテナーへの管理アクセスを提供します。その結果、特権コンテナへのアクセスを取得した攻撃者は、ホスト リソースへの管理アクセスを取得できます。
  4. シークレットストレージ: Kubernetesは、パスワード、OAuthトークン、SSHキーなどの機密情報を、プレーンテキストと見なされるベース64でエンコードされた形式のシークレットとして保存します。シークレットへのアクセスを制限するために使用される承認ポリシーは、デフォルトでは構成されていません。これらは環境変数またはマニフェストファイルを介して共有されますが、これらもシークレットを処理するための安全でない方法と見なされます。保存中のシークレットのデフォルトの暗号化がなく、堅牢なシークレット管理が欠如している場合、シークレットはラテラルムーブメントの魅力的なターゲットになります。

ラテラルムーブメントと悪意のあるインサイダー

図1:ラテラルムーブメントを引き起こす悪意のあるインサイダー

マイクロサービスの分散型の性質により、接続性が非常に重要です。具体的には、コンテナーとポッドは名前空間間で相互に通信できる必要があります。ただし、クラスター層の既定のネットワーク ポリシーでは、必ずしも 最小特権の原則 がすぐに実装されているわけではありません。したがって、コードをどのように保護しても、共有リソースへの不正な暗黙的アクセスを禁止することはできません。その結果、アプリケーションはクラスター内の横方向の動きの影響を受けやすくなる可能性があります。マイクロセグメンテーションにより、きめ細かなアクセス制御を実装する手段が可能になり、コンテナ、ポッド、クラスターレベルで各マイクロサービスの周囲にセキュアゾーンを作成することで、爆発半径が大幅に縮小され、攻撃が成功した場合から回復するための回復力が向上します。

既存のKubernetesフレームワークのセキュリティモデルがマイクロサービスに関してもたらす2番目の顕著な脅威は、悪意のあるインサイダーです。セキュリティがデフォルトで使用できない場合、攻撃者の観点からは、いくつかの設定ミスが発生する可能性があります。強力なアクセス制御ポリシーや承認ポリシーがない場合、サーバー側リクエストフォージェリ(SSRF)などの攻撃により、攻撃者はポッドへの認証されたアクセスを利用して、別のポッド内のリソースへの不正アクセスを得ることができます。

上で説明したように、デフォルトではシークレットを保護するための適切なセキュリティ制御が利用できないことがわかりました。シークレットを暗号化してローテーションしないこと、およびシークレットへのアクセスを制限しないことは、確かに無関係な問題ですが、1つのセキュリティコントロール(この場合は暗号化の欠如)がない場合、悪意のあるインサイダー(たとえば、不満を抱いた管理者)による悪用を避けるために、2番目のセキュリティコントロール(つまり、シークレットストアへのアクセスの制限)が重要になります。

マイクロセグメンテーションによるサイバーレジリエンスの導入

セキュリティのコンテキストでは、回復性とは、攻撃や侵害などの壊滅的なイベントによる単純な障害から迅速に回復する機能です。レジリエントなマイクロサービスを構築するための最初のステップは、攻撃者から何を保護したいのか、また、資産やリソースが侵害された場合に、その影響をどのように制限できるかを理解することです。マイクロセグメンテーションは、重要なデータや重要なフォールトトレラントシステムを保持しているリソースを特定するのに役立ち、最小権限に基づいてアクセスをロックダウンするメカニズムも提供します。このようにして、1 つの重要なリソースが侵害されても、他のリソースは影響を受けません。

今日の最新のソフトウェア開発ライフサイクルでは、機能を迅速に提供することが特に重視されています。これらの機能は、主に同じ開発者または DevOps によって、コンテナを介して本番環境にさらに高速にデプロイされます。マイクロサービス、サードパーティライブラリ、その他の依存関係、コンテナ、またはクラスターのコードが影響を受けやすいあらゆる種類の脆弱性を考慮すると、これらすべての攻撃を特定して防止するにはどうすればよいでしょうか?答えは、重要なリソースへのアクセスをブロックし、マイクロセグメンテーションを使用して「知る必要がある」場合にのみ許可することです。

マイクロセグメンテーションの使用を開始する

マイクロセグメンテーションを開始する際の万能の戦略はありませんが、マイクロサービスのマイクロセグメンテーションプロジェクトを立ち上げる際のベストプラクティスをいくつか示します。

1. マイクロサービスの設計パターンを理解し、マイクロセグメンテーションテンプレートを使用する

設計パターンを知ることで、アーキテクチャ コンポーネント、データ フロー、重要なデータを保持する資産をより深く理解しやすくなります。これらの頻繁に使用される設計パターンに基づいて、対応するマイクロセグメンテーションテンプレートを作成できます。これらのテンプレートは、セキュリティおよびネットワークチームによって精査されれば、再利用が容易になり、より速い速度で拡張できるようになります。

巨大で緊密に結合されたモノリス アプリケーションとは異なり、マイクロサービス指向のアーキテクチャに基づくアプリケーションは、1 つ以上の特定の設計パターンに従います。これらのデザインパターンは、次のいずれかになります。

  • 分解パターンには、ビジネス機能に基づいてアプリケーションをサブドメインまたはトランザクションに分割することが含まれます。
  • 統合パターンには、API ゲートウェイ、アグリゲーター、チェーン マイクロサービスなどのサービス統合設計パターンが含まれます。
  • データベース・パターンは、アプリケーションの全体的なアーキテクチャにおけるデータベースの位置に焦点を合わせます。例としては、サービスごとのデータベース、共有データベース、イベント ソーシングなどがあります。
  • オブザーバビリティ パターンは、ログ集約、分散トレース、ヘルス チェックなどの監査、ログ記録、監視に重点を置いた設計パターンで構成されます。
  • 横断的な懸念パターンは、セキュリティ、フォールト トレランス、サービス間通信、構成管理などのアプリケーション レベルの機能を一元的に管理するのに役立ちます。例としては、サーキットブレーカー、サービスディスカバリーなどがあります。

(さまざまなマイクロサービス設計パターンの詳細については 、こちらをご覧ください。

2. 適切なマイクロセグメンテーションアプローチの選択

現在、市場にはさまざまなソリューションアプローチを持つマイクロセグメンテーションベンダーがいくつか存在します。大まかに言えば、マイクロセグメンテーション技術は次の 2 つのカテゴリに分類されます。

  1. テクノロジーに依存しないマイクロセグメンテーションソリューションは、エージェントまたは 次世代ファイアウォールに基づいています。
  2. テクノロジーに依存するマイクロセグメンテーションソリューションは、ハイパーバイザーまたはネットワークファブリックに基づいています。

マイクロサービスはさまざまなテクノロジースタックを使用するため、デプロイを高速化するには、迅速に拡張できる能力が必要です。したがって、テクノロジーにとらわれないマイクロセグメンテーションソリューション、ただし、クラスター、ポッド、コンテナ、およびサービスをセグメント化できるコンテナエコシステム向けに特別に調整されたソリューションが最適な選択になります。

3. ネットワークの可視性

セグメント化されたアプリケーションとトラフィックフローを視覚化する機能は、マイクロセグメンテーションソリューションの不可欠な部分です。可視性により、管理者、セキュリティアーキテクト、最高セキュリティ責任者(CSO)にネットワーク全体のワンストップビューが提供されます。

4. 使いやすい集中制御

アプリケーションごとにポリシーを作成するのは、最初は困難な作業になる可能性があります。IT、ネットワーク、セキュリティのアーキテクトとの一連の会話が必要です。ポリシーの作成と適用を容易にするための一元的な制御を行うことで、プロセスをスピードアップできます。マイクロサービス設計パターンに従ってカスタマイズされたセグメンテーションテンプレートを活用することも役立ちます。

5. パフォーマンスがボトルネックであってはなりません

マイクロセグメンテーションポリシーを適用するには、トラフィックを分析し、ポリシーをリアルタイムで効果的に展開する必要があります。攻撃者はパフォーマンスの遅延を利用して、攻撃をさらに顕在化させることができます。したがって、特にレイテンシーの影響を受けやすいマイクロサービスの場合、パフォーマンスをテストすることが非常に重要です。

Conclusion

図2:マイクロセグメンテーションを使用して作成されたセキュアゾーンは、横方向の動きを防ぎます。

このブログ投稿では、マイクロサービスで使用されるコンテナと Kubernetes ベースのデプロイ メカニズムによってもたらされるセキュリティ上の懸念のいくつかについて説明しました。「レジリエンス」という言葉は、重要なリソースへのアクセスの制限についてあまり考慮せずに、CI/CD ライフサイクル全体を通じてマイクロサービスを本番環境に継続的により速い速度でデプロイすると、出てき始めます。マイクロセグメンテーションは、侵害の影響を最小限に抑える強力なアクセス制御メカニズムを提供します。また、安全なマイクロゾーンを実装することで、エンタープライズ アプリケーションの回復力を促進します。

マイクロセグメンテーションは、正しく計画され、実行されれば、マイクロサービスの世界における横方向の動きに対する強力な障壁を確実に構築します。マイクロサービスを保護するのは難しいですが、セキュリティとレジリエンスを大規模に実装することについて立ち止まって考え、すべての利害関係者とともに積極的に計画することが重要です。

関連トピック

No items found.

関連記事

連邦政府機関がゼロトラストパイロットプロジェクトを作成する方法
ゼロトラストセグメンテーション

連邦政府機関がゼロトラストパイロットプロジェクトを作成する方法

組織にゼロトラストを実装する場合は、まず、重要なセキュリティの優先事項と現在のゼロトラスト機能を把握することから始めます。

EDRとゼロトラストセグメンテーションの両方が必要な理由
ゼロトラストセグメンテーション

EDRとゼロトラストセグメンテーションの両方が必要な理由

EDRとXDRに対するスタンスに関係なく、イルミオはゼロトラストセグメンテーションポリシーで両方の製品を補完し、攻撃者が操作する余地をほとんど残しません。

イルミオがeBayの大規模なマイクロセグメンテーションプロジェクトをどのように簡素化したか
ゼロトラストセグメンテーション

イルミオがeBayの大規模なマイクロセグメンテーションプロジェクトをどのように簡素化したか

イルミオを使用してネットワーク全体にマイクロセグメンテーションを展開したeBayの成功事例をご覧ください。

No items found.

違反を想定します。
影響を最小限に抑えます。
レジリエンスを高めます。

ゼロトラストセグメンテーションについて詳しく知る準備はできていますか?