導入クラウドコンピューティングの発展に伴い、コンテナやマイクロサービスに代表されるクラウドネイティブ技術が広く注目を集めています。その中でも、Docker と Kubernetes は、エンタープライズ コンテナ ランタイムとコンテナ オーケストレーションの第一選択肢です。しかし、コンテナと Kubernetes を適用する過程で、ほとんどの企業はさまざまな程度のセキュリティ問題に直面しています。コンテナのセキュリティをどのように確保するかが、企業にとって最も懸念される問題となっています。 アプリケーションコンテナが新たな課題をもたらすコンテナの適用前は、クラウド内のアプリケーションシステムのほとんどは仮想マシン上で実行されていましたが、仮想マシンでは依然として追加のリソースの浪費とメンテナンスコストが発生し、起動速度も遅いという問題がありました。コンテナ技術は、リソース消費量が少なく、導入が速く、移行が容易などの特性があるため、企業の間で支持を集め始めています。一般的なクラウドネイティブ環境では、オブジェクトには通常、ホスト、イメージ、コンテナ、コンテナ オーケストレーション プラットフォーム、ネットワーク、マイクロサービスが含まれます。ただし、現在、ほとんどの企業はコンテナ テクノロジを使用してビジネス アプリケーションを展開しているため、以下ではコンテナに関連するセキュリティ上の課題の分析に焦点を当てます。 コンテナ技術のリスクオペレーティング システムの仮想化テクノロジであるコンテナーは、オペレーティング システム カーネルを共有しますが、完全な分離は実現しません。仮想化ソフトウェアに脆弱性があったり、ホスト マシンが攻撃されたりすると、コンテナーが逃げ出したり、リソースの分離に失敗したりして、1 つ以上のコンテナーのセキュリティに影響を及ぼします。 コンテナ エスケープ: 仮想化ソフトウェアの脆弱性を悪用することで、攻撃者はコンテナを通じてホスト権限を取得し、コンテナが配置されているホスト、さらにはホスト上の他のコンテナを攻撃できます。過去数年間に、関連する脆弱性がいくつか発見されています。そのうちの 1 つである CVE-2019-5736 は、RunC のセキュリティ脆弱性です。これにより、バージョン 18.09.2 より前の Docker では、悪意のあるコンテナーがホスト上の RunC バイナリ ファイルを上書きできるようになり、攻撃者がホスト上で root として任意のコマンドを実行できるようになります。 リソース分離の失敗: 攻撃者がコンテナのオペレーティング システム カーネルに侵入すると、ホスト上のファイル システムにアクセスしたり、他のコンテナに侵入したりすることができ、コンテナ分離が失敗します。ホストのファイルシステムが複数のコンテナのディレクトリにマウントされている場合、コンテナは同じディレクトリにアクセスできるため、情報漏洩やコンテンツの改ざんなどのセキュリティ上の問題が発生します。 安全でない画像イメージとは、アプリケーションまたはサービスの動作に必要なオペレーティング システムとアプリケーション ファイルの集合です。 1 つ以上のコンテナーを作成するために使用されます。これらは密接に関連しており、イメージのセキュリティはコンテナのセキュリティに影響します。画像の作成方法と使用方法に応じて、通常、画像のセキュリティに影響を与える要素は 3 つあります。 既存のイメージは安全ではありません。イメージは通常、開発者によって既存のイメージに基づいて作成されます。攻撃者によってアップロードされた悪意のある画像であっても、既存の画像にセキュリティ上の欠陥があった場合でも、それに基づいて作成された画像は安全ではありません。 脆弱性を含むソフトウェアの使用: 開発者はソフトウェア ライブラリのコードやソフトウェアを使用することが多いです。脆弱性や悪意のあるコードが含まれている場合、イメージ化されるとコンテナのセキュリティにも影響を及ぼします。 イメージの改ざん: コンテナ イメージは、悪意のあるプログラムの埋め込みやコンテンツの変更などにより、保存中および使用中に改ざんされる可能性があります。悪意を持って改ざんされたイメージを使用してコンテナが作成されると、コンテナとアプリケーションのセキュリティに影響が及びます。 東西攻撃ネットワークにより、コンテナ間の通信、コンテナと外部の世界間の通信、アプリケーション間のやり取りが可能になります。ただし、仮想化されたコンテナ ネットワーク環境では、ネットワーク セキュリティのリスクは従来のネットワークよりも複雑かつ深刻になります。 Docker 環境を例にとると、Bridge、Overlay、Macvlan などのネットワークをサポートします。実装方法は異なりますが、共通かつ普遍的な問題があります。コンテナが効果的に分離および制御されていない場合、攻撃者がホストまたはコンテナを制御すると、それを踏み台にして同じホストまたは異なるホスト上の他のコンテナを攻撃することができ、これは「東西攻撃」と呼ばれることが多く、サービス拒否攻撃になる可能性もあります。 動作環境が強化されていないコンテナのキャリアやオーケストレーション管理ソフトウェアとして、ホストやコンテナオーケストレーションプラットフォームなどの動作環境もコンテナセキュリティの重要な要素となります。前述したように、ホスト上のコンテナは完全に分離されていません。ホストが安全に強化されていない場合、攻撃者が権限昇格攻撃を開始すると、ホスト上の他のコンテナも制御されることになります。安全でないコンテナ オーケストレーション プラットフォームでも同様です。ある自動車メーカーはかつてこれによって大きな被害を受けた。パブリック クラウド環境の Kubernetes マスター ノードはパスワードで保護されていなかったため、攻撃者はアクセス権を盗んだ後、Kubernetes クラスターを使用して暗号通貨をマイニングしました。 コンテナのセキュリティ対策LXC から始まり、コンテナはコンテナ セキュリティの基盤を形成する一般的な Linux セキュリティ テクノロジーのほとんどを活用してきました。従来のセキュリティ強化であれ、新しいイメージ構成分析であれ、新たな課題に直面した場合、イメージ、コンテナ技術、ネットワーク、ホストなどのさまざまなレベルでのセキュリティ対策がコンテナのセキュリティの向上に役立ちます。 LinuxカーネルのセキュリティメカニズムLinux の一般的なセキュリティ テクノロジには、名前空間、制御グループ (Cgroups)、システム権限 (Capability)、強制アクセス制御 (MAC) システム、セキュア コンピューティング (Seccomp) などがあります。優れたコンテナ プラットフォームにはこれらの機能が備わっている必要があります。次の記事では、最初の 3 つの機能に焦点を当てます。 名前空間: 基本的に、コンテナはさまざまな名前空間で構成されており、コンテナに基本的な分離を提供し、各コンテナが独立したプロセス ID、ネットワーク スタック、ルート ディレクトリ、メモリ、ユーザー名、ホスト名を持つことができるようになります。 図1: コンテナは名前空間の組み合わせです コントロール グループ (Cgroups) : コントロール グループは、リソースの監査と制限を実装し、各コンテナーがホスト リソースを公平に共有できるようにし、単一のコンテナーがリソースを過剰に消費してホスト システムや他のコンテナーの動作に影響を与えたり、サービス拒否攻撃を防止したりしないように制限を設定する役割を担います。 図2 コントロールグループはコンテナに利用可能なリソースを制限します システム権限(機能) : ルートユーザーにはすべての権限があります。コンテナを root として実行するのは危険です。ただし、非ルート ユーザーとしてバックグラウンドでコンテナーを実行すると、権限がないため、さまざまな点で制限されます。システム権限メカニズムは、コンテナ操作に必要なルート ユーザー権限を制御するためのきめ細かい権限アクセス制御を提供できます。攻撃者がルート権限を取得しても、ホスト上でより高い権限を取得することはできないため、それ以上の被害を抑えることができます。 図3 システム権限はコンテナ権限を制御する 安全なコンテナLinux Common Security Technology はコンテナの基本的な分離を提供しますが、100% の分離は実現しません。セキュア コンテナーは、分離レイヤーを追加することでコンテナーのセキュリティをさらに強化できます。これは、コンテナ アプリケーションに完全なオペレーティング システム実行環境 (通常は Linux ABI) を提供し、アプリケーションの実行をホスト オペレーティング システムから分離し、アプリケーションがホスト リソースに直接アクセスするのを防ぐことで、コンテナ ホスト間またはコンテナ間で追加の保護を提供するコンテナ ランタイム テクノロジです。 gVisor と Kata Containers は、2 つの代表的なセキュア コンテナ実装です。 Kata Containers は、ハードウェア仮想化と軽量仮想マシンを使用して、コンテナーの分離を実現します。各コンテナ/ポッドは独立した仮想マシン上で実行されます。対応するすべての権限をホスト カーネルから取得しなくなったため、Kata Containers は VM のような強力な分離を提供できます。 図4 カタコンテナの構造と原理 画像セキュリティ分析コンテナ運用の基盤として、コンテナ イメージのセキュリティは、コンテナ セキュリティ エコシステム全体において重要な位置を占めています。コンテナ イメージは複数のレイヤーのイメージで構成され、イメージ リポジトリを通じて配布および更新されます。したがって、イメージセキュリティは、イメージ構築セキュリティ、ウェアハウスセキュリティ、イメージ配信セキュリティの 3 つの側面から実現できます。 イメージ構築のセキュリティ: イメージを構築するときは、依存イメージの整合性とソースを確認し、必要なソフトウェア パッケージのみをインストールし、適切な指示を使用して、攻撃対象領域を減らします。暗号化技術を使用して、パスワード、トークン、キー、およびユーザーの機密情報を保護します。 イメージ リポジトリのセキュリティ: イメージ リポジトリは、パブリック イメージ リポジトリとプライベート イメージ リポジトリに分かれています。パブリックイメージリポジトリのイメージを使用する場合は、公式にリリースされた最新バージョンのイメージを使用してください。ダウンロードしたイメージは脆弱性スキャンと評価を受け、定期的に更新される必要があります。プライベート イメージ リポジトリの場合、リポジトリ自体のセキュリティを維持する必要があります。たとえば、使用時には対応するセキュリティ証明書を構成する必要があります。一方、画像の使用中は、インタラクション プロセスのセキュリティを確保するために、ユーザー アクセス権限制御を使用する必要があります。 イメージ配信のセキュリティ: イメージのダウンロードおよびアップロード時に、デジタル署名と HTTPS を使用してコンテナ イメージの整合性と機密性を確保し、中間者攻撃などの脅威から防御します。 マイクロセグメンテーションネットワーク保護の基本的な手段は、分離とアクセス制御です。コンテナ ネットワーク保護では、コンテナ環境独自のセキュリティ メカニズムまたはサードパーティのマイクロ分離製品を使用できます。 Kubernetes ネットワークの場合、独自のセキュリティ ポリシーによって各 Pod の入口にアクセス制御が適用され、リスクの高いマイクロサービスが分離されますが、Pod 内のコンテナー間の通信や Pod から出る出口トラフィックは制御できません。サードパーティのマイクロセグメンテーション製品は、Kubernetes よりも詳細にインバウンドおよびアウトバウンドのネットワーク接続を記録し、ネットワーク内の脅威や攻撃を深く検出し、データ漏洩を検出し、7 層のマイクロセグメンテーションとネットワークの可視化を実現します。 動作環境の強化セキュリティ ベースラインを使用してコンテナ ホストと Kubernetes でセキュリティ チェックと強化を実行すると、コンテナのセキュリティがさらに強化されます。 CIS によって公開された Docker ベースラインは、Linux ホストの構成と Docker ホストの強化に関するベスト プラクティスとなっています。特権コンテナを作成し、Docker ホストのセキュリティ構成を CIS ベースラインと比較することで、セキュリティの問題を発見し、強化することができます。同様に、CIS は Kubernetes ベースラインを公開しており、従来の脆弱性スキャン ツール、スタンドアロンのコンテナ セキュリティ製品 (Aqua Security や NeuVector など)、およびプライベート メンテナーは Kubernetes セキュリティ チェックを自動化するスクリプトを GitHub に公開しています。 コンテナのセキュリティ対策DevOps の台頭により、ソフトウェア開発者と運用・保守担当者が緊密に連携し、自動化されたプロセスを通じてソフトウェアの開発、テスト、リリース、保守を完了できるようになりました。プロセス全体がより高速かつ頻繁になり、信頼性も高まるため、ソフトウェアの市場投入までの時間が短縮され、反復的な手作業が大幅に削減されます。現在、コンテナのセキュリティリスクに対処するために、さまざまなセキュリティ管理対策が開発されています。アプリケーション システムを効果的に保護するために、それらを DevOps に統合する方法は、コンテナ セキュリティの実践において考慮する必要がある主要な問題です。 この目的のために、当社は DevSecOps のコンセプトを支持し、コンテナのライフサイクル全体にわたるセキュリティ保護ソリューションを提案します。このソリューションは、コンテナ セキュリティ管理システムとコンテナ オーケストレーション テクノロジを使用して、コンテナ環境に安全なコンテナを展開し、継続的な検出と分析を行います。コンテナ環境リソースの可視化管理、イメージリスク管理、コンテナランタイムセキュリティ管理、コンプライアンス検出、マイクロサービス API リスク管理を実装し、最終的にはコンテナの構築、展開、運用のライフサイクル全体を通じてコンテナのセキュリティを確保します。 全体的なアーキテクチャコンテナ セキュリティ保護ソリューションは、モジュール式の階層化設計を採用しています。コンテナ運用環境と接続することで、コンテナ環境内のイメージやコンテナなどのオブジェクトの関連情報をリアルタイムに取得し、さまざまなセキュリティ機能を使用して監視・分析し、統一的なセキュリティ管理を行います。最後に、コンテナ環境のセキュリティ状態をグラフィカルにユーザーに表示します。 図5 コンテナセキュリティ保護アーキテクチャ セキュリティ管理レイヤー: コンテナ環境の資産管理、ポリシー管理、セキュリティ機能管理などのセキュリティ管理機能を担当します。セキュリティ機能の適応を通じて、さまざまな管理情報をさまざまなセキュリティ機能に配布し、さまざまなセキュリティ情報を収集し、集中的に分析・処理してコンテナ環境内のホスト、コンテナ、イメージ、ネットワークなどのオブジェクトのセキュリティ状態をユーザーに表示します。 セキュリティ機能レイヤー: 特定のセキュリティ機能を提供し、コンテナ環境のセキュリティ保護を提供します。セキュリティ機能には、システム セキュリティ スキャン、イメージ ファイル分析、悪意のあるファイル分析、侵入検知、マイクロ分離が含まれます。 オペレーティング環境層: コンテナ イメージ、コンテナ オーケストレーション管理、アプリケーションを実行するためのコンテナなどの機能を提供し、コンテナ機能層と対話してコンテナのセキュリティ保護を共同で実現します。 コンテナのライフサイクル全体の保護このソリューションは、コンテナセキュリティ保護アーキテクチャに基づいて、さまざまなセキュリティ機能を DevOps パイプラインと組み合わせ、継続的インテグレーション/継続的デプロイメントからランタイムまでのセキュリティ保護を実行し、コンテナの構築、デプロイメント、運用までのライフサイクル全体にわたる保護を提供し、最終的にアプリケーションシステムの安全な運用を実現します。 図6 コンテナライフサイクル保護 セキュリティを構築する アプリケーション構築フェーズでは、CI/CD パイプラインと統合することで、イメージ構築時に使用されたコマンドと構成パラメータを分析し、イメージファイル構築プロセスを復元し、コマンドで使用される機密操作を理解し、イメージファイルにパスワード、トークン、キー、ユーザーの機密情報などの機密情報が含まれているかどうかを分析します。同時に、イメージのソフトウェア構成を分析して、イメージ ファイルに含まれる悪意のあるファイル、ウイルス、トロイの木馬、および使用される依存ライブラリとコンポーネントのセキュリティ脆弱性を検出し、問題のある配信を回避します。 デプロイメントセキュリティ イメージを分析してリスクがないと判断された後、そのイメージはイメージリポジトリに送信されます。この段階では、コンテナ環境のイメージ リポジトリ構成がチェックされ、イメージ リポジトリが暗号化された方法で接続されていることが確認されます。 Kubernetes と連携することで、イメージリポジトリに新しいイメージが追加されたり、イメージを使用してコンテナが作成されたりすると、イメージ署名または MD5 値が自動的に検証され、イメージソースが信頼できるものであり、改ざんされていないことが保証されます。イメージソースが信頼できない、または改ざんされていることが判明した場合、そのイメージはコンテナの作成に使用することが禁止されます。 運用上の安全性 イメージが安全であることを確認した後、コンテナの実行段階に入ります。このフェーズでは、システム セキュリティ スキャン機能を使用して、Docker および Kubernetes CIS ベースラインに基づいて、ホストおよびコンテナー オーケストレーション ツール Kubernetes のコンプライアンス チェックを実行します。チェック範囲には、ホストのセキュリティ構成、Docker デーモンの構成、Docker デーモンの構成ファイル、コンテナ イメージとビルド、コンテナ操作のセキュリティ、Docker セキュリティ操作などが含まれ、コンテナ操作環境のセキュリティを確保します。 同時に、マイクロアイソレーションを使用してコンテナをネットワークから分離し、侵入検知機能を使用してコンテナの実行状況をリアルタイムで監視します。監視対象には、コンテナ内で実行中のプロセス (netlink ソケット、perf イベント、eBPF など) とファイル システムのほか、ホスト環境の権限昇格やコンテナ分離の破壊が含まれます。コンテナが異常に動作していることが判明した場合、アクセス制御メカニズムを使用して、コンテナのそれ以降の動作と通信が制限されます。 結論クラウドネイティブ アプリケーションの発展に伴い、マイクロサービスを通じてアプリケーション システムを提供する企業の割合が増加しています。コンテナ セキュリティは、コンテナ自体とコンテナ環境のセキュリティだけでなく、マイクロサービスとアプリケーションのセキュリティにも拡張されます。クラウドネイティブ テクノロジーを適用する場合、企業はコンテナ セキュリティを全体として考慮し、セキュリティをクラウドネイティブと統合し、アプリケーション システムをより適切に保護する必要があります。 |
<<: H3C: H3C CAS仮想化プラットフォームを使用してデータセンターの強固な基盤を構築
>>: ローコードデュアルプラットフォームを構築することで、UFIDA BIP はどのような可能性をもたらすのでしょうか?
「オンライン マーケティング」という言葉は誰もが知っていると思います。簡単に言えば、オンライン マー...
9月11日のニュース、海外メディアの報道によると、ドメイン名およびウェブサイトホスティングサービスプ...
多くの場合、Web サイトのメインテキスト ページは、Web サイト上で最も数が多いページになります...
IDCが発表したデータによると、モバイルクラウドのランキングは、2020年第4四半期の10位、202...
2019年、Androidユーザー数は増加し続け、ASO最適化を試してみたいAndroid開発者が増...
インターネット評論家のデイブ・ペル氏(写真提供:テンセント・テクノロジー)テンセントテクノロジーニュ...
話せば話すほど、当初の意図を忘れやすくなります。飲食O2O分野で起業した沙水氏は、関連する話題と議論...
ターゲット キーワードの配置とは、Web サイトのホームページのキーワードを配置することを意味します...
インターネットの爆発的かつ活発な発展により、このプラットフォームに基づいた新しい分野や新しい産業も出...
Urchin では、定義済みのセグメント (地理的地域や言語など) 別にユーザーをグループ化するだけ...
インターネットの発展に伴い、ウェブサイトアプリケーションの規模は拡大し続けています。従来の垂直アプリ...
Limewave は、オリジナルの Intel シリーズの VPS に AMD Ryzen 9 39...
タグは SEO で最も人気のある最適化方法です。SEO が人々に知られるようになった初期の頃、この設...
中国におけるモバイルインターネットの急速な発展により、同国におけるコミュニケーション方法は劇的な変化...
北京時間1月17日、海外メディアの報道によると、3か月間の社内テストを経て、ソーシャル質疑応答プラッ...