IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7573637ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること
<>
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図1
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図2
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図3
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図4
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図5
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図6
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図7
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図8
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図9
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図10
  • 特許-ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-17
(45)【発行日】2024-10-25
(54)【発明の名称】ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させること
(51)【国際特許分類】
   G06F 21/57 20130101AFI20241018BHJP
【FI】
G06F21/57
【請求項の数】 16
(21)【出願番号】P 2022552683
(86)(22)【出願日】2021-03-17
(65)【公表番号】
(43)【公表日】2023-05-10
(86)【国際出願番号】 EP2021056780
(87)【国際公開番号】W WO2021191014
(87)【国際公開日】2021-09-30
【審査請求日】2023-08-10
(31)【優先権主張番号】16/827,798
(32)【優先日】2020-03-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ル、マイケル ヴ
(72)【発明者】
【氏名】ジャムジョーム、ハニ、タラル
(72)【発明者】
【氏名】モロイ、イアン、マイケル
【審査官】岸野 徹
(56)【参考文献】
【文献】米国特許出願公開第2016/0381133(US,A1)
【文献】再公表特許第2017/006384(JP,A1)
【文献】米国特許出願公開第2018/0025163(US,A1)
【文献】国際公開第2019/186546(WO,A1)
【文献】特開2012-063917(JP,A)
【文献】国際公開第2014/122743(WO,A1)
【文献】特開2009-037611(JP,A)
【文献】特開2018-124827(JP,A)
【文献】米国特許第08875118(US,B1)
【文献】米国特許出願公開第2016/0316003(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるための方法であって、
複数のホスト・コンピュータに接続されたサーバが、
データ処理環境の複数のホスト・コンピュータで動く各アプリケーションによって利用されるシステム・リソースを測定することと、
前記複数のホスト・コンピュータで動くどのアプリケーションが同様のシステム・リソースを利用するかを判定することと、
同様のシステム・リソースを利用するアプリケーションを、それぞれのホスト・コンピュータ上にコロケートさせることと
実行する、方法。
【請求項2】
前記複数のホスト・コンピュータにおけるホスト・コンピュータのセット上で動く常駐アプリケーションによって使用されていない未使用のシステム・リソースを判定することと、
前記データ処理環境内の前記攻撃面を低減させるために、ホスト・コンピュータの前記セット内のそれぞれの各ホスト・コンピュータに対応する前記未使用のシステム・リソースを除去することと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記データ処理環境内の前記複数のホスト・コンピュータ上でのブート・ストラップ動作を実施することと、
前記複数のホスト・コンピュータ上にアプリケーションを配置することと、
それぞれの各アプリケーションのシステム・リソース利用状態フットプリントを取得するために、前記複数のホスト・コンピュータ上で動く前記アプリケーションをプロファイリングすることであって、システム・リソース利用状態フットプリントが、ホスト・コンピュータ上で動く特定のアプリケーションによるシステム・リソース使用率のパターンを識別する、前記プロファイリングすることと、
前記アプリケーションの前記プロファイリングに基づいて、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの複数の異なるセットを識別することと
をさらに含む、請求項1または2に記載の方法。
【請求項4】
前記複数のホスト・コンピュータにおけるそれぞれの各ホスト・コンピュータに対応するシステム・リソースのリストを取得することと、
動いている常駐アプリケーションによって利用されている、それぞれの各ホスト・コンピュータに対応するシステム・リソースの前記リスト内の使用中のシステム・リソースのセットを識別することと、
使用中のシステム・リソースの前記セットを、それぞれの各ホスト・コンピュータに対応するシステム・リソースの前記リストから差し引くことによって、それぞれの各ホスト・コンピュータに対応する未使用のシステム・リソースのセットを判定することと
をさらに含む、請求項1に記載の方法。
【請求項5】
同様のシステム・リソース利用状態フットプリントを有するアプリケーションの特定のセットを特定のホスト・コンピュータに配置すること、およびアプリケーションの前記特定のセットを動かす前記特定のホスト・コンピュータに対応する未使用のシステム・リソースの判定されたセットを除去することに基づいて、それぞれの各ホスト・コンピュータにおける攻撃面低減の最大量を判定することと、
前記同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、攻撃面低減の判定された最大量を有する指定のホスト・コンピュータに割り当てることと、
前記同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、前記データ処理環境内のその割り当てられたホスト・コンピュータに配置することと
をさらに含む、請求項1に記載の方法。
【請求項6】
前記サーバが、当該サーバに新しいアプリケーションを配置することと、
前記新しいアプリケーションのシステム・リソース利用状態フットプリントを判定するために、前記新しいアプリケーションをプロファイリングすることと、
前記複数のホスト・コンピュータにおけるそれぞれの各ホスト・コンピュータのシステム・リソース可用性を取得することと、
前記新しいアプリケーションの前記システム・リソース利用状態フットプリントに基づいて、前記新しいアプリケーションを動かすのに利用可能なシステム・リソースを有するいずれかのホスト・コンピュータを識別することと、
いずれかのホスト・コンピュータが前記新しいアプリケーションを動かすのに利用可能なシステム・リソースを有するかどうかを判定することと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記複数のホスト・コンピュータにおけるホスト・コンピュータのセットが、前記新しいアプリケーションを動かすのに利用可能なシステム・リソースを有すると判定することに応答して、前記新しいアプリケーションと同様のリソース利用状態フットプリントを有する1つまたは複数の動いている常駐アプリケーションを有する前記セット内のホスト・コンピュータに前記新しいアプリケーションを割り当てることと、
前記新しいアプリケーションと同様のリソース利用状態フットプリントを有する前記1つまたは複数の動いている常駐アプリケーションを有する前記ホスト・コンピュータに前記新しいアプリケーションを配置することと
をさらに含む、請求項6に記載の方法。
【請求項8】
前記複数のホスト・コンピュータにおけるホスト・コンピュータが、前記新しいアプリケーションを動かすのに利用可能なシステム・リソースを有していないと判定することに応答して、最小数の動いている常駐アプリケーションを有する前記複数のホスト・コンピュータにおけるホスト・コンピュータを選択することと、
前記選択されたホスト・コンピュータから前記サーバに常駐アプリケーションを移行することと、
リセット後のホスト・コンピュータを形成するために、前記選択されたホスト・コンピュータを初期のデフォルト状態にリセットすることと、
前記サーバから前記リセット後のホスト・コンピュータに、前記選択されたホスト・コンピュータから以前に移行されたアプリケーションを移行して戻すことと、
前記リセット後のホスト・コンピュータに前記新しいアプリケーションを配置することと、
前記リセット後のホスト・コンピュータ上の攻撃面を減少させるために、前記リセット後のホスト・コンピュータ上で動いている常駐アプリケーションによって利用されていないシステム・リソースを除去することと
をさらに含む、請求項6に記載の方法。
【請求項9】
定義済みの時間間隔が期限切れになったと判定することに応答して、監視される前記データ処理環境に含まれる複数のホスト・コンピュータにおける各ホスト・コンピュータに対応する利用可能なシステム・リソースのリストを取得することと、
前記複数のホスト・コンピュータにおける各ホスト・コンピュータ上で動いている常駐アプリケーションのシステム・リソース利用状態を取得することと、
それぞれの各ホスト・コンピュータに対応する利用可能なシステム・リソースの前記リスト、およびそれぞれの各ホスト・コンピュータ上で動く前記常駐アプリケーションの前記システム・リソース利用状態に基づいて、未使用のシステム・リソースがいずれかのホスト・システム上に存在するかどうかを判定することと、
未使用のシステム・リソースが1つまたは複数のホスト・システム上に存在すると判定することに応答して、前記データ処理環境内のこれらのホスト・システムの攻撃面を減少させるために、前記1つまたは複数のホスト・システム上に存在する前記未使用のシステム・リソースを除去することと
をさらに含む、請求項1に記載の方法。
【請求項10】
前記複数のホスト・コンピュータにおける全ての可能なアプリケーションとホスト・コンピュータとの組合せを識別および分析することと、
前記複数のホスト・コンピュータにおける全てのホスト・コンピュータにわたる未使用リソース低減を最大化するために、複数のホスト・コンピュータにおける未使用リソースの全てのセットの合計が最大であるアプリケーション・コロケーション割当てを選択することと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記コロケートさせることが、第1のクライアント・ホスト・コンピュータからアプリケーションを除去し、第2のクライアント・ホスト・コンピュータにアプリケーションをインストールすることを含む、請求項1に記載の方法。
【請求項12】
前記システム・リソースが、ホスト・コンピュータ・リソースおよびネットワーク・リソースを含むランタイム環境を含み、前記ホスト・コンピュータ・リソースおよびネットワーク・リソースが、ライブラリ、カーネル・システム・コール、カーネル・サブシステム、ハイパーバイザ、ネットワーク・サービス、インターネット・プロトコル・アドレス、ポート番号、高いアクセス権を伴う機密のネットワーク・ユーザ・アカウント、および高いアクセス権を伴う機密のネットワーク・アプリケーションから成るグループから選択される、請求項1に記載の方法。
【請求項13】
前記データ処理環境が、クラスタおよびクラウド環境から成るグループの1つである、請求項1に記載の方法。
【請求項14】
ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのコンピュータ・システムであって、
バス・システムと、
前記バス・システムに接続されたストレージ・デバイスであって、プログラム命令を格納する、前記ストレージ・デバイスと、
前記バス・システムに接続されたプロセッサであって、
データ処理環境の複数のホスト・コンピュータで動く各アプリケーションによって利用されるシステム・リソースを測定すること、
前記複数のホスト・コンピュータで動くどのアプリケーションが同様のシステム・リソースを利用するかを判定すること、および
同様のシステム・リソースを利用するアプリケーションを、それぞれのホスト・コンピュータ上にコロケートさせること
を行うために前記プログラム命令を実行する、前記プロセッサと
を備える、コンピュータ・システム。
【請求項15】
ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのコンピュータ・プログラムであって、
複数のホスト・コンピュータに接続されたサーバのプロセッサに、
データ処理環境の複数のホスト・コンピュータで動く各アプリケーションによって利用されるシステム・リソースを測定させることと、
前記複数のホスト・コンピュータで動くどのアプリケーションが同様のシステム・リソースを利用するかを判定させることと、
同様のシステム・リソースを利用するアプリケーションを、それぞれのホスト・コンピュータ上にコロケートさせることと
を実行させるためのコンピュータ・プログラム。
【請求項16】
請求項15に記載のコンピュータ・プログラムを記憶するストレージ・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に、ネットワークおよびシステム・セキュリティに関し、より詳細には、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのセットを同じホスト・コンピュータ上に選択的にコロケートさせることによって、ホスト・コンピュータ上の攻撃面を低減させることに関する。
【背景技術】
【0002】
ネットワーク・セキュリティは、コンピュータ・ネットワークおよびネットワーク・アクセス可能リソースの不正アクセス、誤使用、改変、または拒否を防ぎ、監視するために用いられるポリシおよび実践から成る。ネットワーク・セキュリティは、コンピュータ・ネットワークおよびそのリソースへのアクセスの権限付与を伴う。例えば、ネットワーク・ユーザが認証されると、ファイアウォールは、どのリソースへのアクセスをネットワーク・ユーザが許可されるかを定義するルールおよびポリシを施行することができる。
【0003】
それでも、攻撃者(すなわち、不正ユーザ)は、標的のホスト・コンピュータに対応する1つまたは複数のシステム・リソースを利用して、ネットワーク・セキュリティを迂回し、攻撃を実行することがある。このようなシステム・リソースは、例えば、ライブラリなどのアプリケーションもしくは共有リソースのコード、またはオペレーティング・システムなどのシステム・スタックを含み得る。さらに、攻撃者は、例えば、アプリケーション・プログラミング・インターフェース・エンドポイントおよびサービスなどの到達可能なネットワーク資産を活用して、ラテラル・ムーブメント攻撃を実施することがある。攻撃者は、特権的なユーザ・アカウントまたはアプリケーションあるいはその両方を収める標的のホスト・コンピュータに対して特権エスカレーション攻撃も実行し得る。特権エスカレーション攻撃は、特権的なアカウントおよびアプリケーションなどの、ネットワークおよびそのリソースへの高いアクセス権を攻撃者に与えるために、プログラミング・エラーまたは設計上の欠陥の利点を利用するネットワーク侵入のタイプである。
【0004】
現在、ネットワーク・セキュリティを対象とするいくつかの解決策が既に存在する。典型的には、これらの解決策は、既知の攻撃から保護するか、悪意のあるユーザ行動を識別する。さらに、既存の解決策は、例えば隔離および制限を使用して、一度に1つのホスト・コンピュータまたは1つのアプリケーションを重点的に取り扱うことしかできない。さらに、既存の制御フロー整合性解決策には、高い性能オーバヘッドがあり、迂回を防ぐのに十分正確ではない。その上、既存のアドレス空間レイアウト無作為化解決策も、ベース・アドレス漏洩により、迂回される恐れがある。さらに、アプリケーションおよびライブラリの脆弱性スキャンは、特定の脆弱性を見落とすことがあり、リターン指向プログラミング攻撃を防ぐことができない。結果として、不正ユーザ・アクセスおよび攻撃の可能性を減少させるための、向上したネットワークおよびシステム・セキュリティの必要性が存在する。
【発明の概要】
【0005】
本発明の1つの態様によれば、ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのコンピュータ実装方法が提供される。データ処理環境の複数のホスト・コンピュータで動く各アプリケーションによって利用されるシステム・リソースが測定される。複数のホスト・コンピュータで動くどのアプリケーションが同様のシステム・リソースを利用するかが判定される。同様のシステム・リソースを利用するアプリケーションは、それぞれのホスト・コンピュータ上でコロケートされる。他の例証的実施形態によれば、ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのコンピュータ・システムおよびコンピュータ・プログラム製品が提供される。
【0006】
例証的実施形態はまた、データ処理環境内の複数のホスト・コンピュータ上でのブート・ストラップ動作を実施することと、複数のホスト・コンピュータ上にアプリケーションを配置することと、それぞれの各アプリケーションのシステム・リソース利用状態フットプリントを取得するために、複数のホスト・コンピュータ上で動くアプリケーションをプロファイリングすることと、アプリケーションのプロファイリングに基づいて、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの複数の異なるセットを識別することと、複数のホスト・コンピュータにおけるそれぞれの各ホスト・コンピュータに対応するシステム・リソースのリストを取得することと、動いている常駐アプリケーションによって利用されている、それぞれの各ホスト・コンピュータに対応するシステム・リソースのリスト内の使用中のシステム・リソースのセットを識別することと、使用中のシステム・リソースのセットを、それぞれの各ホスト・コンピュータに対応するシステム・リソースのリストから差し引くことによって、それぞれの各ホスト・コンピュータに対応する未使用のシステム・リソースのセットを判定することと、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの特定のセットを特定のホスト・コンピュータに配置すること、およびアプリケーションのこの特定のセットを動かすこの特定のホスト・コンピュータに対応する未使用のシステム・リソースの判定されたセットを除去することに基づいて、それぞれの各ホスト・コンピュータにおける攻撃面低減の最大量を判定することと、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、攻撃面低減の判定された最大量を有する指定のホスト・コンピュータに割り当てることと、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、データ処理環境内のその割り当てられたホスト・コンピュータに配置することとを行う。
【0007】
結果として、例証的実施形態は、アプリケーション攻撃面測定に基づくアプリケーション・コロケーションを介してデータ処理環境の全般的なセキュリティおよび信頼を向上させ、攻撃成功の可能性を低減させる。さらに、例証的実施形態は、悪意のある行為者によってアクセスされることによるデータ処理環境の弱さを減少させる。したがって、例証的実施形態は、環境全体のセキュリティをもたらすことにより、技術的問題を克服する技術的解決策を提供する。結果として、これらの1つまたは複数の技術的解決策は、ネットワークおよびシステム・セキュリティの分野における技術的効果および実用的応用を提供する。
【図面の簡単な説明】
【0008】
図1】例証的実施形態が実装され得るデータ処理システムのネットワークの図的表現である。
図2】例証的実施形態が実装され得るデータ処理システムの図である。
図3】例証的実施形態が実装され得るクラウド・コンピューティング環境を示す図である。
図4】例証的実施形態によるクラウド・コンピューティング環境の抽象化層の例を示す図である。
図5】例証的実施形態によるシステム・アーキテクチャの例を示す図である。
図6】例証的実施形態によるアプリケーション・コロケーションおよび攻撃面低減プロセスの例を示す図である。
図7】例証的実施形態による異なるアプリケーション導入モデルにおける共有攻撃面リソースの例を示す図である。
図8】例証的実施形態による、システム・ブート・ストラップ中のアプリケーション配置のためのプロセスを示すフローチャートである。
図9】例証的実施形態による、システム実行時間中のアプリケーション配置のためのプロセスを示すフローチャートである。
図10】例証的実施形態による、実行時間中のホスト・コンピュータ攻撃面低減のためのプロセスを示すフローチャートである。
図11】例証的実施形態による、ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0009】
本発明は、統合のいずれかの可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含み得る。
【0010】
コンピュータ可読ストレージ媒体は、命令実行デバイスで使用するための命令を保持し、記憶することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【0011】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せなどの、ネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備え得る。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0012】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器のための構成データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかでよい。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行することができるか、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを使用したインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラム可能論理回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行することができる。
【0013】
本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本発明の態様が本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行できることが理解されよう。
【0014】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサ、または他のプログラム可能データ処理装置によって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するための手段を作り出すべく、機械を生み出すために、コンピュータのプロセッサ、または他のプログラム可能データ処理装置に提供されてもよい。これらのコンピュータ可読プログラム命令はまた、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実行する命令を含む製品を、命令を記憶したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に格納されてもよく、特定の様式で機能するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指示することができる。
【0015】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するべく、コンピュータ実行プロセスを生み出すように、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてもよい。
【0016】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、指定の論理機能を実現するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに記された機能は、図に記された順序とは異なる順序で発生してもよい。例えば、連続して示された2つのブロックは、実際には、同時に、実質的に同時に、部分的もしくは全面的に時間的に重複するように実行される1つのステップとして実現されてもよく、またはブロックは、時には、含まれる機能に応じて、逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実現できることにも留意されたい。
【0017】
図をここで参照すると、また特に図1図5を参照すると、例証的実施形態が実装され得るデータ処理環境の図が提供されている。図1図5は単に例であることが意図され、異なる実施形態が実装され得る環境に関して、何らかの限定を主張または示唆することを意図するものではないことを理解されたい。描写された環境に多くの変更が行われてもよい。
【0018】
図1は、例証的実施形態が実装され得るデータ処理環境の図的表現を描写する。データ処理環境100は、例証的実施形態が実装され得るコンピュータおよび他のデバイスのネットワークを含む。データ処理環境100は、例えば、データ・センタにおけるコンピュータのクラスタ、またはクラウド環境における複数のコンピュータ・ノードを表し得る。
【0019】
データ処理環境100は、ネットワーク102を含み、ネットワーク102は、データ処理環境100内で一緒に接続されたコンピュータと他のデバイスとの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、例えば、ワイヤ通信リンク、ワイヤレス通信リンク、光ファイバ・ケーブル、および同様のものなどの接続を含み得る。
【0020】
描写された例では、サーバ104およびサーバ106は、ストレージ108と共に、ネットワーク102に接続する。サーバ104およびサーバ106は、例えば、ネットワーク102への高速接続を伴うサーバ・コンピュータでよい。また、サーバ104およびサーバ106はそれぞれ、1つまたは複数のサーバ・コンピュータのセットを表し得ることに留意されたい。
【0021】
さらに、サーバ104およびサーバ106は、登録済みのクライアント・ホスト・コンピュータに攻撃面低減サービスを提供し得る。例えば、サーバ104およびサーバ106は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのセットを同じクライアント・ホスト・コンピュータ上に選択的にコロケートさせ、これらのクライアント・ホスト・コンピュータから未使用のシステム・リソースを除去することによって、クライアント・ホスト・コンピュータ上の攻撃面を低減させ得る。コロケートさせることは、第1のクライアント・ホスト・コンピュータからアプリケーションを除去し、第2のクライアント・ホスト・コンピュータにアプリケーションをインストールすることを含む。システム・リソースは、例えば、プロセッサ、メモリ、ストレージ、ライブラリ、カーネル・システム・コール識別子、カーネル・サブシステム、ハイパーバイザ、および同様のものなどの、共有ホスト・コンピュータ・リソースと、例えば、ネットワーク・サービス、ネットワーク・トラフィックの宛先(例えば、インターネット・プロトコル・アドレスおよびポート番号)、高いアクセス権を伴う機密のネットワーク・ユーザ・アカウント、高いアクセス権を伴う機密のネットワーク・アプリケーション、および同様のものなどの、共有ネットワーク・リソースとから成るランタイム環境である。
【0022】
ホスト・コンピュータ110、ホスト・コンピュータ112、およびホスト・コンピュータ114も、ネットワーク102に接続する。ホスト・コンピュータ110、112、および114は、サーバ104およびサーバ106の登録済みクライアントである。この例では、ホスト・コンピュータ110、112、および114は、複数の異なるアプリケーションをホストするネットワーク・コンピュータである。それでも、ホスト・コンピュータ110、112、および114は、ネットワーク102へのワイヤまたはワイヤレス通信リンクを伴う、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、スマート・フォン、スマートウォッチ、スマート・テレビ、スマート・アプライアンス、ゲーミング・デバイス、自動発券機、および同様のものなどの、データ処理システムの他のタイプを表し得ることに留意されたい。
【0023】
ストレージ108は、構造化フォーマットまたは非構造化フォーマットで任意のタイプのデータを格納することができるネットワーク・ストレージ・デバイスである。さらに、ストレージ108は、複数のネットワーク・ストレージ・デバイスを表し得る。さらに、ストレージ108は、複数のホスト・コンピュータの識別子およびネットワーク・アドレス、ホスト・コンピュータのそれぞれに対応するシステム・リソースのリスト、ホスト・コンピュータにロードされたアプリケーションのリスト、ホスト・コンピュータにロードされたアプリケーションのそれぞれに対応するシステム・リソース利用状態基準値、および同様のものを格納し得る。さらに、ストレージ108は、例えば、システム・アドミニストレータおよびユーザに関連付けられたユーザ名、パスワード、およびバイオメトリック・データを含み得る認証または資格証明書データなどの、他のタイプのデータを格納し得る。
【0024】
さらに、データ処理環境100は、図示していない任意の数の追加のサーバ・コンピュータ、ホスト・コンピュータ、ストレージ・デバイス、および他のデバイスを含み得ることに留意されたい。データ処理環境100内にあるプログラム・コードは、コンピュータ可読ストレージ媒体に格納され、使用のために、コンピュータまたは他のデータ処理デバイスにダウンロードされてもよい。例えば、プログラム・コードは、サーバ104のコンピュータ可読ストレージ媒体に格納され、ホスト・コンピュータ110での使用のために、ネットワーク102を介してホスト・コンピュータ110にダウンロードされてもよい。
【0025】
描写された例では、データ処理環境100は、例えば、インターネット、イントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、テレコミュニケーション・ネットワーク、またはその任意の組合せなどの、いくつかの異なるタイプの通信ネットワークとして実装され得る。図1は、単なる一例であることが意図され、異なる例証的実施形態に対する構造的限定を意図するものではない。
【0026】
図2をここで参照すると、例証的実施形態によるデータ処理システムの図が描写されている。データ処理システム200は、図1のサーバ104などのサーバ・コンピュータの例であり、この中に、例証的実施形態のプロセスを実行するコンピュータ可読プログラム・コードまたは命令が置かれ得る。この例では、データ処理システム200は通信ファブリック202を含み、通信ファブリック202は、プロセッサ・ユニット204、メモリ206、永続ストレージ208、通信ユニット210、入出力(I/O)ユニット212、およびディスプレイ214の間の通信を提供する。
【0027】
プロセッサ・ユニット204は、メモリ206にロードされ得るソフトウェア・アプリケーションおよびプログラムに関する命令を実行するように機能する。プロセッサ・ユニット204は、特定の実装形態に応じて、1つもしくは複数のハードウェア・プロセッサ・デバイスのセットでもよく、またはマルチコア・プロセッサでもよい。
【0028】
メモリ206および永続ストレージ208は、ストレージ・デバイス216の例である。コンピュータ可読ストレージ・デバイスは、例えば、限定することなく、データ、関数形式のコンピュータ可読プログラム・コード、または他の適切な情報、あるいはその組合せなどの情報を、一時的または永続的に格納することができるハードウェアのいずれかである。さらに、コンピュータ可読ストレージ・デバイスは、伝搬媒体を除外する。メモリ206は、これらの例では、例えば、ランダム・アクセス・メモリ(RAM)、または、フラッシュ・メモリなどの任意の他の適切な揮発性もしくは不揮発性ストレージ・デバイスでよい。永続ストレージ208は、特定の実装形態に応じて、様々な形をとってもよい。例えば、永続ストレージ208は、1つまたは複数のデバイスを収めてもよい。例えば、永続ストレージ208は、ディスク・ドライブ、ソリッド・ステート・ドライブ、書換え可能光ディスク、書換え可能磁気テープ、または上記のいくつかの組合せでよい。永続ストレージ208によって使用される媒体は取外し可能でよい。例えば、永続ストレージ208のために取外し可能ハード・ドライブが使用されてもよい。
【0029】
この例では、永続ストレージ208は、攻撃面低減マネージャ218を格納する。それでも、攻撃面低減マネージャ218が永続ストレージ208内に常駐しているように示されていても、代替の例証的実施形態では、攻撃面低減マネージャ218は、データ処理システム200の別々の構成要素でもよいことに留意されたい。例えば、攻撃面低減マネージャ218は、通信ファブリック202に連結されたハードウェア構成要素、またはハードウェアおよびソフトウェア構成要素の組合せでもよい。別の代替の例証的実施形態では、攻撃面低減マネージャ218の構成要素の第1のセットは、データ処理システム200内に置かれてもよく、攻撃面低減マネージャ218の構成要素の第2のセットは、例えば、図1のサーバ106などの、第2のデータ処理システム内に置かれてもよい。
【0030】
攻撃面低減マネージャ218は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションを同じホスト・コンピュータ上に選択的にコロケートさせ、ホスト・コンピュータ222に対応する任意の未使用のシステム・リソースを除去することによって、データ処理環境220内のホスト・コンピュータ222上の攻撃面を低減させるプロセスを制御する。ホスト・コンピュータ222は、データ処理環境220に含まれる複数のホスト・コンピュータの識別子を表し、例えば、図1のホスト・コンピュータ110、112、および114でもよい。データ処理環境220は、例えば、図1のデータ処理環境110などの、特定のデータ処理環境の識別子を表す。
【0031】
ホスト・コンピュータ222は、システム・リソース224およびアプリケーション226を含む。システム・リソースは、ランタイム環境をアプリケーション226に提供するホスト・コンピュータ・リソースおよびネットワーク・リソースを含む。アプリケーション226は、ホスト・コンピュータ222上で動いている常駐アプリケーションを表す。アプリケーション226は、例えば、銀行取引アプリケーション、金融アプリケーション、教育アプリケーション、政府のアプリケーション、ヘルスケア・アプリケーション、組織のアプリケーション、企業アプリケーション、および同様のものなどの、任意のタイプのアプリケーションも表し得、これらは、ホスト・コンピュータ222によってホストされてもよい。
【0032】
システム・リソース利用状態基準値228は、アプリケーション226におけるそれぞれの各アプリケーションに対応する。システム・リソース利用状態基準値228は、特定のアプリケーションによって利用されるシステム・リソースのタイプおよび量に関する情報および測定値を表す。攻撃面低減マネージャ218は、ホスト・コンピュータ222のそれぞれに置かれたソフトウェア・エージェントからシステム・リソース利用状態基準値228を取得する。攻撃面低減マネージャ218は、システム・リソース利用状態基準値228を利用して、アプリケーション226におけるそれぞれの各アプリケーションのシステム・リソース利用状態フットプリントを判定する。
【0033】
攻撃面低減マネージャ218は、同様のシステム・リソース利用状態フットプリント234を有するアプリケーションのセット232をホスト・コンピュータ230上にコロケートさせる。コロケートさせることは、同じホスト・コンピュータ上に一緒にアプリケーションを配置または配列する行為である。アプリケーションのセット232は、同じまたは同様のリソース利用状態基準値パターン、特徴、または行動(すなわち、フットプリント)を有するアプリケーション226におけるアプリケーションの特定のグループを表す。攻撃面低減マネージャ218は、例えば、リソース利用状態基準値類似性の定義済み範囲を利用して、アプリケーションのセット232における各アプリケーションが、ホスト・コンピュータ230などの同じホスト・コンピュータ上に一緒にコロケートされるための比較可能なリソース利用状態基準値を有しているかどうかを判定し得る。言い換えれば、アプリケーション232における各アプリケーションは、アプリケーションのセット232に含まれるように、リソース利用状態基準値類似性の定義済み範囲内の同様の、比較可能な、または似たリソース利用状態基準値を有する必要がある。したがって、攻撃面低減マネージャ218は、リソース利用状態基準値類似性の定義済み範囲を超えたリソース利用状態基準値を有するアプリケーションをアプリケーションのセット232内に含むことはない。ホスト・コンピュータ230は、ホスト・コンピュータ230にアプリケーションのセット232を配置した後、この特定のホスト・コンピュータが、判定された最大の攻撃面低減(すなわち、除去される最大数の未使用のシステム・リソース)を有することに基づくホスティングのために、攻撃面低減マネージャ218がアプリケーションのセット232を割り当てるホスト・コンピュータ222における指定のホスト・コンピュータを表す。
【0034】
攻撃面低減マネージャ218はまた、これらのホスト・コンピュータが、判定された最大の攻撃面低減を同様に有することに基づいて、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの他の異なるセットを、ホスト・コンピュータ222における他のホスト・コンピュータにコロケートさせる。同様のシステム・リソース・フットプリントを有するアプリケーションの異なるセット全てを、異なるホスト・コンピュータ上にコロケートさせた後、攻撃面低減マネージャ218は、ホスト・コンピュータ222におけるホスト・コンピュータのそれぞれから未使用のシステム・リソース236を除去して、データ処理環境220全体の攻撃面低減を実現し、データ処理環境220のセキュリティを向上させる。
【0035】
通信ユニット210は、この例では、図1のネットワーク102などのネットワークを介した、他のコンピュータ、データ処理システム、およびデバイスとの通信を提供する。通信ユニット210は、物理通信リンクとワイヤレス通信リンク両方の使用を通じた通信を提供してもよい。物理通信リンクは、例えば、ワイヤ、ケーブル、ユニバーサル・シリアル・バス、または任意の他の物理的技術を利用して、データ処理システム200のための物理通信リンクを確立してもよい。ワイヤレス通信リンクは、例えば、短波、高周波、超高周波、マイクロ波、ワイヤレス・フィデリティ(Wi-Fi)、Bluetooth(R)技術、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM)、符号分割多元接続(CDMA)、第2世代(2G)、第3世代(3G)、第4世代(4G)、4Gロング・ターム・エボリューション(LTE)、LTEアドバンスト、第5世代(5G)、または任意の他のワイヤレス通信技術もしくは標準を利用して、データ処理システム200のためのワイヤレス通信リンクを確立してもよい。
【0036】
入出力ユニット212は、データ処理システム200に接続され得る他のデバイスとのデータの入出力を可能にする。例えば、入出力ユニット212は、キーパッド、キーボード、マウス、マイクロフォン、または他のいくつかの適切な入力デバイス、あるいはその組合せを通じたユーザ入力のための接続を提供してもよい。ディスプレイ214は、ユーザに情報を表示するためのメカニズムを提供し、例えば、ユーザ・インターフェースまたは入力データを通じてユーザがオン・スクリーン選択を行えるようにするためのタッチ・スクリーン機能を含み得る。
【0037】
オペレーティング・システム、アプリケーション、またはプログラム、あるいはその組合せに関する命令は、ストレージ・デバイス216に置かれてもよく、ストレージ・デバイス216は、通信ファブリック202を通じてプロセッサ・ユニット204と通信している。この例証的な例では、命令は、関数形式で永続ストレージ208上にある。これらの命令は、プロセッサ・ユニット204による実行のために、メモリ206にロードされてもよい。異なる実施形態のプロセスは、コンピュータ実装命令を使用して、プロセッサ・ユニット204によって実施されてもよく、コンピュータ実装命令は、メモリ206などのメモリに置かれてもよい。これらのプログラム命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット204のプロセッサによって読み込まれ、実行され得る。プログラム命令は、異なる実施形態では、メモリ206または永続ストレージ208などの、異なる物理コンピュータ可読ストレージ・デバイスに含まれてもよい。
【0038】
プログラム・コード238は、選択的に取外し可能なコンピュータ可読媒体240に関数形式で置かれ、プロセッサ・ユニット204による実行のために、データ処理システム200にロードされるか、転送されてもよい。プログラム・コード238およびコンピュータ可読媒体240は、コンピュータ・プログラム製品242を形成する。1つの例では、コンピュータ可読媒体240は、コンピュータ可読ストレージ媒体244またはコンピュータ可読信号媒体246でよい。
【0039】
これらの例証的な例では、コンピュータ可読ストレージ媒体244は、プログラム・コード238を伝搬または伝送させる媒体ではなく、プログラム・コード238を格納するために使用される物理的なまたは有形のストレージ・デバイスである。コンピュータ可読ストレージ媒体244は、例えば、永続ストレージ208の一部であるハード・ドライブなどのストレージ・デバイスに転送するための、永続ストレージ208の一部であるドライブまたは他のデバイスに挿入または配置された、光または磁気ディスクを含んでもよい。コンピュータ可読ストレージ媒体244はまた、データ処理システム200に接続されたハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの、永続ストレージの形をしていてもよい。
【0040】
代替として、プログラム・コード238は、コンピュータ可読信号媒体246を使用して、データ処理システム200に転送されてもよい。コンピュータ可読信号媒体246は、例えば、プログラム・コード238を収める伝搬データ信号でもよい。例えば、コンピュータ可読信号媒体246は、電磁気信号、光信号、または任意の他の適切なタイプの信号でよい。これらの信号は、ワイヤレス通信リンク、光ファイバ・ケーブル、同軸ケーブル、ワイヤ、または任意の他の適切なタイプの通信リンクなどの、通信リンクを介して伝送され得る。
【0041】
さらに、本明細書で使用されるように、「コンピュータ可読媒体240」は、単数形または複数形であることが可能である。例えば、プログラム・コード238は、単一のストレージ・デバイスまたはシステムの形でコンピュータ可読媒体240に置かれることが可能である。別の例では、プログラム・コード238は、複数のデータ処理システム内に分散されたコンピュータ可読媒体240に置かれることが可能である。言い換えれば、プログラム・コード238内のいくつかの命令は、1つのデータ処理システム内に置かれることが可能であるが、プログラム・コード238内の他の命令は、1つまたは複数の他のデータ処理システム内に置かれることが可能である。例えば、プログラム・コード238の一部は、サーバ・コンピュータのコンピュータ可読媒体240に置かれることが可能であるが、プログラム・コード238の別の部分は、クライアント・コンピュータのセット内にあるコンピュータ可読媒体240に置かれることが可能である。
【0042】
データ処理システム200のために示された異なる構成要素は、異なる実施形態が実装され得る様式に構造的限定を提供することを意図していない。いくつかの例証的な例では、構成要素の1つまたは複数は、別の構成要素に組み込まれるか、そうでなければ、別の構成要素の一部を形成してもよい。例えば、いくつかの例証的な例では、メモリ206またはその一部は、プロセッサ・ユニット204内に組み込まれてもよい。異なる例証的実施形態は、データ処理システム200のために示されたものの他のまたはその代わりの構成要素を含むデータ処理システム内に実装されることが可能である。図2に示された他の構成要素は、示された例証的な例から変化させることができる。異なる実施形態は、プログラム・コード238を実行することができる任意のハードウェア・デバイスまたはシステムを使用して、実装されることが可能である。
【0043】
別の例では、通信ファブリック202を実装するためにバス・システムが使用されてもよく、システム・バスまたは入出力バスなどの、1つまたは複数のバスで構成されてもよい。当然、バス・システムは、バス・システムに取り付けられた異なる構成要素またはデバイスの間のデータ転送を提供する任意の適切なタイプのアーキテクチャを使用して実装され得る。
【0044】
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で列挙される教示の実装形態は、クラウド・コンピューティング環境に限定されないことが理解されている。むしろ、例証的実施形態は、現在既知のまたは後に開発される他の任意のタイプのコンピューティング環境と併用して実装される余地がある。クラウド・コンピューティングは、最低限の管理努力またはサービス提供者との対話で迅速に提供および公開されることが可能な、例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービスなどの、構成可能なコンピューティング・リソースの共用プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの導入モデルを含み得る。
【0045】
特性は、例えば、オンデマンド・セルフ・サービス、ブロード・ネットワーク・アクセス、リソース・プーリング、迅速な伸縮性、およびメジャード・サービスを含み得る。オンデマンド・セルフ・サービスは、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を、クラウド利用者が、サービスの提供者との人間による対話を必要とせず必要に応じて自動的に、一方的に提供することができる。ブロード・ネットワーク・アクセスは、ネットワークを介して利用可能で、例えば、モバイル・フォン、ラップトップ、およびパーソナル・デジタル・アシスタントなどの、ヘテロジニアスなシンまたはシック・クライアント・プラットフォームによる使用を推進する標準メカニズムを通じてアクセスされる能力を提供する。リソース・プーリングは、マルチ・テナント・モデルを使用して複数の利用者をサーブするために、プロバイダのコンピューティング・リソースをプーリングすることを可能にし、異なる物理および仮想リソースが、需要に応じて動的に割り当てられ、再割り当てされる。利用者が一般的に、提供されるリソースの正確なロケーションについて制御権も知識もないが、例えば、国、州、またはデータ・センタなどの、抽象化のより高いレベルでロケーションを特定でき得るという点で、位置独立の意味がある。迅速な伸縮性は、素早くスケール・アウトするために場合によっては自動的に迅速かつ伸縮自在に提供され、素早くスケール・インするために迅速に公開されることが可能な能力を提供する。利用者には、提供するために利用可能な能力は、しばしば無制限のように見え、任意の量でいつでも購入することができる。メジャード・サービスは、例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウントなどの、サービスのタイプに適した抽象化のいくつかのレベルで計量能力を活用することによって、クラウド・システムがリソース使用を自動的に制御および最適化することを可能にする。リソース使用率は、監視、制御、およびレポートされることが可能であり、利用されるサービスの提供者と利用者双方に透明性をもたらす。
【0046】
サービス・モデルは、例えば、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、およびサービスとしてのインフラストラクチャ(IaaS)を含み得る。サービスとしてのソフトウェアは、クラウド・インフラストラクチャ上で動く提供者のアプリケーションを使用するために利用者に提供される能力である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)などの、シン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または、ことによると個々のアプリケーション能力を含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、限定的なユーザ固有のアプリケーション構成設定が考えうる例外である。サービスとしてのプラットフォームは、提供者によってサポートされるプログラミング言語およびツールを使用して作り出された、利用者が作り出したまたは獲得したアプリケーションを、クラウド・インフラストラクチャに導入するために利用者に提供される能力である。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、導入したアプリケーション、および場合によっては、アプリケーションをホストする環境構成に対する制御権を有している。サービスとしてのインフラストラクチャは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを利用者が導入し、動かすことができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースを提供するために利用者に提供される能力である。利用者は、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、オペレーティング・システム、ストレージ、導入されるアプリケーションに対する制御権、および場合によっては、例えば、ホスト・ファイアウォールなどのネットワーキング構成要素を選択する限定的な制御権を有する。
【0047】
導入モデルは、例えば、プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、およびハイブリッド・クラウドを含み得る。プライベート・クラウドは、単に組織のために運用されるクラウド・インフラストラクチャである。プライベート・クラウドは、組織またはサード・パーティによって管理され得、敷地内または敷地外に存在し得る。コミュニティ・クラウドは、いくつかの組織によって共有されるクラウド・インフラストラクチャであり、例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス考慮などの、共有される懸念を有する固有のコミュニティをサポートする。コミュニティ・クラウドは、組織またはサード・パーティによって管理され得、敷地内または敷地外に存在し得る。パブリック・クラウドは、一般大衆または大手業界団体に対して利用可能にされたクラウド・インフラストラクチャであり、クラウド・サービスを売る組織によって所有される。ハイブリッド・クラウドは、一意のエンティティのままの、例えば、プライベート、コミュニティ、およびパブリック・クラウドなどの、2つ以上のクラウドから成るクラウド・インフラストラクチャであるが、例えば、クラウド間のロード・バランシングのためのクラウド・バースティングなどの、データおよびアプリケーション・ポータビリティを可能にする標準的なまたは独自の技術でまとめられる。
【0048】
クラウド・コンピューティング環境は、無国籍、疎結合、モジュラリティ、および意味論的相互運用性に焦点を合わせたサービス指向のものである。クラウド・コンピューティングの中心には、相互接続ノードのネットワークを備えるインフラストラクチャがある。
【0049】
図3をここで参照すると、例証的実施形態が実装され得るクラウド・コンピューティング環境を示す図が描写されている。この例証的な例では、クラウド・コンピューティング環境300は、例えば、パーソナル・デジタル・アシスタントもしくはスマート・フォン320A、デスクトップ・コンピュータ320B、ラップトップ・コンピュータ320C、または自動車コンピュータ・システム320N、あるいはその組合せなどの、クラウド利用者によって使用されるローカル・コンピューティング・デバイスが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード310のセットを含む。クラウド・コンピューティング・ノード310は、例えば、図1のサーバ104およびサーバ106でよい。ローカル・コンピューティング・デバイス320A~320Nは、例えば、図1のホスト・コンピュータ110~114でよい。
【0050】
クラウド・コンピューティング・ノード310は互いに通信し得、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組合せなどの、1つまたは複数のネットワークに物理的または仮想的にグループ化され得る。これは、クラウド利用者がローカル・コンピューティング・デバイス320A~320Nなどのローカル・コンピューティング・デバイス上にリソースを維持する必要がない、サービスとしてのインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンピューティング環境300が提供することを可能にする。ローカル・コンピューティング・デバイス320A~320Nのタイプは単なる例証であることが意図され、クラウド・コンピューティング・ノード310およびクラウド・コンピューティング環境300は、例えば、ウェブ・ブラウザを使用して、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して、任意のタイプのコンピュータ化デバイスと通信できることが理解されている。
【0051】
図4をここで参照すると、例証的実施形態による抽象化モデル層を示す図が描写されている。この例証的な例で示された機能抽象化層のセットは、図3のクラウド・コンピューティング環境300などの、クラウド・コンピューティング環境によって提供され得る。図4に示された構成要素、層、および機能は単なる例証であることが意図され、本発明の実施形態は、これらに限定されないことを予め理解されたい。描写されているように、以下の層および対応する機能が提供される。
【0052】
クラウド・コンピューティング環境の抽象化層400は、ハードウェアおよびソフトウェア層402、仮想化層404、管理層406、ならびにワークロード層408を含む。ハードウェアおよびソフトウェア層402は、クラウド・コンピューティング環境のハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素は、例えば、メインフレーム410、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ412、サーバ414、ブレード・サーバ416、ストレージ・デバイス418、ならびにネットワークおよびネットワーキング構成要素420を含み得る。いくつかの例証的実施形態では、ソフトウェア構成要素は、例えば、ネットワーク・アプリケーション・サーバ・ソフトウェア422およびデータベース・ソフトウェア424を含み得る。
【0053】
仮想化層404は、仮想サーバ426、仮想ストレージ428、仮想プライベート・ネットワークを含む仮想ネットワーク430、仮想アプリケーションおよびオペレーティング・システム432、ならびに仮想クライアント434といった、仮想エンティティの例が提供され得る抽象化層を提供する。
【0054】
1つの例では、管理層406は、下記で説明される機能を提供し得る。リソース提供436は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。計量および価格設定438は、リソースがクラウド・コンピューティング環境内で利用されるときのコスト追跡、および、これらのリソースの利用に対する請求書作成またはインボイス作成を行う。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド利用者およびタスクの検証、ならびに、データおよび他のリソースの保護を行う。ユーザ・ポータル440は、利用者およびシステム・アドミニストレータに、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理442は、要求されるサービス・レベルを満たすように、クラウド・コンピューティング・リソースの配分および管理を行う。サービス・レベル契約(SLA)プランニングおよびフルフィルメント444は、SLAに応じて将来の要件が予想されるクラウド・コンピューティング・リソースの事前配置および調達を行う。
【0055】
ワークロード層408は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。実例のワークロードおよび機能は、ワークロード層408によって提供され得、マッピングおよびナビゲーション446、ソフトウェア開発およびライフサイクル管理448、仮想クラスルーム教育配信450、データ分析処理452、トランザクション処理454、ならびに攻撃面低減管理456を含み得る。
【0056】
例証的実施形態は、クラスタまたはクラウド環境内の各ホスト・コンピュータに対応する利用可能なシステム・リソースの数を低減させることによって、ネットワーク・リソースにアクセスする攻撃者の能力を減少させる。例証的実施形態は、各ホスト・コンピュータ上のアプリケーション・システム・リソース利用状態フットプリントを測定することによって、各ホスト・コンピュータ上の全般的な攻撃面を減少させる。例えば、ホスト・コンピュータのクラスタ全体の各アプリケーションのために、例証的実施形態は、ホスト・コンピュータのクラスタ内のそれぞれの各アプリケーションのホスト・コンピュータおよびネットワーク・リソース利用状態フットプリントを測定する。次に、例証的実施形態は、クラスタ内の同じホスト・コンピュータ上で、同様のシステム・リソース・フットプリントを有するこれらのアプリケーションの識別、グループ化、およびコロケートを行う。言い換えれば、クラスタ内の各ホスト・コンピュータは、同様のシステム・リソース利用状態基準値を有するアプリケーションの異なるセットをホストする。クラスタ内の全てのホスト・コンピュータ上で、例証的実施形態は、クラスタ全体の攻撃面低減を実現するために、全ての未使用リソースを削除または除去する。システム・リソースは、例えば、共有ネットワーク・サービス、共有ネットワーク・トラフィック宛先(例えば、インターネット・プロトコル・アドレス、ポート番号、および同様のもの)、共用ライブラリ、共有システム・スタック、共有カーネル・システム・コール、共有カーネル・サブシステム、共有ネットワーク・リソース、高いアクセス権を伴う共有された機密のユーザ・アカウントまたはグループ、高いアクセス権を伴う共有された機密のアプリケーション、および同様のものを含み得る。
【0057】
アプリケーションのコロケーションにより、例証的実施形態は、同じまたは同様のシステム・リソース利用状態基準値(すなわち、フットプリント)を有するこれらのアプリケーションだけを有するホスト・コンピュータをロードすることができ、したがって、例証的実施形態は、ホスト・コンピュータ上の未使用のシステム・リソースを除去し、このホスト・コンピュータの攻撃面を減少させることができる。例証的実施形態は、クラスタまたはクラウド環境全体における全てのホスト・コンピュータにわたるアプリケーション・システム・リソース利用状態基準値パターン、特性、および行動を測定して、取得された攻撃面基準値に基づいて、クラスタまたはクラウド環境の全般的なセキュリティを改善することになるアプリケーション・コロケーション判定を行う。例証的実施形態は、システム・リソース利用状態基準値の定義済み範囲を利用して、類似性を判定し得る。言い換えれば、例証的実施形態は、同じまたは同様のシステム・リソース利用状態基準値(すなわち、リソース利用状態基準値類似性の定義済み範囲内のホスト・コンピュータ・リソースおよびネットワーク・リソースの同じまたは同様の利用)を有するアプリケーションをコロケートさせ、攻撃面類似性に基づいて、ホスト・コンピュータに対応する未使用のシステム・リソースを除去することによって、ホスト・コンピュータ攻撃面エリア低減を実施する。したがって、例証的実施形態は、異なるホスト・コンピュータ上でのアプリケーションのスケジューリングおよび配置を利用して、クラスタまたはクラウド環境内の各ホスト・コンピュータ上の攻撃面の量を減少させる。
【0058】
結果として、例証的実施形態は、アプリケーション攻撃面測定に基づくアプリケーション・コロケーションを介して、クラスタまたはクラウド環境の全般的なセキュリティおよび信頼を向上させ、これが攻撃成功の可能性を低減させる。さらに、例証的実施形態は、悪意のある行為者によってアクセスされることによるクラスタまたはクラウド環境の弱さを減少させる。
【0059】
したがって、例証的実施形態は、環境全体のセキュリティをもたらすことに関する技術的問題を克服する1つまたは複数の技術的解決策を提供する(すなわち、ホスト・コンピュータ上のクラスタ全体またはクラウド全体の攻撃面を低減させる)。結果として、これらの1つまたは複数の技術的解決策は、ネットワークおよびシステム・セキュリティの分野における技術的効果および実用的応用を提供する。
【0060】
図5をここで参照すると、例証的実施形態によるシステム・アーキテクチャ・システムの例を示す図が描写される。システム・アーキテクチャ500は、図1のデータ処理環境100などのデータ処理環境、または、図3のクラウド・コンピューティング環境300などのクラウド・コンピューティング環境において実装され得る。システム・アーキテクチャ500は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのセットを同じホスト・コンピュータ上に選択的にコロケートさせることによって、ホスト・コンピュータ上の攻撃面を低減させ、ホスト・コンピュータから未使用のシステム・リソースを除去するための、ハードウェアおよびソフトウェア構成要素のシステムである。
【0061】
この例では、システム・アーキテクチャ500は、サーバ502、ホスト・コンピュータ504、ホスト・コンピュータ506、ホスト・コンピュータ508、およびホスト・コンピュータ510を含む。それでも、システム・アーキテクチャ500は、単なる例であることを意図し、例証的実施形態に対する限定を意図しないことに留意されたい。言い換えれば、システム・アーキテクチャ500は、図示していない任意の数のサーバ、ホスト・コンピュータ、ならびに他のデバイスおよび構成要素を含み得る。
【0062】
サーバ502は、例えば、図1のサーバ104、図2のデータ処理システム200、または図3のクラウド・コンピューティング・ノード310におけるクラウド・コンピューティング・ノードでよい。ホスト・コンピュータ504、506、508、および510は、例えば、図1のホスト・コンピュータ110~114、または図3のローカル・コンピューティング・デバイス320A~320Nでよい。
【0063】
この例では、サーバ502は、オペレーティング・システム・カーネル514上で動く攻撃面低減マネージャ512を含む。ホスト・コンピュータ504は、オペレーティング・システム・カーネル518上で動くエージェント516を含む。ホスト・コンピュータ506は、オペレーティング・システム・カーネル522上で動くエージェント520を含む。ホスト・コンピュータ508は、オペレーティング・システム・カーネル526上で動くエージェント524を含む。ホスト・コンピュータ510は、オペレーティング・システム・カーネル530上で動くエージェント528を含む。
【0064】
サーバ502は、攻撃面低減マネージャ512を利用して、ホスト・コンピュータ504、506、508、および510上に置かれたエージェント516、520、524、および528から、ホスト・コンピュータおよびアプリケーション基準値をそれぞれ取得する。攻撃面低減マネージャ512は、エージェント516、520、524、および528から取得されたホスト・コンピュータおよびアプリケーション基準値情報を利用して、ホスト・コンピュータ504、506、508、および510のためのアプリケーション・コロケーションおよびホスト・コンピュータ攻撃面低減(すなわち、未使用のシステム・リソース除去)判定を行う。それぞれのホスト・コンピュータにおけるエージェントは、ホスト・コンピュータおよびそのホスト・コンピュータのアプリケーション基準値の監視および収集を担う。それでも、それぞれのエージェントはまた、攻撃面低減マネージャ512から受け取られた命令に基づいて、その対応するホスト・コンピュータ上のアプリケーション移行および攻撃面低減をハンドリングし得ることに留意されたい。
【0065】
攻撃面低減マネージャ512は、アプリケーション・コロケーションを実施して、ホスト・コンピュータ504、506、508、および510のそれぞれの攻撃面を減少させる。コロケーションは、1つの特定のホスト・コンピュータ内にアプリケーションの特定のセットを一緒に配置または配列する行為である。ホスト・コンピュータに対応する攻撃面は、不正ユーザ(すなわち「攻撃者」)が、例えば、ホスト・コンピュータ上にあるか、ホスト・コンピュータによって制御されるアプリケーション、データ、および同様のものなどのリソースへのアクセス権を得ようとすることができる異なるポイントの合計(例えば「攻撃ベクトル」)である。攻撃ベクトルの例は、例えば、ユーザ入力フィールド、プロトコル、アプリケーション・プログラミング・インターフェース、およびサービスを含み得る。
【0066】
攻撃面低減マネージャ512は、例えば、以下などの、グリーディ・コロケーション・アルゴリズムを利用し得る。
Aは、クラスタまたはクラウド環境内の複数のホスト・コンピュータHに割り当てることになる複数のアプリケーションである、
複数のホスト・コンピュータHにおける各ホスト・コンピュータhについて、
l=ホスト・コンピュータhにおける利用可能なアプリケーション・スロットの数、
C=長さlの複数のアプリケーションAにおけるアプリケーションの組合せのセット、
アプリケーションの組合せCのセットにおけるアプリケーションの各セットについて、
アプリケーションのセット(c)によって使用されるリソースのセットR⊆ホスト・コンピュータ(h)のリソースの場合、未使用リソースのセットS=リソース(h)-Rであり、
ホスト・コンピュータhにアプリケーションのセットcを割り当て、ここで、ホスト・コンピュータhの未使用リソースのセットSは最大である。
グローバルに最大化する、
複数のホスト・コンピュータHの全ての並べ替えに対して上記の計算を実施する、
アプリケーション・コロケーション割当てを選択し、ここで、複数のホスト・コンピュータHにおける未使用リソースの全てのセットSの合計は最大である。
【0067】
グローバル最大化は、クラスタまたはクラウド環境内の全てのホスト・コンピュータにわたる未使用リソースの低減の最大化を注視している。したがって、このグローバル最大化アルゴリズムは、例証的実施形態がどのように、全ての可能なアプリケーションとホスト・コンピュータとの組合せを識別および分析して、グローバルに最適になる1つのアプリケーション・コロケーション構成を見つけることができるかを示す。
【0068】
新しいクラスタまたはクラウド環境(すなわち、ホスト・コンピュータ504、506、508、および510)のブート・ストラップ中、攻撃面低減マネージャ512は、ホスト・コンピュータ504、506、508、および510にアプリケーションを導入する。次に、攻撃面低減マネージャ512は、ホスト・コンピュータ504、506、508、および510で動くそれぞれの各アプリケーションのシステム・リソース利用状態フットプリントを取得するために、アプリケーションをプロファイリングする。次に、攻撃面低減マネージャ512は、同様のシステム・リソース利用状態フットプリントを有する、新しいクラスタまたはクラウド環境で動くアプリケーションの各セットを識別およびグループ化する。その後、攻撃面低減マネージャ512は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのセットを、例えば、ホスト・コンピュータ504などの、同じホスト・コンピュータ上にコロケートさせる。同様に、攻撃面低減マネージャ512は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの他のセットを、例えば、ホスト・コンピュータ506、508、および510などの、他のホスト・コンピュータ上にコロケートさせる。アプリケーション移行の例は、攻撃面低減マネージャ512が、アプリケーション、仮想マシン、コンテナ、または同様のものを移行するための既存の技術を利用することを含み得る。
【0069】
次に、攻撃面低減マネージャ512は、それぞれの各ホスト・コンピュータ上の、例えば、共用ライブラリおよびカーネル・システム・コールなどの、未使用のシステム・リソースの数を減少させることによって、ホスト・コンピュータ504、506、508、および510のそれぞれに対応する攻撃面を低減させる。ホスト・コンピュータ攻撃面低減の他の例は、攻撃面低減マネージャ512が、使用中でないユーザ・レベル・ライブラリを除去することと、攻撃面低減マネージャ512が、新しい低減済みの攻撃面オペレーティング・システムまたはオペレーティング・システム・カーネルをダウンロードし、オペレーティング・システムもしくはオペレーティング・システム・カーネルの現在のバージョンを新しいバージョンと交換するためにホスト・コンピュータのリブートを開始すること、または、透明なオペレーティング・システムもしくはオペレーティング・システム・カーネル更新を実施することと、攻撃面低減マネージャ512が、ネットワーク・サービスまたは活動を特定のインターネット・プロトコル・アドレスおよびポート番号に制約するために、ファイアウォール・ルールを更新することと、などを含み得る。
【0070】
クラスタまたはクラウド環境の実行時間中、攻撃面低減マネージャ512は、最初に、新しいアプリケーションをサーバ502内に配置する。次に、攻撃面低減マネージャ512は、新しいアプリケーションのシステム・リソース利用状態フットプリントを取得するために、新しいアプリケーションをプロファイリングする。さらに、攻撃面低減マネージャ512は、ホスト・コンピュータ504、506、508、および510の全てで動くアプリケーションのシステム・リソース利用状態パターン、特性、または行動を取得する。さらに、攻撃面低減マネージャ512は、新しいアプリケーションのシステム・リソース利用状態パターンに一致する、選択されたホスト・コンピュータ上で動くアプリケーションの取得されたシステム・リソース利用状態パターンに基づく新しいアプリケーションを配置するために、最もマッチするホスト・コンピュータ(例えば、ホスト・コンピュータ506)を選択する。次に、攻撃面低減マネージャ512は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションを有する選択されたホスト・コンピュータに、新しいアプリケーションを配置する。
【0071】
図6をここで参照すると、例証的実施形態によるアプリケーション・コロケーションおよび攻撃面低減プロセスの例を示す図が描写されている。アプリケーション・コロケーションおよび攻撃面低減プロセス600は、システム・アーキテクチャ500内に実装され、図5の攻撃面低減マネージャ512によって制御され得る。
【0072】
アプリケーション・コロケーションおよび攻撃面低減プロセス600は、事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602、ならびに事後アプリケーション・コロケーションおよび攻撃面低減フェーズ604を含む。この例では、事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602、ならびに事後アプリケーション・コロケーションおよび攻撃面低減フェーズ604は、ホスト・コンピュータA606およびホスト・コンピュータB608を含む。それでも、アプリケーション・コロケーションおよび攻撃面低減プロセス600は、単なる一例であることが意図され、例証的実施形態に対する限定を意図するものではないことに留意されたい。言い換えれば、アプリケーション・コロケーションおよび攻撃面低減プロセス600は、任意の数のホスト・コンピュータを含み得る。
【0073】
事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602では、ホスト・コンピュータA606およびホスト・コンピュータB608は、事前アプリケーション・コロケーションおよび攻撃面低減状態にある。例えば、ホスト・コンピュータA606は、アプリケーション1 610およびアプリケーション2 612を含む。アプリケーション1 610は、ライブラリ1 614およびライブラリ2 616を利用する。さらに、アプリケーション1 610は、カーネル・システム・コールA~Kのうちの、カーネル・システム・コールA618、カーネル・システム・コールB620、およびカーネル・システム・コールC622を利用する。アプリケーション2 612は、ライブラリ3 624およびライブラリ4 626を利用する。アプリケーション2 612はまた、カーネル・システム・コールA~Kのうちの、カーネル・システム・コールI628、カーネル・システム・コールJ630、およびカーネル・システム・コールK632を利用する。同様に、ホスト・コンピュータB608は、アプリケーション3 634およびアプリケーション4 636を含む。アプリケーション3 634は、ライブラリ2 616およびライブラリ5 640を利用する。さらに、アプリケーション3 634は、カーネル・システム・コールA~Kのうちの、カーネル・システム・コールB620、カーネル・システム・コールC622、およびカーネル・システム・コールD646を利用する。アプリケーション4 636は、ライブラリ4 626およびライブラリ6 650を利用する。アプリケーション4 636はまた、カーネル・システム・コールA~Kのうちの、カーネル・システム・コールH652、カーネル・システム・コールI628、およびカーネル・システム・コールJ630を利用する。
【0074】
事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602では、アプリケーション1 610およびアプリケーション3 634は、同様のシステム・リソース利用状態を有することに留意されたい。例えば、アプリケーション1 610とアプリケーション3 634両方は、カーネル・システム・コールB620およびカーネル・システム・コールC622と共に、ライブラリ2 616を利用する。同様に、アプリケーション2 612とアプリケーション4 636は、同様のシステム・リソース利用状態を有する。例えば、アプリケーション2 612とアプリケーション4 636両方は、カーネル・システム・コールI628およびカーネル・システム・コールJ630と共に、ライブラリ4 626を利用する。
【0075】
654において、攻撃面低減マネージャは、アプリケーションをコロケートさせ、ホスト・コンピュータA606およびホスト・コンピュータB608上の攻撃面を低減させる。結果として、事後アプリケーション・コロケーションおよび攻撃面低減フェーズ604では、同様のアプリケーション・システム・リソース利用状態パターンに基づいて、ホスト・コンピュータA606は、アプリケーション1 610およびアプリケーション3 634を含み、ホスト・コンピュータB608は、アプリケーション2 612およびアプリケーション4 636を含む。例えば、アプリケーション1 610は、事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602と同じ、ホスト・コンピュータA606においてライブラリ1 614およびライブラリ2 616を利用し続けるが、今、アプリケーション3 634は、ライブラリ2 616をアプリケーション1 610と共有し、攻撃面低減マネージャが、アプリケーション3 634と共にホスト・コンピュータB608からホスト・コンピュータA606に移行した、ライブラリ5 640を利用する。また、攻撃面低減マネージャは、ホスト・コンピュータA606上の攻撃面を低減させるために、ホスト・コンピュータA606からライブラリ3 624およびライブラリ4 626(すなわち、未使用のシステム・リソース)を除去し、ライブラリ3 624およびライブラリ4 626をホスト・コンピュータB608に移行したことに留意されたい。さらに、アプリケーション1 610は、事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602と同じ、カーネル・システム・コールA618、カーネル・システム・コールB620、およびカーネル・システム・コールC622を利用し続けるが、今、アプリケーション3 634は、カーネル・システム・コールB620およびカーネル・システム・コールC622をアプリケーション1 610と共有し、カーネル・システム・コールD646も利用する。さらに、攻撃面低減マネージャは、ホスト・コンピュータA606上の攻撃面をさらに低減させるために、カーネル・システム・コールE~K(すなわち、未使用のシステム・リソース)を除去したことに留意されたい。
【0076】
また、事後アプリケーション・コロケーションおよび攻撃面低減フェーズ604では、アプリケーション2 612は、攻撃面低減マネージャが、アプリケーション2 612と共にホスト・コンピュータA606からホスト・コンピュータB608に移行したライブラリ3 624およびライブラリ4 626を利用し続け、今、アプリケーション4 636は、ライブラリ4 626をアプリケーション2 612と共有し、ライブラリ6 650を利用する。また、攻撃面低減マネージャは、ホスト・コンピュータB608上の攻撃面を低減させるために、ライブラリ2 616およびライブラリ5 640(すなわち、未使用のシステム・リソース)をホスト・コンピュータB608から除去し、ライブラリ5 640をホスト・コンピュータA606に移行したことに留意されたい。さらに、アプリケーション4 636は、事前アプリケーション・コロケーションおよび攻撃面低減フェーズ602と同じ、カーネル・システム・コールH652、カーネル・システム・コールI628、およびカーネル・システム・コールJ630を利用し続けるが、今、アプリケーション2 612は、カーネル・システム・コールI628およびカーネル・システム・コールJ630をアプリケーション4 636と共有し、カーネル・システム・コールG656も利用する。さらに、攻撃面低減マネージャは、ホスト・コンピュータB608上の攻撃面をさらに低減させるために、カーネル・システム・コールA~FおよびK(すなわち、未使用のシステム・リソース)を除去したことに留意されたい。
【0077】
図7をここで参照すると、例証的実施形態による異なるアプリケーション導入モデルにおける共有攻撃面リソースの例を示す図が描写されている。この例では、異なるアプリケーション導入モデルにおける共有攻撃面リソース700は、ホスト・コンピュータ702、ホスト・コンピュータ704、およびホスト・コンピュータ706を含む。それでも、異なるアプリケーション導入モデルにおける共有攻撃面リソース700は、任意のタイプのアプリケーション導入モデルを有する任意の数のホスト・コンピュータを含み得ることに留意されたい。
【0078】
ホスト・コンピュータ702は、ハイパーバイザ710上で動く仮想マシン708を含む。ハイパーバイザ710は、このモデルにおける共有攻撃面リソースである。例えば、図5の攻撃面低減マネージャ512などの、攻撃面低減マネージャは、ハイパーバイザ710の攻撃面を低減させるために、ハイパーバイザ710を再コンパイルし得る。
【0079】
ホスト・コンピュータ704は、アプリケーション712およびアプリケーション714を含み、これらは、オペレーティング・システム・カーネル716上で動き、共用ライブラリ718およびランタイム・サポート720を利用する。オペレーティング・システム・カーネル716、共用ライブラリ718、およびランタイム・サポート720は、このモデルにおける共有攻撃面リソースである。攻撃面低減マネージャは、オペレーティング・システム・カーネル716の攻撃面を減少させるオペレーティング・システム・カーネル716への更新をダウンロードおよびインストールし得る。さらに、攻撃面低減マネージャは、ホスト・コンピュータ704における攻撃面をさらに低減させるために、共用ライブラリ718における未使用のライブラリ、および、ランタイム・サポート720における、例えば、未使用のカーネル・システム・コールなどの未使用のランタイム・サポートを除去してもよい。
【0080】
ホスト・コンピュータ706は、コンテナ722を含み、コンテナ722は、オペレーティング・システム・カーネル724上で動き、ランタイム・サポート726を利用する。オペレーティング・システム・カーネル724およびランタイム・サポート726は、このモデルにおける共有攻撃面リソースである。攻撃面低減マネージャは、減少した攻撃面を有するオペレーティング・システム・カーネル724の新しいバージョンをリブートおよびインストールし得る。さらに、攻撃面低減マネージャは、ホスト・コンピュータ704における攻撃面をさらに低減させるために、ランタイム・サポート726における未使用のランタイム・サポートを除去してもよい。
【0081】
ネットワーク・サービス728も、ホスト・コンピュータ702、ホスト・コンピュータ704、およびホスト・コンピュータ706に対応する共有攻撃面リソースである。攻撃面低減マネージャは、ネットワーク・トラフィックを特定のインターネット・プロトコル・アドレスおよびポート番号だけに制約するために、ファイアウォール・ルールを更新し得る。攻撃面低減マネージャはまた、攻撃面を低減させるために、未使用のインターネット・プロトコル・アドレスおよびポート番号を除去してもよい。
【0082】
図8をここで参照すると、例証的実施形態による、システム・ブート・ストラップ中のアプリケーション配置のためのプロセスを示すフローチャートが示されている。図8に示されたプロセスは、例えば、図1のサーバ104、もしくは図2のデータ処理システム200、図3のクラウド・コンピューティング環境300のクラウド・コンピューティング・ノード310におけるクラウド・コンピューティング・ノード、または図5のサーバ502などの、サーバ・コンピュータにおいて実装され得る。
【0083】
プロセスは、サーバ・コンピュータが、データ処理環境に含まれる複数のホスト・コンピュータ上でのブート・ストラップ動作を実施するための入力を受け取ったときに始まる(ステップ802)。データ処理環境は、例えば、複数のホスト・コンピュータで構成されたホスト・コンピュータのクラスタまたはクラウド環境でよい。ステップ802においてブート・ストラップ動作を実施するための入力を受け取ることに応答して、サーバは、複数のホスト・コンピュータ上でブート・ストラップ動作を実施する(ステップ804)。
【0084】
サーバは、複数のホスト・コンピュータ上にアプリケーションを配置する(ステップ806)。サーバは、それぞれの各アプリケーションのシステム・リソース利用状態フットプリントを取得するために、複数のホスト・コンピュータ上で動くアプリケーションをプロファイリングする(ステップ808)。サーバは、それぞれの各ホスト・コンピュータ上に置かれたソフトウェア・エージェントからアプリケーション・プロファイル情報を取得してもよい。システム・リソース利用状態フットプリントは、ホスト・コンピュータ上で動く特定のアプリケーションによるシステム・リソース使用率のパターン(すなわち、タイプおよび量)を識別する。
【0085】
サーバは、アプリケーションのプロファイリングに基づいて、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの複数の異なるセットを識別する(ステップ810)。さらに、サーバは、複数のホスト・コンピュータにおけるそれぞれの各ホスト・コンピュータに対応するシステム・リソースのリストを取得する(ステップ812)。サーバはまた、ソフトウェア・エージェントからそれぞれの各ホスト・コンピュータのシステム・リソースのリストを取得してもよい。
【0086】
サーバは、動いている常駐アプリケーションによって利用されている、それぞれの各ホスト・コンピュータに対応するシステム・リソースのリスト内の使用中のシステム・リソースのセットを識別する(ステップ814)。さらに、サーバは、使用中のシステム・リソースのセットを、それぞれの各ホスト・コンピュータに対応するシステム・リソースのリストから差し引くことによって、それぞれの各ホスト・コンピュータに対応する未使用のシステム・リソースのセットを判定する(ステップ816)。
【0087】
サーバは、同様のシステム・リソース利用状態フットプリントを有するアプリケーションの特定のセットを特定のホスト・コンピュータに配置すること、およびアプリケーションのこの特定のセットを動かすこの特定のホスト・コンピュータに対応する未使用のシステム・リソースの判定されたセットを除去することに基づいて、それぞれの各ホスト・コンピュータにおける攻撃面低減の最大量を判定する(ステップ818)。サーバは、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、攻撃面低減の判定された最大量を有する指定のホスト・コンピュータに割り当てる(ステップ820)。
【0088】
サーバは、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのそれぞれの各セットを、データ処理環境内のその割り当てられたホスト・コンピュータに配置する(ステップ822)。さらに、サーバは、データ処理環境全体の攻撃面低減を実現するために、アプリケーションが割り当てられたホスト・コンピュータに対応する未使用のシステム・リソースの判定されたセットを除去する(ステップ824)。その後、プロセスは、終了する。
【0089】
図9をここで参照すると、例証的実施形態によるシステム実行時間中のアプリケーション配置のためのプロセスを示すフローチャートが示されている。図9に示されたプロセスは、例えば、図1のサーバ104、もしくは図2のデータ処理システム200、図3のクラウド・コンピューティング環境300のクラウド・コンピューティング・ノード310におけるクラウド・コンピューティング・ノード、または図5のサーバ502などの、サーバ・コンピュータにおいて実装され得る。
【0090】
プロセスは、サーバ・コンピュータが、複数のホスト・コンピュータを含むデータ処理環境内に新しいアプリケーションを導入するための入力を受け取ったときに始まる(ステップ902)。ステップ902において新しいアプリケーションを導入するための入力を受け取ることに応答して、サーバは、サーバに新しいアプリケーションを最初に配置する(ステップ904)。さらに、サーバは、新しいアプリケーションのシステム・リソース利用状態フットプリントを判定するために、新しいアプリケーションをプロファイリングする(ステップ906)。
【0091】
さらに、サーバは、データ処理環境における各ホスト・コンピュータのシステム・リソース可用性を取得する(ステップ908)。さらに、サーバは、新しいアプリケーションのシステム・リソース利用状態フットプリントに基づいて、新しいアプリケーションを動かすのに十分利用可能なシステム・リソースを有するいずれかのホスト・コンピュータを識別する(ステップ910)。その後、サーバは、いずれかのホスト・コンピュータが、新しいアプリケーションを動かすのに十分利用可能なシステム・リソースを有しているかどうかについての判定を行う(ステップ912)。
【0092】
複数のホスト・コンピュータにおけるホスト・コンピュータのセットが、新しいアプリケーションを動かすのに十分利用可能なシステム・リソースを有するとサーバが判定した場合、ステップ912のはいの出力の場合、サーバは、新しいアプリケーションと同様のリソース利用状態フットプリントを有する1つまたは複数の動いている常駐アプリケーションを有するセット内のホスト・コンピュータに新しいアプリケーションを割り当てる(ステップ914)。サーバは、新しいアプリケーションと同様のリソース利用状態フットプリントを有する1つまたは複数の動いている常駐アプリケーションを有するホスト・コンピュータに新しいアプリケーションを配置する(ステップ916)。その後、プロセスは、終了する。
【0093】
ステップ912に再び戻ると、複数のホスト・コンピュータにおけるホスト・コンピュータが、新しいアプリケーションを動かすのに十分利用可能なシステム・リソースを有していないとサーバが判定した場合、ステップ912のいいえの出力の場合、サーバは、最小数の動いている常駐アプリケーションを有する複数のホスト・コンピュータにおけるホスト・コンピュータを選択する(ステップ918)。サーバは、一時的に、選択されたホスト・コンピュータからサーバに動いている常駐アプリケーションの全てを移行する(ステップ920)。サーバは、リセット後のホスト・コンピュータを形成するために、選択されたホスト・コンピュータを初期のデフォルト状態にリセットする(ステップ922)。
【0094】
その後、サーバは、サーバからリセット後のホスト・コンピュータに、選択されたホスト・コンピュータから以前に移行された全てのアプリケーションを移行して戻す(ステップ924)。次に、サーバは、リセット後のホスト・コンピュータに新しいアプリケーションを配置する(ステップ926)。さらに、サーバは、リセット後のホスト・コンピュータ上の攻撃面を減少させるために、リセット後のホスト・コンピュータ上で動いている常駐アプリケーションによって利用されていないシステム・リソースを除去する(ステップ928)。その後、プロセスは、終了する。
【0095】
図10をここで参照すると、例証的実施形態による、実行時間中のホスト・コンピュータ攻撃面低減のためのプロセスを示すフローチャートが示されている。図10に示されたプロセスは、例えば、図1のサーバ104、もしくは図2のデータ処理システム200、図3のクラウド・コンピューティング環境300のクラウド・コンピューティング・ノード310におけるクラウド・コンピューティング・ノード、または図5のサーバ502などの、サーバ・コンピュータにおいて実装され得る。
【0096】
プロセスは、サーバが、定義済みの時間間隔が期限切れになったかどうかについて判定を行ったときに始まる(ステップ1002)。定義済みの時間間隔が期限切れになっていないとサーバが判定した場合、ステップ1002のいいえの出力の場合、プロセスはステップ1002に戻り、ここで、サーバは、定義済みの時間間隔が期限切れになるのを待ち続ける。定義済みの時間間隔が期限切れになったとサーバが判定した場合、ステップ1002のはいの出力の場合、サーバは、サーバによって監視されるデータ処理環境に含まれる複数のホスト・コンピュータにおける各ホスト・コンピュータに対応する全ての利用可能なシステム・リソースのリストを取得する(ステップ1004)。さらに、サーバは、複数のホスト・コンピュータにおける各ホスト・コンピュータ上で動いている常駐アプリケーションのシステム・リソース利用状態を取得する(ステップ1006)。サーバは、それぞれの各ホスト・コンピュータ内に置かれたソフトウェア・エージェントから、利用可能なシステム・リソースのリスト、およびシステム・リソース利用状態情報を取得してもよい。
【0097】
サーバは、それぞれの各ホスト・コンピュータに対応する利用可能なシステム・リソースのリスト、およびそれぞれの各ホスト・コンピュータ上で動く常駐アプリケーションのシステム・リソース利用状態に基づいて、未使用のシステム・リソースがいずれかのホスト・システム上に存在するかどうかについての判定を行う(ステップ1008)。それぞれの各ホスト・コンピュータに対応する利用可能なシステム・リソースのリスト、およびそれぞれの各ホスト・コンピュータ上で動く常駐アプリケーションのシステム・リソース利用状態に基づいて、未使用のシステム・リソースがどのホスト・システム上にも存在しないとサーバが判定した場合、ステップ1008のいいえの出力の場合、プロセスはステップ1002に戻り、ここで、サーバは、次の時間間隔が期限切れになるのを待つ。それぞれの各ホスト・コンピュータに対応する利用可能なシステム・リソースのリスト、およびそれぞれの各ホスト・コンピュータ上で動く常駐アプリケーションのシステム・リソース利用状態に基づいて、未使用のシステム・リソースが1つまたは複数のホスト・システム上に存在するとサーバが判定した場合、ステップ1008のはいの出力の場合、サーバは、データ処理環境内のこれらのホスト・システムの攻撃面を減少させるために、1つまたは複数のホスト・システム上に存在する未使用のシステム・リソースを除去する(ステップ1010)。その後、プロセスは、ステップ1002に戻り、ここで、サーバは、次の時間間隔が期限切れになるのを待つ。
【0098】
図11をここで参照すると、例証的実施形態による、ホスト・コンピュータ上にアプリケーションを選択的にコロケートさせることによって攻撃面を低減させるためのプロセスを示すフローチャートが示されている。図11に示されたプロセスは、例えば、図1のサーバ104、もしくは図2のデータ処理システム200、図3のクラウド・コンピューティング環境300のクラウド・コンピューティング・ノード310におけるクラウド・コンピューティング・ノード、または図5のサーバ502などの、サーバ・コンピュータにおいて実装され得る。
【0099】
プロセスは、サーバ・コンピュータが、複数のホスト・コンピュータを含むデータ処理環境内の攻撃面を低減させるための入力を受け取ったときに始まる(ステップ1102)。この例では、データ処理環境は、クラウド環境である。ステップ1102においてデータ処理環境内の攻撃面を低減させるための入力を受け取ることに応答して、サーバは、複数のホスト・コンピュータで動く各クラウド・アプリケーションによって利用されるシステム・リソースを測定する(ステップ1104)。サーバは、複数のホスト・コンピュータで動くどのクラウド・アプリケーションが同様のシステム・リソースを利用するかを判定する(ステップ1106)。
【0100】
サーバは、同様のシステム・リソースを利用するクラウド・アプリケーションを、それぞれの割り当てられたホスト・コンピュータ上にコロケートさせる(ステップ1108)。サーバは、複数のホスト・コンピュータにおけるホスト・コンピュータのセット上で動く常駐アプリケーションによって使用されていない全ての未使用のシステム・リソースを判定する(ステップ1110)。サーバは、データ処理環境内の攻撃面を低減させるために、ホスト・コンピュータのセット内の各ホスト・コンピュータに対応する未使用のシステム・リソース全てを除去する(ステップ1112)。その後、プロセスは、終了する。
【0101】
このように、本発明の例証的実施形態は、同様のシステム・リソース利用状態フットプリントを有するアプリケーションのセットを同じホスト・コンピュータ上に選択的にコロケートさせ、ホスト・コンピュータから未使用のシステム・リソースを除去することによって、ホスト・コンピュータ上の攻撃面を低減させるためのコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。本発明の様々な実施形態の説明を例証のために提示してきたが、網羅的であること、または、開示された実施形態に限定されることを意図するものではない。多くの変更形態および変形形態が、説明される実施形態の範囲から逸脱することなく、当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実用的応用、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書で開示された実施形態を当業者が理解できるように、選ばれた。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11