(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-17
(54)【発明の名称】コンテナベースのワークロードに対する脅威の緩和
(51)【国際特許分類】
G06F 21/55 20130101AFI20221110BHJP
G06F 9/455 20060101ALI20221110BHJP
G06F 11/07 20060101ALI20221110BHJP
【FI】
G06F21/55
G06F9/455 150
G06F11/07 140C
G06F11/07 193
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022516005
(86)(22)【出願日】2020-08-27
(85)【翻訳文提出日】2022-04-15
(86)【国際出願番号】 IB2020057997
(87)【国際公開番号】W WO2021048673
(87)【国際公開日】2021-03-18
(32)【優先日】2019-09-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】521555742
【氏名又は名称】キンドリル・インク
【氏名又は名称原語表記】Kyndryl Inc.
【住所又は居所原語表記】One Vanderbilt Avenue,15th Floor,New York,New York 10017,USA
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ギブス,ナサニエル
(72)【発明者】
【氏名】トレッドウェイ,マイケル
(72)【発明者】
【氏名】ロブス,マシュー,ミッチェル
(72)【発明者】
【氏名】スニッツァー,ブライアン,ジェームス
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA22
5B042KK04
5B042KK17
(57)【要約】
コンテナベースのワークロードに対する脅威の緩和が、アクティブコンテナプールおよび予備コンテナプールを含むコンテナホスティング環境に対する攻撃を検出するプロセスによって提供される。攻撃は、コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらす。攻撃を検知したことに基づいて、プロセスは、アクティブコンテナプールのアクティブコンテナが攻撃の結果として汚染されるのにかかる時間量とみなされる汚染までの時間を識別する。プロセスは、識別された汚染までの時間に基づく決定されたレートで、新しいコンテナを予備コンテナプールにプロビジョニングし、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐ。
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
コンテナホスティング環境に対する攻撃を検出するステップであって、前記攻撃は、前記コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらし、前記コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、前記アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む、検出するステップと、
前記攻撃を検知したことに基づいて、汚染までの時間を識別するステップであって、前記汚染までの時間は、前記アクティブコンテナプールのアクティブコンテナが前記攻撃の結果として汚染されるのにかかる時間量とみなされる、識別するステップと、
識別された前記汚染までの時間に基づく決定されたレートで、新しいコンテナを前記予備コンテナプールにプロビジョニングするステップと、
前記アクティブコンテナプールから、前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、前記予備コンテナプールから予備コンテナを前記アクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、前記ワークロードをサービスすることを引き継ぐステップと
を含む、コンピュータ実装方法。
【請求項2】
前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップは、除去されるアクティブコンテナが前記攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンピュータ実装方法は、前記予備コンテナプールに新しいコンテナをプロビジョンする前記レートを決定するステップを含み、前記決定するステップは、前記汚染までの時間、前記ワークロードをサービスする同時アクティブコンテナの総数および前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づく、請求項1に記載のコンピュータ実装方法。
【請求項4】
決定された前記レートは、Z/Y*Xとして決定され、ここで、Zは、前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yは、前記汚染までの時間であり、Xは、前記ワークロードをサービスする同時アクティブコンテナの総数であり、決定された前記レートは、各Zの期間内にプロビジョンするコンテナの数である、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記コンピュータ実装方法は、
前記予備コンテナプールの予備コンテナの数が時点で閾値に達することに基づいて、決定された前記レートで前記予備コンテナプールへ新しいコンテナを前記プロビジョニングすることを一時的に停止させるステップを含み、前記閾値は、前記時点での前記アクティブコンテナプールのアクティブコンテナの数に基づく、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記コンピュータ実装方法は、
前記予備コンテナプールの予備コンテナの数が、前記アクティブコンテナプールの前記アクティブコンテナの数と等しくなったことに基づいて、決定された前記レートで前記予備コンテナプールへ新しいコンテナを前記プロビジョニングすること再開するステップをさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
識別された前記汚染までの時間は、検出された前記攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、前記コンピュータ実装方法は、
前記アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された前記汚染までの時間を、(i)前記アクティブコンテナが前記予備コンテナプールから前記アクティブコンテナプールにデプロイされた第1の時間および(ii)前記アクティブコンテナが前記攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップ
を含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記コンピュータ実装方法は、
連続的に除去すると同時にデプロイする間に、前記アクティブコンテナプールのアクティブコンテナが、検出された前記攻撃の結果として汚染されるかどうかを監視するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
コンピュータ実装方法は、
前記監視するステップで、前記アクティブコンテナプールのアクティブコンテナが、検出された前記攻撃の結果として汚染されることを検出することに基づいて、連続的に除去することにより前記アクティブコンテナを前記アクティブコンテナプールから除去するレートを増加するステップ
を含み、前記増加するステップは、前記レートを増加し、前記予備コンテナプールに新しいコンテナをプロビジョンする、決定された前記レートと等しくなるようにする、請求項8に記載のコンピュータ実装方法。
【請求項10】
(i)前記監視するステップで、前記アクティブコンテナプールのアクティブコンテナが、検出された前記攻撃の結果として汚染されていないことを検出することであって、検出された前記攻撃の結果として汚染されていないことを検出することが、検出された前記攻撃に対する修正を使用して前記アクティブコンテナを構成することに基づく、検出すること、および、(i)前記攻撃が止んだことを検出すること、からなる群から選択された少なくとも1つに基づいて、前記連続的に除去することにより前記アクティブコンテナプールからアクティブコンテナが除去されるレートを減少すること
を含む、請求項8に記載のコンピュータ実装方法。
【請求項11】
前記コンピュータ実装方法は、
除去されるアクティブコンテナのグレースフルシャットダウンを実行するステップ
を含み、前記グレースフルシャットダウンは、前記除去されるアクティブコンテナの状態を保存することを含み、前記除去されるアクティブコンテナを置き換えるためにデプロイされた予備コンテナは、前記除去されたアクティブコンテナの保存された前記状態を用いてワークロードの処理を再開させる、請求項1に記載のコンピュータ実装方法。
【請求項12】
コンピュータシステムであって、
メモリと、
前記メモリと通信するプロセッサと
を含み、前記コンピュータシステムは、
コンテナホスティング環境に対する攻撃を検出するステップであって、前記攻撃は、前記コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらし、前記コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、前記アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む、検出するステップと、
前記攻撃を検知したことに基づいて、汚染までの時間を識別するステップであって、前記汚染までの時間は、前記アクティブコンテナプールのアクティブコンテナが前記攻撃の結果として汚染されるのにかかる時間量とみなされる、識別するステップと、
識別された前記汚染までの時間に基づく決定されたレートで、新しいコンテナを前記予備コンテナプールにプロビジョニングするステップと、
前記アクティブコンテナプールから、前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、前記予備コンテナプールから予備コンテナを前記アクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、前記ワークロードをサービスすることを引き継ぐステップと
を含む方法を実行するように構成される、コンピュータシステム。
【請求項13】
前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップは、除去されるアクティブコンテナが前記攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される、請求項12に記載のコンピュータシステム。
【請求項14】
前記方法は、前記予備コンテナプールに新しいコンテナをプロビジョンする前記レートを決定するステップを含み、前記決定するステップは、前記汚染までの時間、前記ワークロードをサービスする同時アクティブコンテナの総数および前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づき、決定された前記レートは、Z/Y*Xとして決定され、ここで、Zは、前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yは、前記汚染までの時間であり、Xは、前記ワークロードをサービスする同時アクティブコンテナの総数であり、決定された前記レートは、各Zの期間内にプロビジョンするコンテナの数である、請求項12に記載のコンピュータシステム。
【請求項15】
識別された前記汚染までの時間は、検出された前記攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、前記方法は、
前記アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された前記汚染までの時間を、(i)前記アクティブコンテナが前記予備コンテナプールから前記アクティブコンテナプールにデプロイされた第1の時間および(ii)前記アクティブコンテナが前記攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップ
を含む、請求項12に記載のコンピュータシステム。
【請求項16】
前記方法は、
連続的に除去すると同時にデプロイする間に、前記アクティブコンテナプールのアクティブコンテナが、検出された前記攻撃の結果として汚染されるかどうかを監視するステップと、
(i)前記監視するステップで、前記アクティブコンテナプールのアクティブコンテナが、検出された前記攻撃の結果として汚染されていないことを検出することであって、検出された前記攻撃の結果として汚染されていないことを検出することが、検出された前記攻撃に対する修正を使用して前記アクティブコンテナを構成することに基づく、検出すること、および、(ii)前記攻撃が止んだことを検出すること、からなる群から選択された少なくとも1つに基づいて、前記連続的に除去することにより前記アクティブコンテナプールからアクティブコンテナが除去されるレートを減少すること
を含む、請求項12に記載のコンピュータシステム。
【請求項17】
コンピュータプログラム製品であって、
処理回路によって読み取り可能であり、
コンテナホスティング環境に対する攻撃を検出するステップであって、前記攻撃は、前記コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらし、前記コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、前記アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む、検出するステップと、
前記攻撃を検知したことに基づいて、汚染までの時間を識別するステップであって、前記汚染までの時間は、前記アクティブコンテナプールのアクティブコンテナが前記攻撃の結果として汚染されるのにかかる時間量とみなされる、識別するステップと、
識別された前記汚染までの時間に基づく決定されたレートで、新しいコンテナを前記予備コンテナプールにプロビジョニングするステップと、
前記アクティブコンテナプールから、前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、前記予備コンテナプールから予備コンテナを前記アクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、前記ワークロードをサービスすることを引き継ぐステップと
を含む方法を実行するために前記処理回路による実行のための命令を格納するコンピュータ可読格納媒体を含む、コンピュータプログラム製品。
【請求項18】
前記ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップは、除去されるアクティブコンテナが前記攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される、請求項17に記載のコンピュータプログラム製品。
【請求項19】
前記方法は、前記予備コンテナプールに新しいコンテナをプロビジョンする前記レートを決定するステップを含み、前記決定するステップは、前記汚染までの時間、前記ワークロードをサービスする同時アクティブコンテナの総数および前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づき、決定された前記レートは、Z/Y*Xとして決定され、ここで、Zは、前記予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yは、前記汚染までの時間であり、Xは、前記ワークロードをサービスする同時アクティブコンテナの総数であり、決定された前記レートは、各Zの期間内にプロビジョンするコンテナの数である、請求項17に記載のコンピュータプログラム製品。
【請求項20】
識別された前記汚染までの時間は、検出された前記攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、前記方法は、
前記アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された前記汚染までの時間を、(i)前記アクティブコンテナが前記予備コンテナプールから前記アクティブコンテナプールにデプロイされた第1の時間および(ii)前記アクティブコンテナが前記攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップ
を含む、請求項17に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ実装方法、コンピュータシステムおよびコンピュータプログラム製品に関する。
【背景技術】
【0002】
コンテナは、カプセル化されたアプリケーション(複数可)に可搬性を付与する仮想環境である。様々なコンテナベースの仮想化環境が利用可能であり、また、広く使われている。コンテナは、イメージに対するランタイム環境を提供するコンテナエンジンまたはホストによってコンテナイメージからインスタンス化される。仮想マシンのように、コンテナは、必要に応じて停止し、起動することができる。コンテナは、概して、仮想マシンよりも軽量である。典型的なプラクティスは、所望のアプリケーション(複数可)を実行するために必要とされるただ単一のコンテナ内で実行することである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
コンピュータ実装方法、コンピュータシステムおよびコンピュータプログラム製品を提供することを目的とする。
【課題を解決するための手段】
【0004】
コンピュータ実装方法を提供することを通して、先行技術の欠点が克服され、追加の利点が提供される。本方法は、コンテナホスティング環境に対する攻撃を検出する。攻撃は、コンテナホスティング環境のホストされたコンテナへの汚染の潜在的な脅威をもたらす。コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む。本方法は、攻撃を検出したことに基づいて、汚染までの時間(time-to-contamination)を識別する。汚染までの時間は、アクティブコンテナプールのアクティブコンテナが攻撃の結果として汚染されるのにかかる時間量とみなされる。本方法は、識別された汚染までの時間に基づく決定されたレートで、新しいコンテナを予備コンテナプールにプロビジョニングする。加えて、本方法は、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐ。
【0005】
好ましくは、本発明は、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップが、除去されるアクティブコンテナが攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される方法を提供する。
【0006】
好ましくは、本発明は、予備コンテナプールに新しいコンテナをプロビジョンするレートを決定するステップを含み、決定するステップが、汚染までの時間、ワークロードをサービスする同時アクティブコンテナの総数および予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づく、方法を提供する。
【0007】
好ましくは、本発明は、決定されたレートが、Z/Y*Xとして決定され、ここで、Zが、予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yが、汚染までの時間であり、Xが、ワークロードをサービスする同時アクティブコンテナの総数であり、決定されたレートが、各Zの期間内にプロビジョンするコンテナの数である、方法を提供する。
【0008】
好ましくは、本発明は、予備コンテナプールの予備コンテナの数が時点で閾値に達することに基づいて、決定されたレートで予備コンテナプールへ新しいコンテナをプロビジョニングすることを一時的に停止させるステップを含み、閾値が、時点でのアクティブコンテナプールのアクティブコンテナの数に基づく、方法を提供する。
【0009】
好ましくは、本発明は、予備コンテナプールの予備コンテナの数が、アクティブコンテナプールのアクティブコンテナの数と等しくなったことに基づいて、決定されたレートで予備コンテナプールへ新しいコンテナをプロビジョニングすること再開するステップをさらに含む、方法を提供する。
【0010】
好ましくは、本発明は、識別された汚染までの時間が、検出された攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された汚染までの時間を、(i)アクティブコンテナが予備コンテナプールからアクティブコンテナプールにデプロイされた第1の時間および(i)アクティブコンテナが攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップを含む、方法を提供する。
【0011】
好ましくは、本発明は、連続的に除去すると同時にデプロイする間に、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されるかどうかを監視するステップをさらに含む方法を提供する。
【0012】
好ましくは、本発明は、監視するステップで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されることを検出することに基づいて、連続的に除去することによりアクティブコンテナをアクティブコンテナプールから除去するレートを増加するステップを含み、増加するステップが、レートを増加し、予備コンテナプールに新しいコンテナをプロビジョンする、決定されたレートと等しくなるようにする、方法を提供する。
【0013】
好ましくは、本発明は、(i)監視するステップで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されていないことを検出することであって、検出された攻撃の結果として汚染されていないことを検出することが、検出された攻撃に対する修正(remediation)を使用してアクティブコンテナを構成することに基づく、検出すること、および、(ii)攻撃が止んだことを検出すること、からなる群から選択された少なくとも1つに基づいて、連続的に除去することによりアクティブコンテナプールからアクティブコンテナが除去されるレートを減少することを含む、方法を提供する。
【0014】
好ましくは、本発明は、除去されるアクティブコンテナのグレースフルシャットダウンを実行するステップを含み、グレースフルシャットダウンは、除去されるアクティブコンテナの状態を保存することを含み、除去されるアクティブコンテナを置き換えるためにデプロイされた予備コンテナが、除去されたアクティブコンテナの保存された状態を用いてワークロードの処理を再開させる方法を提供する。
【0015】
さらに、メモリと、メモリと通信するプロセッサとを含み、コンピュータシステムが、方法を実行するように構成される、コンピュータシステムが提供される。本方法は、コンテナホスティング環境に対する攻撃を検出する。攻撃は、コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらす。コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む。方法は、攻撃を検知したことに基づいて、汚染までの時間を識別する。汚染までの時間は、アクティブコンテナプールのアクティブコンテナが攻撃の結果として汚染されるのにかかる時間量とみなされる。本方法は、識別された汚染までの時間に基づく決定されたレートで、新しいコンテナを予備コンテナプールにプロビジョニングする。加えて、本方法は、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐ。
【0016】
好ましくは、本発明は、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップが、除去されるアクティブコンテナが攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される、コンピュータシステムを提供する。
【0017】
好ましくは、本発明は、方法が、予備コンテナプールに新しいコンテナをプロビジョンするレートを決定するステップを含み、決定するステップが、汚染までの時間、ワークロードをサービスする同時アクティブコンテナの総数および予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づき、決定されたレートが、Z/Y*Xとして決定され、ここで、Zが、予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yが、汚染までの時間であり、Xが、ワークロードをサービスする同時アクティブコンテナの総数であり、決定されたレートが、各Zの期間内にプロビジョンするコンテナの数である、コンピュータシステムを提供する。
【0018】
好ましくは、本発明は、識別された汚染までの時間は、検出された攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、方法は、アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された汚染までの時間を、(i)アクティブコンテナが予備コンテナプールからアクティブコンテナプールにデプロイされた第1の時間および(ii)アクティブコンテナが攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップを含む、コンピュータシステムを提供する。
【0019】
好ましくは、本発明は、方法が、連続的に除去すると同時にデプロイする間に、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されるかどうかを監視するステップと、(i)監視するステップで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されていないことを検出することであって、検出された攻撃の結果として汚染されていないことを検出することが、検出された攻撃に対する修正を使用してアクティブコンテナを構成することに基づく、検出すること、および、(ii)攻撃が止んだことを検出すること、からなる群から選択された少なくとも1つに基づいて、連続的に除去することによりアクティブコンテナプールからアクティブコンテナが除去されるレートを減少することを含む、コンピュータシステムを提供する。
【0020】
さらに、本発明は、コンピュータプログラム製品であって、処理回路によって読み取り可能であり、処理回路による実行のための命令を格納するコンピュータ可読格納媒体を含む、コンピュータプログラム製品が、方法を実行するために提供される。方法は、コンテナホスティング環境に対する攻撃を検出する。攻撃は、コンテナホスティング環境のホストされるコンテナに対する汚染の潜在的な脅威をもたらす。コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む。方法は、攻撃を検知したことに基づいて、汚染までの時間を識別するステップであって、汚染までの時間は、アクティブコンテナプールのアクティブコンテナが攻撃の結果として汚染されるのにかかる時間量とみなされる、識別する。方法は、識別された汚染までの時間に基づく決定されたレートで、新しいコンテナを予備コンテナプールにプロビジョニングする。加えて、方法は、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐ。
【0021】
好ましくは、本発明は、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時にデプロイするステップが、除去されるアクティブコンテナが攻撃の結果として汚染されたと検出されたかどうかにかかわらず実行される、コンピュータプログラム製品を提供する。
【0022】
好ましくは、本発明は、方法が、予備コンテナプールに新しいコンテナをプロビジョンするレートを決定するステップを含み、決定するステップが、汚染までの時間、ワークロードをサービスする同時アクティブコンテナの総数および予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づき、決定されたレートが、Z/Y*Xとして決定され、ここで、Zが、予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量であり、Yが、汚染までの時間であり、Xは、ワークロードをサービスする同時アクティブコンテナの総数であり、決定されたレートが、各Zの期間内にプロビジョンするコンテナの数である、コンピュータプログラム製品を提供する。
【0023】
好ましくは、本発明は、識別された汚染までの時間は、検出された攻撃についての情報に基づいて、推定された汚染までの時間として事前指定された初期値に設定され、方法は、アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された汚染までの時間を、(i)アクティブコンテナが予備コンテナプールからアクティブコンテナプールにデプロイされた第1の時間および(ii)アクティブコンテナが攻撃の結果として汚染された第2の時間の間の時間の量に調整するステップを含む、コンピュータプログラム製品を提供する。
【0024】
付加的な特徴および利点が、本明細書で説明される概念を通して実現される。
【0025】
本明細書で説明される側面は、本明細書の末尾において、特許請求の範囲の例として、具体的に指摘され、明確に特許請求される。本発明の上述および他の目的、特徴および利点は、下記添付の図面と併せて以下の詳細な説明から明白であろう。
【図面の簡単な説明】
【0026】
【
図1】本明細書に記載の側面を組み込むおよび使用するための例示的な環境を示す図。
【
図2】本明細書に記載の側面による、クラウドコンテナへの脅威の検出に対する自動応答の概念図。
【
図3】本明細書に記載の側面による、コンテナベースのワークロードに対する脅威を緩和するための例示的な処理を示す。
【
図4】本明細書に記載の側面による、コンテナベースのワークロードに対する脅威を緩和するための例示的な処理を示す。
【
図5】本明細書に記載の側面による、コンテナベースのワークロードに対する脅威を緩和するための例示的な処理を示す。
【
図6】本明細書に記載の側面を組み込むもしくは使用するまたはその両方のためのコンピュータシステムおよび関連デバイスの一例を示す。
【
図7】本発明の一実施形態によるクラウドコンピューティング環境を示す。
【
図8】本発明の一実施形態による抽象化モデルレイヤを示す。
【発明を実施するための形態】
【0027】
脆弱なシステムに対する大部分の攻撃は、実行するために数分だけかかり、通常は、攻撃の影響を緩和するために、稼働しているノードまたはコンテナに適用されるべきパッチまたは回避策を必要とする。侵害されたシステムを修正する既存の方法は、典型的には、システムがパッチされているか、または、再構築のために停止されている間、アプリケーションに対するダウンタイム、または悪化した性能を伴う。多くの場合、攻撃者は、侵害されたシステムへのアクセスを、それが修正される前のいくらかの時間の間、維持できるか、もしくは、攻撃者は、管理者が脅威の修復に対処している間にシステムを効率的に再感染または新しいシステムに感染させることができるか、またはその両方ができる。
【0028】
コンテナは、このパラダイムを変更するための独自の機会を提供する。検出された脅威によってアクティブコンテナが侵害または汚染され得るレートを超えたレートで、新しく供給されたコンテナでアクティブコンテナを交換するためのアプローチが本明細書で説明される。これにより、恒久的な修正が行われるまで、攻撃の影響を緩和することができる。説明されるように、攻撃は、コンテナ環境のホストされるコンテナへの汚染の潜在的または認識された脅威をもたらすものとして検出される。進行中の攻撃が存在すると信じる理由により、環境に侵入して対象コンテナに到達するまでの攻撃の推定または実際の時間が決定される。これにより、侵害されたか、または存在する汚染の脅威に直面するとして識別された既存のコンテナを交換するために、継続的に新しいコンテナをプロビジョンすべきレートの知識が与えられる。
【0029】
側面は、恒久的なパッチまたは回避策が導入されるまで、脆弱なシステムへの攻撃を緩和するためのアプローチを提示する際に、プロビジョニング時の迅速な「スピンアップ」および「スピンダウン」時間またはコンテナおよびそれらの「バニラな(Vanilla)」状態を利用する。いくつかの実施形態では、コンテナは、迅速に循環され、これは、それらが、アクティブプールにプロビジョンされ、その中で他のバニラコンテナに交換される前に比較的短い寿命を有することを意味する。いくつかの実施形態では、トラフィックまたは他のワークロードサービスを取り扱うアクティブコンテナプールにおいてコンテナが設定された時間アクティブであった後、それが、アクティブコンテナのプールから除去され、新しく提供された「クリーン」なコンテナによって置き換えられる。コンテナの不変性に起因して、新たにプロビジョンされるコンテナは、既知の良好な構成に基づいてプロビジョンされ得る。アクティブコンテナの循環は、連続的に、つまり時間にわたって継続的に行うことができ、アクティブコンテナプールを侵害からクリーンに維持し、正常に機能するようにする。
【0030】
アクティブプール内のコンテナは、ステートフル、ステートレスまたは組み合わせであってもよい。ステートレスコンテナを動作させることで、状態を永続化さすることなく、突然終了させて次のコンテナと置き換えることが可能となる。あるいは、コンテナが保存するべき状態を含む場合、これは、コンテナをダウンさせる前に書き込まれ(格納され)てもよい。加えて、または代替的に、アクティブな状態から除去される一部または全部のコンテナが、「グレースフル」シャットダウン/デプロビジョンされてもよく、これは、これらに必要な任意のものを永続化する機会を与える。
【0031】
加えて、いくつかの実施形態は、コンテナをデプロビジョニングする前にコンテナのイメージのコピーをキャプチャしてもよい。このイメージは、所望であれば、将来のフォレンジック分析または別の目的のために使用してもよい。
【0032】
したがって、側面は、コンテナのデプロイメントモデルを活用して、コンテナがアクティブである時間を削減することによって攻撃対象領域を減少する。プロセスは、汚染されたコンテナをダウンさせるために、もしくは、初期段階でコンテナの汚染を防止するために、またはその両方のために、アクティブコンテナを連続的に循環させる。実施形態においては、アクティブ使用コンテナは、攻撃がコンテナを侵害(感染、侵入、改変など)し得る前に十分に短い時間だけ使用されるのに十分な速さで循環される。
【0033】
汚染時間計算が開示され、コンテナがアクティブで非侵害なままである時間の量を最適化するために使用される。余剰能力計算もまた、手元にある準備が整ったコンテナの数を決定付けるために使用される。
【0034】
図1は、本明細書に説明される側面を組み込み使用するための例示的な環境100を示す。環境100は、この例のコンテナ環境である。例示的なコンテナの提供は、他のものも知られているが、Red Hat,Inc(ノースカロライナ州ローリー、OPENSHIFTはその登録商標である。)によって提供されるOpenShift(登録商標)およびDocker(登録商標)(アメリカ合衆国カリフォルニア州サンフランシスコのDocker Incによって提供され、DOCKERはその登録商標である。)を含む。
【0035】
図1の環境は、コンテナ環境を図示し、本明細書においてはコンテナ技術の文脈で実施例が提示されるが、本明細書に説明される側面は、仮想マシン(VM)ホスト上で実行される仮想マシン(VM)のような他の種類の仮想環境技術でも機能することに理解されたい。
【0036】
図1を参照すると、環境100は、少なくともコンテナの実行およびコンテナプールのホスティングのための設備を提供するコンテナホスト102を含み、いくつかの場合、コンテナイメージのためのリポジトリ/レジストリを含む。コンテナホスト102は、それ自体がクラウド環境104または他のネットワークインフラストラクチャにおいてホストされる。一実施形態においては、コンテナホスト102(複数可)は、コンテナの準備/予備コンテナプールおよびコンテナのアクティブ使用コンテナプールをホストする。制御システム106は、インターネットまたは他のネットワーク(複数可)を介して、コンテナホスト102(複数可)と通信し、コンテナホスト上へのコンテナイメージからのコンテナのインスタンス化/プロビジョニングを管理するとともに、種々のプールへのコンテナのデプロイおよび種々のプールからのコンテナの除去を管理する。
【0037】
コンテナ実行中、コンテナ(複数可)は、外部の脅威110にさらされる可能性がある。脅威は、コンテナホスティング環境/コンテナホスト102に対する攻撃の形態で来入する可能性がある。
【0038】
図1のコンポーネントは、デバイスの有線または無線ネットワーク(複数可)を形成し、デバイス間の通信は、デバイス間でデータを通信するための有線または無線の通信リンク112を介して生じる。
図1は、本明細書で説明される態様を組み込み使用するための環境の単なる一例であり、本明細書で説明される能力と互換性がある他の多くの例が可能であり、企図される。
【0039】
典型例では、制御システム106は、コンテナホスト102(複数可)においてコンテナをプロビジョニングするための構成108を読み取る。構成は、新たなコンテナをどれだけ頻繁に提供するか、既存のアクティブ使用コンテナ(複数可)をどれだけ頻繁に検疫/デプロビジョンするといった特性を決定付け得る。制御システム106は、そこからコンテナのインスタンス化を開始し、適切なプールへの配置するコンテナイメージを識別することができる。特定の例では、コンテナは、準備ができているが、ワークロードをサービスするためにアクティブ使用がされていないインスタンス化されたコンテナを保持するプールである、準備/予備プールにプロビジョンされる。コンテナのインスタンス化を開始することは、制御システム106からコンテナホスト102またはその管理システムにコールまたは他のコマンドを送信することを含んでもよい。コール/コマンドは、コンテナホストに対し、コンテナイメージからコンテナホストにおいてコンテナをインスタンス化するように指示してもよい。いくつかの例では、コンテナホストは、コンテナホストにとってローカルまたはリモートのリポジトリからイメージを取得する。構成108は、1または複数のコンテナをインスタンス化する際に使用するためのパラメータを指定してもよい。
【0040】
また、制御システム106は、アクティブコンテナプールからのアクティブコンテナをデプロビジョニン/除去し、ここではもはや能動的にワークロードを処理しないデプロビジョンまたは検疫済み状態にするように制御する。いくつかの例では、デプロビジョンされたコンテナは、終了され、そのリソースは、ホストの利用可能なリソースプールに戻される。
【0041】
いくつかの例では、制御システム106は、本明細書で議論されるプロビジョン/検疫エンジンであるか、または含む。
【0042】
構成108は、本明細書で説明される側面に従って、コンテナのプロビジョニングおよびデプロビジョニング、並びに予備プールからアクティブプールへのそれらの移動を指示するプロセス、指令、情報、コマンドもしくは仕様またはその組み合わせを参照する。
【0043】
図1の例は、例えば、その上で実行されるソフトウェアといった、1または複数のコンピュータシステムによって/上で実装されるいくつかのコンポーネントを示す。
【0044】
図2は、本明細書で説明される側面による、クラウドコンテナへの脅威の検出に対する自動応答の概念図である。202は、コンテナのコレクションを表し、プロビジョニング204からデプロイメントの準備が整っている予備コンテナの予備/準備コンテナプール206へのそれらの進行も表す。そこから、コンテナは、アクティブ使用のために、ワークロード(複数可)をサービスする(例えば、処理する)コンテナのアクティブコンテナプール208にデプロイされる。本明細書で記載される側面によれば、コンテナは、アクティブコンテナプール208から検疫/デプロビジョン領域210へ除去され、予備コンテナによって置換えられる。
【0045】
図2のさらなるコンポーネントは、脆弱性スキャナ/脅威検出器212と、汚染時間計算器216と、複数の脆弱性の各々に対する推定された汚染時間のデータベース214と、余剰能力計算器218と、プロビジョン/検疫エンジン220とを含み、このプロビジョン/検疫エンジン220は、コンテナのプロビジョニング、コンテナの検疫/デプロビジョニングおよびコレクション202におけるプール間のコンテナの移動を管理する。
【0046】
例示的なイベントのシーケンスにおいては、「1」において、脅威検出器212は、アクティブコンテナプール208内のコンテナに対する脅威の検出を含む、環境内のリアルタイムスキャニングおよび脅威検出を実行する。脅威検出器212は、コンテナホスティング環境に対する攻撃を検出する。攻撃の検出は、任意の所望の要因(複数可)に基づいて認識またはトリガされてもよい。何がシーケンスの後半の側面をトリガする攻撃とみなされかについては構成可能であってもよい。これは、所望のセキュリティレベル、コンテナによって処理される情報の敏感さ、ホスティング環境の特殊性、関連する技術もしくは進行中の脅威のアクティビティの評価レベルなどの要因に依存する可能性がある。概して、検出された攻撃は、コンテナホスティング環境のホストされるコンテナへの汚染の潜在的または実際の脅威をもたらすものとみなされる。
【0047】
脅威検出は、したがって、アクティブコンテナに影響を与える可能性のある脅威を検出し、コンテナの実際の汚染を検知してもよい。その一部として、汚染や脅威の検知の時間を感知し、記録を取ってもよい。いくつかの実施形態では、この検出は、特定の脅威を識別し、脅威に関する情報、例えば、その攻撃のベクトル、影響を受けたポート/アドレス、データファイル、プロセス(複数可)などを捕捉することを含む。脅威検出器は、脅威に関する関連情報を汚染時間計算器216に渡す。
【0048】
シーケンスにおいては、「2」では、汚染時間計算器は、脅威検出器212から情報を受信し、汚染までの時間の推定値、例えば、脅威がクリーンなコンテナを汚染するためにかかる時間の推定値についてデータベース214を参照する。一例では、このデータベースは、様々な脅威に対する凡その侵害時間のテーブルとして実装される。脅威が十分に識別できない場合、例えば、新規であるか、未認識である場合は、侵害時間のデフォルトの推定値を使用してもよい。使用する例示的なデフォルトの侵害時間は、30秒である。
【0049】
データベースは、攻撃がアクティブコンテナに到達してそれらを汚染する時間の推定値を参照する、推定された最小の汚染までの時間を提供する。いくつかの攻撃は、対象のアクティブ使用コンテナの実際の汚染の前に検出される可能性がある。(フロントエンドでの)初期のブレークインとバックエンドの汚染との間には、時間の窓が存在する可能性がある。例えば、フロントエンドコンポーネント(コンテナかそうではないもの)での攻撃は、攻撃が存在していることおよび脅威がバックエンドコンポーネント(例えば、ワークロードをサービスするバックエンドコンテナ)にもたらされていることを知らせることができる。この例における初期の汚染までの時間は、攻撃が検出される時間からコンテナが侵害される時間の推定値として取得されてもよい。汚染時間の推定値は、攻撃がフロントエンドを突破してバックエンドを汚染するのにかかる推定された時間量であってもよい。これは、バックエンドが実際に侵害されるか否か、またはされたか否かに関わらない。
【0050】
次に、汚染時間計算器は、バニラコンテナが侵害される可能性のある実際の最小時間を決定するために、「準備/予備」から「アクティブ使用」に移動され、それらについて実際に汚染されたタイミング(脅威が実際にそれらを汚染する場合)が決定された新しいコンテナを監視(「3」)することができる。これは、「2」からの最小汚染時間の推定値を改善するために使用することができる。観測された最小時間がデータベース内で示された推定された時間未満である場合は、観測された任意の最小汚染時間は、テーブルベースの推定値を改善するためにデータベースに保存されてもよい。
【0051】
このように、計算器216は、アクティブコンテナプール208を観測し、いつコンテナがアクティブ使用にデプロイされたかを観測し、アクティブプールを観測することもしくは脅威検出器212から指示を受信することまたはその両方に基づいて、アクティブコンテナが侵害されるのにかかる時間を識別することができる。
【0052】
したがって、攻撃を検知したことに基づいて、汚染までの時間が識別される。汚染までの時間は、アクティブコンテナプールのアクティブコンテナが、攻撃の結果、汚染されるまでの時間として取得される。いくつかの例では、上述したように、識別される汚染までの時間は、初期値に設定され、この初期値は、事前指定され、脅威検出器によって提供される検出された攻撃に関する情報に基づいて、推定された汚染までの時間として、データベースから取得される。この初期の汚染までの時間は、次いで、アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて調整されてもよい。すなわち、第1の時間(アクティブコンテナが予備コンテナからアクティブコンテナプールにデプロイされたとき)と、第2の時間(アクティブコンテナが攻撃の結果として汚染されたとき)との間の時間量に調整することができる。
【0053】
脅威が検出されると、本明細書で説明される側面は、プロセスを開始して、アクティブコンテナプール208から「検疫/デプロビジョン」プールへアクティブ使用コンテナを積極的に除去する。一方、新しいコンテナが、準備/予備プール206からアクティブ使用(プール208)にプロビジョンされ、デプロビジョニングされた以前のアクティブ使用コンテナによって提供されていた処理リソースを置き換える。アクティブ使用プール内にデプロイされたコンテナは、準備/予備プール206からデプロイされる。プロセスは、識別された汚染までの時間に基づいて、新たなコンテナを予備コンテナ206にプロビジョンするレートを決定し、所望の数のコンテナが、引き続きアクティブコンテナプール208内のコンテナが汚染されるのを防止するのに十分なレートでアクティブ使用208にプロビジョンする準備があり、蓄えられるようにする。この新たなコンテナをプロビジョンし予備状態にするレートを決定することは、余剰能力計算器218によって実現される。余剰能力計算器218は、(「4」で)汚染時間計算器216から汚染までの時間を取得する。それはまた、入力として、必要なアクティブ使用コンテナの総数、すなわち、ワークロードをサービスするのに十分と思われる同時アクティブ使用コンテナの数と、コンテナのためのスピンアップ時間とを取得する。この情報は、ユーザ、エンジン220または任意の他のソースから提供されてもよい。余剰能力計算器218は、次いで、準備/予備プール206内に新しいコンテナをスピンアップ/プロビジョンするレートを決定し、十分なコンテナがスピンアップされ、「準備/予備」状態で待機していることを確実にする。
【0054】
いくつかの実施形態では、そのスピンアップ時間が同じになるように同一の「全目的」のコンテナを使用する。スピンアップ時間が変化するように異なる属性を有する特殊化されたコンテナの異なるグループを使用する実施形態においては、
図2のシーケンスは、そのようなグループごとに実行されて、それぞれの汚染までの時間および余剰能力計算を決定し、それぞれのグループのアクティブ使用コンテナを循環させることができる。
【0055】
新たなコンテナを予備コンテナプールにプロビジョンするレートは、汚染までの時間、ワークロードをサービスするための同時アクティブコンテナの総数および予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間に基づいてもよい。レートを決定するために、
-全てのアクティブ使用コンテナが同時に攻撃される可能性がある仮定する(最悪のケース);
-負荷を満たすために必要なX個の同時アクティブ使用コンテナがあると仮定する;
-最小の汚染までの時間Yを設定する:
-コンテナについてのスピンアップ時間Zを設定する:
-次いで、すべてのアクティブ使用コンテナが最小時間Yのうちに感染したという最悪のケースを想定して、予備コンテナがすべてのアクティブ使用コンテナを置き換えることができるように、X個のコンテナが、時間Yの期間まで、アクティブ使用のためにデプロイする準備が整った予備/準備状態に存在しなければならない。
【0056】
したがって、数式Z/Y*Xは、各Z秒毎にスピンアップされるノードの数、すなわち、決定されたレートを与える。
【0057】
具体的な例として、スピンアップ時間が10秒であり、汚染までの時間が20秒であり、ワークロードをサービスするために10個のアクティブノード(コンテナ)が必要であると仮定する。次いで、レートは、10/20*10=5となる。これは、10秒毎にスピンアップするノードの数である。その結果、20秒毎に10個の予備ノードのプールをもたらし、汚染された10個のアクティブノードを置き換えることができる。
【0058】
これにより、余剰能力計算器218は、(「4」で汚染時間計算器から余剰能力計算器へ提供される)汚染時間と、必要なアクティブコンテナの数およびスピンアップ時間を含む他のパラメータとに基づいて、余剰能力計算器218は、スピンアップするべきコンテナの数と、そうする頻度とを決定する。数式のそれぞれのパラメータは、任意の適切なエンティティから来てもよい。例えば、プロビジョン/検疫エンジン220は、そのプロビジョニングの活動に基づいてスピンアップ時間に関する知識を有している可能性がある。必要とされるアクティブ使用コンテナの数は、例えば、ユーザによって指定され、もしくはワークロードマネージャまたは他のコンポーネントによって指示され、またはその両方であってもよい。
【0059】
プロビジョン/検疫エンジン220は、新しいコンテナを連続的にプロビジョニングし、それらを準備/予備状態に移動し、次いでアクティブ使用に移動し、(汚染の際に、またはそれに先行して)検疫状態に移動し、その後それらをデプロビジョンするタスクをハンドルしてもよい。よって、
図2における「6」は、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐことを参照する。アクティブコンテナプール208から1または複数のコンテナを除去することは、1または複数のコンテナの実際の汚染を観察することで実行してもよい。あるいは、アクティブコンテナプールのワークロードをサービスするアクティブコンテナ(複数可)を除去し、アクティブコンテナプールに新たなものをデプロイすることは、除去されるアクティブコンテナ(複数可)が汚染されることが検出されたか否かに関わらず、実行されてもよい。一方、エンジン220は、決定されたレート、すなわち、余剰能力計算器218によって決定されたレートで、予備コンテナプール206内に新しいコンテナをプロビジョンすることができる。このようなやり方で、プロビジョニング/デプロビジョニングが、少なくとも部分的に余剰時間計算コンポーネント218に基づいて動作することができる。いくつかの実施形態では、アクティブ使用プールからのコンテナの除去および新しいコンテナのアクティブ使用プールへのデプロイは、新しいコンテナが準備/予備に提供される決定されたレートで実行され、攻撃がこれらを汚染するよりも高速にコンテナが循環されているので、アクティブ使用プール内のコンテナの実際の侵害が観測されない。
【0060】
いくつかの実施形態では、アクティブコンテナを検疫/デプロビジョン状態に除去する場合、エンジン220は、コンテナに「グレースフル」シャットダウンを強制してもよい。これは任意である。いくつかの例では、コンテナが保存すべき状態を有するかどうかに基づいている。そうであり、グレースフルシャットダウンが要求される場合は、除去されるアクティブコンテナの状態が保存されてもよい。さらに、除去されるアクティブコンテナを置き換えるためにデプロイされた予備コンテナは、所望であれば、除去されるアクティブコンテナの保存された状態を使用してワークロード処理を再開することができる。
【0061】
進行中の処理は、コンテナがアクティブ使用から連続的に除去され、同時にアクティブ使用にデプロイされる新しいコンテナと置き換えられているときに、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として実際に汚染されているかどうかを監視することをさらに含んでもよい。実際には汚染されていない場合、これはコンテナの循環を減速する機会を示す可能性があり、この原則は、電力および他のリソース消費を削減する可能性がある。コンテナが汚染されている場合、これは、循環をスピードアップするべきであることを知らせる可能性があり、新しいコンテナが準備/予備状態にプロビジョニングされるレートも同様である。これにより、監視することで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されることを検出することに基づいて、処理は、連続的に除去することによりアクティブコンテナをアクティブコンテナプールから除去するレートを増加することができる。このレートは、増加されて、例えば、予備コンテナプールに新しいコンテナをプロビジョンする、決定されたレートと等しくなるようにしてもよい。これにより、循環の高速化を図ることができる。汚染までの時間が正確であると仮定すると、次いで、最終的には、アクティブ使用コンテナが脅威によって汚染されなくなる。しかしながら、余剰能力計算器によって決定されたレートで循環しているにもかかわらず、アクティブコンテナが侵害されている場合は、これは、218で決定された最小の汚染までの時間よりも速く汚染が起こっていることを意味する。この場合、脅威検出器212もしくは汚染時間計算器は、より低い最小の汚染までの時間をピックアップし、予備コンテナをプロビジョンするレートを更新するために余剰能力計算器218にそれを供給するであろう。加えて、所望であれば、データベース214に新たな最小の汚染までの時間を保存してもよい。新たな決定されたレートに適合するため、アクティブコンテナを除去し、新しいものをデプロイするサイクルレートは、増加され(すなわち、循環を高速化され)てもよい。循環の高速化は、アクティブ使用プールからの汚染を根絶するであろう。
【0062】
これとは対照的に、サイクルレート、つまり、アクティブコンテナプールからアクティブコンテナを除去して新しいコンテナで置き換える速度は、様々な状況において減少(すなわち、減速)されてもよい。このような状況の一つは、アクティブコンテナプールのアクティブコンテナが実際に汚染されているかどうかを監視することが、検出された攻撃の結果としてアクティブコンテナプールのアクティブコンテナが汚染されていないことを検出する(または汚染のスピードが減速した)場合である。これは、例えば、新たにプロビジョンされ、デプロイされたアクティブコンテナが、検出された攻撃に対する修正を使用して構成される場合に検出される可能性がある。加えて、または代替的に、攻撃が止んだことを検出することに基づいて、サイクルレートを減少させてもよい。
【0063】
必要に応じて、サイクルレートの増減量、もしくは、サイクルレートの切り上げ(ceiling)または切り下げ(floor)またはその両方を予め設定してもよい。例えば、閾値レートに達するまでもしくは汚染が観察されるまでまたはその両方がなされるまで、サイクルレートを減速することができる。汚染が観察される場合、少なくとも所定の時間の間、汚染が観察されなくなるまで、サイクルレートを増加させることができる。
【0064】
コンテナが最悪の場合のシナリオと同程度には迅速に攻撃もしくは侵害またはその両方がなされていない場合、処理は、例えば、新しいノードを予備プールにプロビジョニングすることを、予め設定された"カットオフ"ポイントで停止してもよく、ここでは、準備/予備プール206内のコンテナの数が、所定の比率でアクティブノードの数に到達するか、またはそれを超える。その後、準備/予備プール206へのプロビジョニングは、その中のコンテナの数が、アクティブ使用プール208内のコンテナの数に相対していくらかの数に達する場合、例えばそれがアクティブコンテナの数に等しくなる場合に、再開することができる。
【0065】
したがって、ある時点で予備コンテナプールの予備コンテナの数が閾値に達することに基づいて、エンジン220は、決定された(つまり、余剰能力計算器218によって決定された)レートで予備コンテナプールへ新しいコンテナをプロビジョニングすることを一時的に停止させることができる。閾値は、その時点でのアクティブコンテナプールのアクティブコンテナの数に基づいてもよく、例えば、準備/予備のコンテナの数のアクティブコンテナの数に対する割合に基づいてもよい。このプロビジョニングのレートは、サイクルレート(アクティブプール208からの除去およびアクティブプール208へのデプロイ)に等しくない可能性があるため、余剰の準備コンテナが生じる可能性がある。新たなコンテナのプロビジョニングを一時停止することにより、予備プールが過大になるのを防止することができる。次いで、予備コンテナプールへ予備コンテナをプロビジョニングすることは、例えば、予備コンテナプールの予備コンテナの数がアクティブコンテナプールのアクティブコンテナの数と等しくなるように縮小したことに基づいて、例えば、決定されたレートでまたは他のレートで後に再開することができる。
【0066】
本明細書で説明される側面は、コンテナを循環させて、脅威に直面した場合のコンテナの汚染を緩和し、もしくは汚染を完全に回避し、またはその両方を行うモデルを提示する。これは、単純に汚染を認識し、かつ、影響された環境をクリーンにし、もしくは予防措置をインストールし、またはその両方を行うアプローチとは異なる。これは、また、攻撃が単純に持続しており、コンテナがオンラインに戻るとすぐにコンテナに対して再開されるであろう、それをリセットするために侵害されたコンテナを単純に再起動させるアプローチとも異なる。
【0067】
図3~
図5は、本明細書に記載される側面による、コンテナベースのワークロードに対する脅威を緩和するための例示的なプロセスを示す。いくつかの例では、プロセスは、本明細書で説明されるような1または複数のコンピュータシステムによって実行され、このようなコンピュータシステムは、制御システム、コンテナホスティング環境のまたはコンテナホスティング環境に接続されるコンピュータシステムもしくは1または複数の他のコンピュータシステムまたはその組み合わせを含んでもよい。
【0068】
まず、
図3を参照すると、プロセスは、コンテナホスティング環境に対する攻撃を検出する(302)ことで開始される。一例では、この検出は、フロントエンドコンポーネントの突破の上で行われる。攻撃は、コンテナホスティング環境のホストされるコンテナへの汚染の潜在的な脅威をもたらすものとして認識され得る。コンテナホスティング環境は、ワークロードをサービスするためのアクティブコンテナのアクティブコンテナプールと、アクティブコンテナプールへのデプロイの準備が整った予備コンテナの予備コンテナプールとを含む。
【0069】
攻撃を検知したことに基づいて、プロセスは、汚染までの時間を識別する(304)。汚染までの時間は、攻撃の結果としてアクティブコンテナプールのアクティブコンテナが汚染されるのにかかる時間の量として取得される。いくつかの例では、この汚染までの時間は、少なくとも初期に推定値として取得される。識別された汚染までの時間は、推定された汚染までの時間として、事前指定され、また検出された攻撃についての情報に基づいて識別された初期値に設定されてもよい。プロセスは、さらに、アクティブコンテナプールのアクティブコンテナの実際の汚染を検出することに基づいて、識別された汚染までの時間を、アクティブコンテナが予備コンテナプールからアクティブコンテナプールにデプロイされた第1の時間およびアクティブコンテナが攻撃の結果として汚染された第2の時間の間の時間の量となるように調整することを含んでもよい。
【0070】
プロセスは、識別された汚染までの時間に基づいて、予備コンテナプールに新しいコンテナをプロビジョンするレートを決定することによって、また、この決定されたレートで新しいコンテナを予備コンテナプールにプロビジョニングすることによって継続する。以下に説明する
図4は、このようなレートを決定するための例示的なプロセスを提示する。
【0071】
加えて、
図3のプロセスは、310に継続し、ここでは、アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に、予備コンテナプールから予備コンテナをアクティブコンテナプールにデプロイし、除去されたアクティブコンテナを置き換え、ワークロードをサービスすることを引き継ぐ。アクティブコンテナプールから、ワークロードをサービスしているアクティブコンテナを除去すると同時にデプロイすることは、除去されるアクティブコンテナが、攻撃の結果として、実際に汚染されたか、もしくは汚染されると検出されたか、またはその両方であったかどうかにかかわらず、実行されてもよい。
【0072】
プロセスは、連続的に除去すると同時にデプロイする間に、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されるかどうかを監視する(312)ことによって継続し、任意選択で、アクティブプールからの除去およびアクティブプールへのデプロイのレートを調整する。例えば、監視することで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として、汚染されることを検出することに基づいて、調整することは、連続的に除去することによりアクティブコンテナをアクティブコンテナプールから除去するレートを増加してもよい。増加することは、レートを増加し、例えば、予備コンテナプールに新しいコンテナがプロビジョンされる、決定されたレートと等しくなるようにする。加えて、または代替的に、プロセスは、例えば、(i)監視することで、アクティブコンテナプールのアクティブコンテナが、検出された攻撃の結果として汚染されていないことを検出することであって、検出された攻撃の結果として汚染されていないことを検出することが、検出された攻撃に対する修正を使用してアクティブコンテナを構成することに基づく、検出すること、もしくは、(ii)攻撃が止んだことを検出すること、またはその両方に基づいて、連続的に除去することによりアクティブコンテナプールからアクティブコンテナが除去されるレートを減少してもよい。
【0073】
いくつかの実施形態では、プロセスは、さらに、除去されるアクティブコンテナのグレースフルシャットダウンを実行することを含んでもよく、グレースフルシャットダウンは、除去されるアクティブコンテナの状態を保存することを含み、除去されるアクティブコンテナを置き換えるためにデプロイされた予備コンテナは、除去されたアクティブコンテナの保存された状態を用いてワークロードの処理を再開させる。
【0074】
図4は、予備コンテナプールに新しいコンテナをプロビジョンするレートを決定するための例示的なプロセスを示す。決定することは、汚染までの時間、ワークロードをサービスする同時アクティブコンテナの総数および予備コンテナプールに新しいコンテナをスピンアップおよびプロビジョンするための時間量に基づいてもよい。よって、プロセスは、これらの値を、Y、XおよびZとしてそれぞれ取得する(320)。プロセスは、次いで、Z/Y*X=各Zの期間内にプロビジョンするコンテナの数としてレートを決定する(322)。
【0075】
図5は、アクティブコンテナプールからワークロードをサービスしているアクティブコンテナを連続的に除去すると同時に予備コンテナをアクティブコンテナプールにデプロイすること(310)の一部として実行される例示的な処理を示す。プロセスは、準備/予備コンテナプールにプロビジョンされたコンテナの数を監視する(330)。プロセスは、予備コンテナプールにおける予備コンテナの数がその時点で閾値に達するか否かを判定する(332)。一実施形態において、閾値は、アクティブコンテナプールにおける時点でのアクティブコンテナの数に基づく。予備コンテナプールにおける予備コンテナの数がその時点で閾値に達したことに基づいて(332,YES)、プロセスは、決定されたレートで予備コンテナプールへ新しいコンテナをプロビジョニングすることを一時的に停止させる。プロセスは、334から330へ戻り、予備コンテナの数の監視を継続する。332で、予備コンテナの数が閾値にあるか、または、閾値を超える(the number of reserve containers is at or above the threshold)と判断された場合(332,NO)、プロセスは、予備コンテナプールにおける予備コンテナの数が、アクティブコンテナプールにおけるアクティブコンテナの数と等しいかどうかを判定する(366)。そうであれば(336,Y)、プロセスは、決定された速度で、新しいコンテナを予備コンテナプールにプロビジョニングすることを再開する。338から、または336で予備コンテナの数がアクティブコンテナの数に等しくなるまで減少していないと判断された場合(336,N)は、プロセスは、330に戻って、監視を継続する。
【0076】
様々な実施例が提供されるが、特許請求の範囲から逸脱することなく変更が可能である。
【0077】
本明細書で説明される方法は、1または複数のコンピュータシステムによって単独でまたは共同的に実行されてもよい。
図6は、本明細書に説明される側面を組み込みもしくは使用し、またはその両方を行うための、そのようなコンピュータシステムおよび関連するデバイスの一例を示す。コンピュータシステムは、本明細書においては、データ処理デバイス/システム、コンピューティングデバイス/システム/ノードまたは単にコンピュータと参照される可能性がある。コンピュータシステムは、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション(アメリカ合衆国ニューヨーク州アーモンク)またはインテル・コーポレーション(アメリカ合衆国カリフォルニア州サンタクララ)によって提供されるような、様々なシステムアーキテクチャもしくは命令セットアーキテクチャまたはその両方のうちの1つまたは複数に基づいてもよい。
【0078】
図6は、外部デバイス(複数可)412と通信するコンピュータシステム400を示す。コンピュータシステム400は、1または複数のプロセッサ(複数可)402、例えば中央処理ユニット(CPU,複数可)を含む。プロセッサは、キャッシュまたはメインメモリのようなロケーションからプログラム命令をフェッチし、プログラム命令をデコードし、およびプログラム命令を実行し、命令実行のためにメモリにアクセスし、および実行された命令の結果を書き込む機能コンポーネントのような、命令の実行に使用される機能コンポーネントを含む。プロセッサ402は、また、1または複数の機能コンポーネントによって使用されるレジスタ(複数可)を含んでもよい。コンピュータシステム400は、また、メモリ404と、入出力(I/O)デバイス408と、I/Oインタフェース410とを含み、これらは、1または複数のバスもしくは他の接続またはその両方を介して、プロセッサ(複数可)402に結合されてもよい。バス接続は、いくつかのタイプのバス構造のうちの1または複数を表し、いくつかのタイプのバス構造は、様々なバスアーキテクチャの任意のものを使用する、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポートおよびプロセッサまたはローカルバスを含む。例として、特に限定されるものではないが、このようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバスおよびペリフェラル・コンポーネント・インターコネクト(PCI)バスが含まれる。
【0079】
メモリ404は、例として、プログラム命令の実行に使用されるメインメモリまたはシステムメモリ(例えば、ランダムアクセスメモリ)、ハードドライブ(複数可)、フラッシュ媒体または光学媒体のようなストレージデバイス(複数可)もしくはキャッシュメモリを含んでもよい。メモリ404は、例えば、共有キャッシュのようなキャッシュを含んでもよく、共有キャッシュは、プロセッサ(複数可)402のローカルキャッシュ(例えば、L1キャッシュ、L2キャッシュなどを含む)に結合されてもよい。加えて、メモリ404は、1または複数のプロセッサによって実行される場合に、本明細書で説明される実施形態の機能を実行するように構成された、プログラムモジュール、命令、コードなどのセット(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品であってもよく、または含んでもよい。
【0080】
メモリ404は、オペレーティングシステム405、および、本明細書で説明される側面を実行するために実行する1または複数のコンピュータプログラム/アプリケーションのような他のコンピュータプログラム406を格納してもよい。具体的には、プログラム/アプリケーションは、本明細書で説明される側面の実施形態の機能を実行するように構成され得るコンピュータ可読プログラム命令を含んでもよい。
【0081】
I/Oデバイス408の例には、これらに限定されるものではないが、マイクロフォン、スピーカ、グローバルポジショニングシステム(GPS)デバイス、カメラ、照明、加速度計、ジャイロスコープ、磁力計、光、近接、心拍、身体もしくは周囲またはその両方の温度、血圧、もしくは皮膚抵抗またはこれらの組み合わせを感知するよう構成されたセンサデバイス、ならびに活動モニタが含まれる。I/Oデバイスは、図示するようにコンピュータシステムに組み込まれてもよいが、いくつかの実施形態では、I/Oデバイスは、1または複数のI/Oインタフェース410を介してコンピュータシステムに結合された外部デバイス(412)と見なされてもよい。
【0082】
コンピュータシステム400は、1または複数のI/Oインタフェース410を介して1または複数の外部デバイス412と通信してもよい。例示の外部デバイスは、キーボード、ポインティングデバイス、ディスプレイもしくはユーザがコンピュータシステム400と対話することを可能にする任意の他のデバイスまたはその組み合わせを含む。他の例示的な外部デバイスは、コンピュータシステム400が1または複数の他のコンピューティングシステムまたはプリンタのような周辺デバイスと通信することを可能にする任意のデバイスを含む。ネットワークインタフェース/アダプタは、コンピュータシステム400を、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)もしくは公衆ネットワーク(例えば、インターネット)またはその組み合わせのような1または複数のネットワークと通信させるための例示的なI/Oインタフェースであり、他のコンピューティングデバイスまたはシステム、ストレージデバイスなどと通信を提供する。イーサネットベース(例えば、Wi-Fi(登録商標))のインタフェースおよびBLUETOOTH(登録商標,BLUETOOTHは、アメリカ合衆国ワシントン州カークランドのBluetooth SIG,Inc.の登録商標である)アダプタは、コンピュータシステムで使用される現在利用可能なタイプのネットワークアダプタの単なる例である。
【0083】
I/Oインタフェース410と外部デバイス412との間の通信は、イーサネットをベースとする有線または無線接続のような有線もしくは無線またはその両方の通信リンク(複数可)411を介して起こり得る。無線接続の例には、セルラー、Wi-Fi(登録商標)、Bluetooth(登録商標)、近接ベース、近接場または他のタイプの無線接続が含まれる。より一般的には、通信リンク(複数可)411は、データを通信するための任意の適切な無線もしくは有線またはその両方の通信リンク(複数可)であってもよい。
【0084】
特定の外部デバイス(複数可)412は、1または複数のプログラム、1または複数のコンピュータ可読プログラム命令もしくはデータまたはその組み合わせを格納し得る、1または複数のデータストレージデバイスを含んでもよい。コンピュータシステム400は、着脱可能な揮発性/不揮発性のコンピュータシステム記憶媒体を含むかもしくは結合され、(例えば、コンピュータシステムの外部デバイスとして)通信するか、またはその両方であってもよい。例えば、それは、取り外し可能な不揮発性磁気媒体(典型的には、"ハードドライブ"と参照される。)、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(登録商標)ディスク」)に読み書きするための磁気ディスクドライブ、もしくはCD-ROM、DVD-ROMまたは他の光学媒体のような取り外し可能な不揮発性光ディスクに読み書きするための光ディスクドライブを含むか、もしくは結合されるか、またはその両方であってもよい。
【0085】
コンピュータシステム(400)は、多数の他の汎用または特定目的のコンピューティングシステム環境または構成で動作することができる。コンピュータシステム400は、様々な形態をとってもよく、これらのうちのよく知られた例は、これらに限定されるものではないが、パーソナルコンピュータ(PC)システム(複数可)、メッセージサーバ(複数可)のようなサーバコンピュータシステム(複数可)、シンクライアント(複数可)、シッククライアント(複数可)、ワークステーション(複数可)、ラップトップ(複数可)、ハンドヘルドデバイス(複数可)、スマートフォン(複数可)、タブレット(複数可)やウエアラブルデバイス(複数可)などのモバイルデバイス(複数可)/システム(複数可)、マルチプロセッサシステム(複数可)、マイクロプロセッサベースのシステム(複数可)、電話デバイス(複数可)、ネットワーク機器(複数可)(例えば、エッジアプライアンス(複数可)、仮想化デバイス(複数可)、ストレージコントローラ(複数可)、セットトップボックス(複数可)、プログラマブルコンシューマエレクトロニクス(複数可)、ネットワークPC(複数可)、ミニコンピュータシステム(複数可)、メインフレームコンピュータシステム(複数可)、および、上記システムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境(複数可)などを含む。
【0086】
この開示は、クラウドコンピューティングについての詳細な説明を含むが、本明細書で詳述される教示の実装は、クラウドコンピューティング環境に限定されないことに理解されたい。むしろ、本発明の実施形態は、現時点で知られた、またはこれから開発される他の任意のタイプのコンピューティング環境と併せて実装可能である。
【0087】
クラウドコンピューティングは、最小の管理労力またはサービスプロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールへの便利なオンデマンドのネットワークアクセスを可能とする、サービス配布のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデルおよび少なくとも4つのデプロイメントモデルを含み得る。
【0088】
特性は、以下の通りである。
【0089】
オンデマンド・セルフサービス:クラウドコンシューマは、サービスプロバイダとの人的な対話を必要とせずに自動的に必要なだけ、サーバ時間およびネットワークストレージなどのコンピュータ能力を一方的にプロビジョニングすることができる。
【0090】
広帯域ネットワークアクセス:能力は、ネットワーク越しに利用可能であり、異種シンクライアントまたはシッククライアントプラットフォーム(例えば、モバイルフォン、ラップトップ、PDA)による使用を促進する標準的なメカニズムを介して、アクセスされる。
【0091】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを用いて複数のコンシューマに提供するためにプールされ、様々な物理的および仮想的リソースが需要に従って動的に割り当てられ、また、再割り当てられる。コンシューマは、一般的に、提供されるリソースの正確な場所を管理したり、知識を有したりせず、しかし、より高度な抽象レベル(例えば国、州、またはデータセンタ)にて場所を指定することが可能であるという意味で、場所の独立感がある。
【0092】
迅速な弾力性:能力は、迅速かつ柔軟に、いくつかの場合では自動的に、プロビジョニングされて素早くスケールアウトすることができ、また、迅速にリリースされて素早くスケールインすることができる。コンシューマにとって、プロビジョニング利用可能な能力は、しばしば外面的には無制限のように見え、任意の時間に任意の量を購入することができる。
【0093】
測量されたサービス:クラウドシステムは、サービスのタイプにとって適切なある抽象レベル(例えば、ストレージ、処理、帯域幅、アクティブユーザ数)での計量能力を利用することによって、自動的にリソース使用を制御し、また最適化する。リソース使用量は、監視され、制御されおよび報告されて、利用サービスのプロバイダおよびコンシューマの双方に対する透明性を提供する。
【0094】
サービスモデルは、以下の通りである。
【0095】
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えばウェブベースの電子メール)などのシンクライアントインタフェースを介して様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、または、限定されたユーザ固有のアプリケーション構成設定の潜在的な例外を除いて個々のアプリケーション能力すらも含む下層のインフラストラクチャを管理または制御しない。
【0096】
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、コンシューマ作成または取得のアプリケーションをクラウドインフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティングシステムまたはストレージを含む下層のクラウドインフラストラクチャを管理または制御しないが、デプロイされたアプリケーションおよび場合によってはアプリケーションホスティング環境の構成への制御を有する。
【0097】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、コンシューマが、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアをデプロイし、稼働させることができる他の基本的なコンピューティングリソースを提供することである。コンシューマは、下層のクラウドインフラストラクチャを管理または制御しないが、オペレーティングシステム、ストレージ、デプロイされたアプリケーションに対する制御、および、場合によっては、選択したネットワーキングコンポーネント(例えば、ホストファイアウォール)の限定された制御を有する。
【0098】
デプロイメントモデルは、以下の通りである。
【0099】
プライベートクラウド:クラウドインフラストラクチャは、1つの組織のためだけに使用される。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
【0100】
コミュニティクラウド:クラウドインフラストラクチャは、いくつかの組織により共有され、共通の懸念(例えば、ミッション、セキュリティ要件、ポリシーおよびコンプライアンスに関する考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者によって管理されてもよく、オンプレミスまたはオフプレミスが存在し得る。
【0101】
パブリッククラウド:クラウドインフラストラクチャは、一般公衆、または、大きな業界団体が利用可能であり、クラウドサービスを販売する組織によって所有される。
【0102】
ハイブリッドクラウド:クラウドインフラストラクチャは、2以上のクラウド(プライベート、コミュニティまたはパブリック)の混成であり、これらのクラウドは、固有のエンティティのままであるが、しかし、データおよびアプリケーションのポータビリティを可能とする標準化されたまたは独自の技術(例えばクラウド間の負荷分散のためのクラウドバースティング)によって結合される。
【0103】
クラウドコンピューティング環境は、ステートレス性、低結合、モジュール性および意味論的な相互運用性に重点を置いたサービス指向である。クラウドコンピューティングの核心は、相互接続された複数のノードのネットワークを含むインフラストラクチャである。
【0104】
ここで、
図7を参照すると、例示的なクラウドコンピューティング環境50が示されている。図示するように、クラウドコンピューティング環境50は、1以上のクラウドコンピューティングノード10を含み、これと、例えば、PDAまたは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54Cもしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなどの、クラウドコンシューマによって使用されるローカルコンピューティングデバイスが通信してもよい。ノード10は、互いに通信してもよい。これらは、プライベート、コミュニティ、パブリックもしくはハイブリッドクラウドなど上述したような、またはこれらの組み合わせなどの1以上のネットワークにおいて、物理的にまたは仮想的にグループ化(図示しない)されてもよい。これは、クラウドコンピューティング環境50が、インフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせをサービスとして提供することを可能とし、これらについては、クラウドコンシューマは、リソースをローカルコンピューティングデバイス上で維持する必要がない。
図7に示されるコンピューティングデバイス54A~54Nのタイプは、説明する目的のみであり、コンピューティングノード10およびクラウドコンピューティング環境50が、任意のタイプのネットワーク、ネットワークアドレス可能な接続(例えば、ウェブブラウザを使用して)またはこれらの両方を介して、任意のタイプのコンピュータ化されたデバイスと通信することができることが理解される。
【0105】
ここで、
図8を参照すると、クラウドコンピューティング環境50(
図7)によって提供される機能抽象レイヤのセットが示される。
図8に示すコンポーネント、レイヤおよび機能は、説明する目的のみであり、本発明の実施形態は、これらに限定されないことが事前に理解される。図示するように、以下のレイヤおよび対応する機能が提供される。
【0106】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、RISC(縮約命令セットコンピュータ)アーキテクチャに基づくサーバ62、サーバ63,ブレードサーバ64、ストレージデバイス65およびネットワークおよびネットワーキングコンポーネント66を含む。いくつかの実施形態においては、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0107】
仮想化レイヤ70は、抽象化レイヤを提供し、そこから仮想化サーバ71、仮想化ストレージ72、仮想プライベートネットワークを含む仮想化ネットワーク73、仮想化アプリケーションおよびオペレーティングシステム74、および仮想クライアント75などの仮想化エンティティの例が提供される。
【0108】
一例においては、管理レイヤ80は、以下に説明する機能を提供してもよい。リソースプロビショニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を提供する。メータリングおよびプライシング82は、リソースがクラウドコンピューティング環境内で利用されるコストの追跡およびこれらのソースの消費に対する請求またはインボイスの送付を提供する。一例においては、これらのリソースは、アプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、クラウドコンシューマおよびタスクについての本人確認、並びに、データおよび他のリソースに対する保護を提供する。ユーザポータル83は、コンシューマおよびシステム管理者に対しクラウドコンピューティング環境へのアクセスを提供する。サービスレベルマネジメント84は、要求されるサービスレベルを満たすようにクラウドコンピューティングリソースの割り当ておよび管理を提供する。サービスレベル合意(SLA)の計画と履行85は、SLAに従って、将来の要求が予期されるクラウドコンピューティグリソースの事前配置および調達を提供する。
【0109】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用される機能性の例を提供する。ワークロードおよびこのレイヤから提供される機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データアナリティクス処理94、トランザクション処理95、コンテナ脅威緩和96が含まれる。
【0110】
本発明は、任意の統合の可能な技術的な詳細のレベルでのシステム、方法もしくはコンピュータプログラム製品またはこれらの組み合わせであってよい。コンピュータプログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含んでもよい。
【0111】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイスまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例示の例示列挙としては、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリースティック、フロッピーディスク(登録商標)、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
【0112】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスに、または、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワークを介して外部コンピュータまたは外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0113】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソースコードあるいはオブジェクトコードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの手続型言語を含む。コンピュータ可読プログラム命令は、スタンドアローンのソフトウェアパッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネットサービスプロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む。
【0114】
本発明の側面は、本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。
【0115】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置を介して実行される命令が、フローチャート図もしくはブロックまたはその両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャートもしくはブロックまたはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
【0116】
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブルデータ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブルデータ処理装置または他のデバイス上で実行される命令が、フローチャートもしくはブロックまたはその両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
【0117】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能(複数可)を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたは命令の部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性がある。例えば、連続して示される2つのブロックは、実際には、同時に、実質的に同時に、または部分的にまたは全体的に一時的に重なった仕方で、一つのステップとして完了されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはその両方の各ブロックおよびブロック図もしくはフローチャート図またはその両方の複数のブロックの組み合わせが、特定の機能または作用を実行し、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実施する、特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
【0118】
上記に加えて、1または複数の側面は、顧客環境の管理を提供するサービスプロバイダによって提供され、申し出でされ、デプロイされ、管理またはサービスされてもよい。例えば、サービスプロバイダは、1または複数の顧客のための1または複数の側面を実行するコンピュータコードもしくはコンピュータインフラストラクチャまたはその両方を作成し、維持し、サポートするなどをすることができる。その見返りに、サービスプロバイダは、例えば、サブスクリプションもしくは料金契約またはその両方の下で、顧客からの支払いを受け取ることができる。加えて、または代替的に、サービスプロバイダは、1または複数の第三者に対する広告コンテンツの販売から支払いを受け取ることができる。
【0119】
一側面においては、1または複数の実施形態を実行するためにアプリケーションがデプロイされてもよい。一例として、アプリケーションをデプロイすることは、1または複数の実施形態を実行するように動作可能なコンピュータインフラストラクチャを提供することを含む。
【0120】
さらなる側面として、コンピューティングシステムにコンピュータ可読コードを統合することを含む、コンピューティングインフラストラクチャがデプロイされてもよく、ここでは、コンピュータシステムと組み合わせたコードは、1または複数の実施形態を実行することが可能である。
【0121】
さらに別の側面として、コンピュータ可読コードをコンピュータシステムに統合することを含むコンピューティングインフラストラクチャを統合するための処理が提供されてもよい。コンピュータシステムは、コンピュータ可読媒体を含み、コンピュータ可読媒体は、1または複数の実施形態を含む。コンピュータシステムと組み合わせたコードは、1または複数の実施形態を実行することが可能である。
【0122】
以上、様々な実施形態が説明されるが、これらは例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境が使用されて、1または複数の実施形態を組み込みかつ使用することができる。
【0123】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的とし、限定することを意図するものではない。本明細書で使用されるように、単数形「a」、「an」および「the」は、文脈が明確に示さない限り、複数形も含むことを意図している。さらに、用語「含む(comprise)」もしくは「含んでいる(comprising)」またはこれらの両方は、この明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素もしくはコンポーネントまたはその組み合わせの存在を指定するが、1以上の他の特徴、整数、ステップ、動作、要素、コンポーネントもしくはこれらのグループまたはその組み合わせの存在または追加を除外するものではないことを理解されたい。
【0124】
対応する構造、材料、行為および特許請求の範囲における全ての手段またはステッププラスファンクション要素の等価物は、もしあれば、具体的に特許請求される他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料または行為を含むことを意図している。1または複数の実施形態の説明は、例示および説明のために提示されたが、網羅的であることまたは開示された形態に限定されることを意図するものではない。当業者にとって多くの修正および変形が明らかであろう。本実施形態は、種々の側面および実用的な用途を最もよく説明するために選択され記述されたものであり、当業者は、企図された特定の使用に適するように様々な変更を伴う様々な実施形態を理解することを可能にする。
【国際調査報告】