(57)【要約】      （修正有）【課題】コンテナに基づく仮想化システムの安全を確保する。【解決手段】ユーザモードでコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視する１０１。プロセス起動の動作が検出された場合、カーネルモードで信号処理動作をキャプチャし、前記プロセスにおいて未処理信号が存在するか否かを判断する１０２。未処理信号が存在する場合、未処理信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ未処理信号の信号番号を第１の関数へ転送する１０３。第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャする１０４。【選択図】図１
2017076369.tif 000002
【特許請求の範囲】
【請求項１】
ユーザモードで、コンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するステップと、
前記プロセス起動の動作が検出された場合、カーネルモードで、信号処理動作をキャプチャするステップを実行するステップと、を含み、
前記の信号処理動作をキャプチャするステップにおいては、
前記プロセスにおいて未処理信号が存在するか否かを判断するステップと、
前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するステップと、
前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするステップと
を含むことを特徴とするコンテナに基づく仮想化システム用動作キャプチャ方法。
【請求項２】
前記プロセス起動の動作が検出された場合、システム呼び出し動作をキャプチャするステップを実行するステップをさらに含み、
前記のシステム呼び出し動作をキャプチャするステップにおいては、
カーネルモードで、固有モデルレジスタを読み出すことにより、システムによって呼び出されたエントリアドレスを取得するステップと、
ユーザモードで、前記エントリアドレスにおける、システムによって呼び出されたエントリ関数のアドレスをカストマイズの第２の関数のアドレスで代替するステップと、
前記第２の関数が呼び出された場合、前記第２の関数を呼び出すシステム呼び出し動作をキャプチャするステップと
を含むことを特徴とする請求項１に記載方法。
【請求項３】
前記のコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するステップにおいては、
前記プロセスが仮想化システムのホストにおける中央処理装置に呼び出されて実行されることに対応した動作を監視するステップ
を含むことを特徴とする請求項１または２に記載方法。
【請求項４】
前記の前記信号処理動作をキャプチャするステップにおいては、
前記プロセスにおいて未処理信号が存在するか否かを判断する前に、ユーザモードで、前記第１の関数のエントリアドレスを、前記仮想化システムの中のホストのカーネルに転送し、且つカーネルモードで、前記第１の関数のエントリアドレスをカーネル空間に保存するステップ
をさらに含むことを特徴とする請求項１または２に記載方法。
【請求項５】
前記の前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプするステップにおいては、
前記カーネル空間において記憶された前記第１の関数のエントリアドレスを取得するステップと、
前記信号に指示された実行命令を前記第１の関数のエントリアドレスにジャンプするステップと
を含むことを特徴とする請求項４に記載方法。
【請求項６】
請求項１〜５のいずれか１項に記載の方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャするステップと、
キャプチャされた前記動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得するステップと、
前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行するステップと
を含んでおり、
ここで、前記カーネルへのアクセスする動作は、信号処理動作、またはシステム呼び出し動作である
ことを特徴とするコンテナに基づく仮想化システム用安全制御方法。
【請求項７】
前記のコンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャするステップにおいては、
請求項２〜５のいずれか１項に記載の方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャするステップを含み、
且つ、前記安全制御方法は、
キャプチャされた前記動作がシステム呼び出し動作である場合、キャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全か否かを判断するステップと、
前記システム呼び出し動作が安全でない場合、前記システム呼び出し動作を阻止するステップと
をさらに含むことを特徴とする請求項６に記載の安全制御方法。
【請求項８】
前記のキャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全であるか否かを判断するステップにおいては、
予め設定された設定ファイルにより前記システム呼び出し動作が安全であるか否かを判断するステップを含み、
前記設定ファイルは、被検システム呼び出し番号および／または被保護リソースと、前記システム呼び出し番号および／または被保護リソースに関連する動作指示とを指定するために用いられる
ことを特徴とする請求項７に記載の安全制御方法。
【請求項９】
ユーザモードで、コンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するためのプロセス起動監視ユニットと、
プロセス起動監視ユニットによって前記プロセス起動の動作が検出された場合、カーネルモードで、信号処理動作をキャプチャするステップを実行するための信号処理キャプチャユニットと
を備え、
前記信号処理キャプチャユニットは、
前記プロセスにおいて未処理信号が存在するか否かを判断するための信号検出サブユニットと、
前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するための実行命令ジャンプサブユニットと、
前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするための信号処理キャプチャサブユニットと
を備えることを特徴とするコンテナに基づく仮想化システム用動作キャプチャ装置。
【請求項１０】
プロセス起動監視ユニットによって前記プロセス起動の動作が検出された場合、システム呼び出し動作をキャプチャするステップを実行するためのシステム呼び出しキャプチャユニットをさらに備え、
前記システム呼び出しキャプチャユニットは、
カーネルモードで、固有モデルレジスタを読み出すことにより、システムによって呼び出されたエントリアドレスを取得するためのシステム呼び出しエントリアドレス取得サブユニットと、    
ユーザモードで、前記エントリアドレスにおける、システムによって呼び出されたエントリ関数のアドレスをカストマイズの第２の関数のアドレスで代替するためのアドレス代替サブユニットと、
前記第２の関数が呼び出された場合、前記第２の関数を呼び出すシステム呼び出し動作をキャプチャするためのシステム呼び出しキャプチャサブユニットと
を備えることを特徴とする請求項９に記載の装置。
【請求項１１】
前記プロセス起動監視ユニットは、さらに、前記プロセスが仮想化システムのホストにおける中央処理装置に呼び出されて実行されることに対応した動作を監視するように構成される
ことを特徴とする請求項９または１０に記載の装置。
【請求項１２】
前記信号処理キャプチャユニットは、
前記プロセスにおいて未処理信号が存在するか否かを判断する前に、ユーザモードで、前記第１の関数のエントリアドレスを、前記仮想化システムの中のホストのカーネルに転送し、且つカーネルモードで、前記第１の関数のエントリアドレスをカーネル空間に保存するためのアドレス転送サブユニットをさらに含む
ことを特徴とする請求項９または１０に記載の装置。
【請求項１３】
前記実行命令ジャンプサブユニットは、
前記カーネル空間において記憶された前記第１の関数のエントリアドレスを取得するための第１の関数エントリアドレス取得モジュールと、
前記信号に指示された実行命令を前記第１の関数のエントリアドレスにジャンプする実行命令ジャンプモジュールと
を備えることを特徴とする請求項１２に記載の装置。
【請求項１４】
請求項９〜１３のいずれか１項に記載の装置により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャする動作キャプチャユニットと、
キャプチャされた前記動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得するための信号番号取得ユニットと、
前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行するための特権レベル切り替えユニットと
を備えており、
ここで、前記カーネルへのアクセスする動作は、信号処理動作、またはシステム呼び出し動作である
ことを特徴とするコンテナに基づく仮想化システム用安全制御装置。
【請求項１５】
前記動作キャプチャユニットは、さらに、請求項１０〜１３のいずれか１項に記載の装置により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャするように構成され、且つ、
前記安全制御装置は、
キャプチャされた前記動作がシステム呼び出し動作である場合、キャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全か否かを判断するための安全確定ユニットと、
前記システム呼び出し動作が安全でない場合、前記システム呼び出し動作を阻止するための動作阻止ユニットと
をさらに備えることを特徴とする請求項１４に記載の安全制御装置。
【請求項１６】
前記安全確定ユニットは、さらに、予め設定された設定ファイルにより前記システム呼び出し動作が安全であるか否かを判断するように構成され、
前記設定ファイルは、被検システム呼び出し番号および／または被保護リソースと、前記システム呼び出し番号および／または被保護リソースに関連する動作指示とを指定するために用いられる
ことを特徴とする請求項１５に記載の安全制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術分野に関し、具体的に、コンピュータの安全技術分野に関し、特に、コンテナに基づく仮想化システム用動作キャプチャ方法、安全制御方法、および装置に関する。
【背景技術】
【０００２】
仮想化とは、仮想化技術により、１つのコンピュータ（物理マシン）を複数の論理的なコンピュータ（仮想マシン）として仮想することを意味する。１つのコンピュータで同時に複数の論理的なコンピュータが実行され、各論理的なコンピュータが、異なるオペレーティングシステムを実行することができ、且つ、アプリプログラムのいずれも、互いに独立した空間において実行され、且つ互いに影響せず、したがってコンピュータの作業効率を著しく向上させる。現在、コンテナに基づく（Ｃｏｎｔａｉｎｅｒ−Ｂａｓｅｄ）仮想化技術は、最も広く用いられている仮想化技術の１つであり、それは、プロセスおよびリソースを隔離するように軽量レベルの仮想化を提供することができ、そして命令解釈機構および全仮想化の他の複雑な処理を提供する必要がない。コンテナに基づく仮想化システムは、すなわち、コンテナに基づく仮想化技術により作成された、コンテナおよびホストを含む仮想化環境である。コンテナ（Ｃｏｎｔａｉｎｅｒ）は、単一のオペレーティングシステムに管理されたリソースを孤立のグループに分けて、孤立のグループの間において、衝突のあるリソース使用要求をより良好にバランスする。従来の仮想化技術に比べて、コンテナに基づく仮想化技術の利点は、ホストと共に同じカーネルを用いることにより、性能損失が少なくなり、且つ、命令レベルの仮想を必要としないことにある。
【０００３】
しかしながら、コンテナに基づく仮想化システムにおいては、コンテナがホストカーネルへと直接にアクセスすることができるため、コンテナにおけるプロセスがホストカーネルを侵害してホストの制御権を取得することが非常に容易であり、したがって、ホスト全体およびその他のコンテナの安全を脅かすことが可能になる。コンテナに基づく仮想化システムの安全を確保するために、コンテナにおけるプロセスのホストカーネルへのアクセスする動作をキャプチャし、且つキャプチャされた動作に対する相応の処理を必要とするが、今までに、コンテナにおけるプロセスのホストカーネルへのアクセスする動作に対してキャプチャすることが実現できる方法はまだない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記背景技術に記載された技術的課題を解決するために、コンテナに基づく仮想化システム用動作キャプチャ方法、安全制御方法、および装置を提供する目的とする。
【課題を解決するための手段】
【０００５】
第１の態様において、本発明は、コンテナに基づく仮想化システム用動作キャプチャ方法を提供し、この方法は、ユーザモードでコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するステップと、
前記プロセス起動の動作が検出された場合、カーネルモードで信号処理動作をキャプチャするステップと
を含み、
前記の信号処理動作をキャプチャするステップにおいては、
前記プロセスにおいて未処理信号が存在するか否かを判断するステップと、
前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するステップと、
前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするステップと
を含む。
【０００６】
第２の態様において、本発明は、コンテナに基づく仮想化システム用安全制御装置を提供し、この装置は、
第１の態様の前記方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャし、ここで、前記カーネルへのアクセスする動作が信号処理動作またはシステム呼出動作である動作キャプチャユニットと、
キャプチャされた動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得するための信号番号取得ユニットと、
前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行するための特権レベル切り替えユニットと
を備える。
【０００７】
第３態様において、本発明は、コンテナに基づく仮想化システム用動作キャプチャ装置を提供し、この装置は、ユーザモードでコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するためのプロセス起動監視ユニットと、プロセス起動監視ユニットによって前記プロセス起動の動作が検出された場合、カーネルモードで信号処理動作をキャプチャするステップを実行するための信号処理キャプチャユニットとを備え、
前記信号処理キャプチャユニットは、
前記プロセスにおいて未処理信号が存在するか否かを判断するための信号検出サブユニットと、
前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するための実行命令ジャンプサブユニットと、
前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするための信号処理キャプチャサブユニットと
を備える。
【０００８】
第４の態様において、本発明は、コンテナに基づく仮想化システム用安全制御装置を提供し、この装置は、
第１の態様の前記方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャし、ここで、前記カーネルへのアクセスする動作が信号処理動作またはシステム呼び出し動作である動作キャプチャユニットと、
キャプチャされた前記動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得するための信号番号取得ユニットと、
前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行するための特権レベル切り替えユニットと
を備える。
【発明の効果】
【０００９】
本発明により提供されたコンテナに基づく仮想化システム用動作キャプチャ方法、安全制御方法および装置は、プロセスにおける未処理信号に指示された実行命令を、カストマイズの第１の関数のエントリアドレスにジャンプし、したがって、カーネルをアクセス可能な信号処理動作をキャプチャした上で、コンテナにおけるプロセスのホストカーネルへのアクセスする動作に対してキャプチャすることが実現され、そして後続にキャプチャされた動作を安全に制御し、システムの安全を確保する。
【００１０】
以下の図面を参照しながら非限定的な実施例を詳細に説明することにより、本発明の他の特徴、目的および利点はより明らかになる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係るコンテナに基づく仮想化システム用動作キャプチャ方法の一実施例を示すフローチャートである。
【図２】本発明に係るコンテナに基づく仮想化システム用動作キャプチャ方法の他の一実施例を示すフローチャートである。
【図３】本発明に係るコンテナに基づく仮想化システム用安全制御方法の一実施例を示すフローチャートである。
【図４】本発明に係るコンテナに基づく仮想化システム用動作キャプチャ装置の一実施例を示す構造模式図である。
【図５】本発明に係るコンテナに基づく仮想化システム用安全制御装置の一実施例を示す構造模式図である。
【図６】本発明の実施例を実現するためのコンテナに基づく仮想化システムに所在する物理マシンに適用されるコンピュータシステムを示す構造模式図である。
【発明を実施するための形態】
【００１２】
以下、図面および実施例を参照しながら、本発明をさらに詳しく説明する。ただし、ここで説明されている具体的な実施例は、係る発明を解釈するためのものに過ぎず、本発明の範囲を制限するものでないことが理解されるべきである。なお、説明の便宜上、図面に本発明と関連する部分のみが示されている。
ただし、衝突がない限り、本願における実施例及び実施例における特徴は互いに組み合せてもよい。以下、図面を参照しながら実施例に基づいて本願を詳しく説明する。
【００１３】
図１は、本発明に係るコンテナに基づく仮想化システム用動作キャプチャ方法の一実施例のフロー１００を示す。
図１に示すように、本実施例のコンテナに基づく仮想化システム用動作キャプチャ方法は、次のステップ１０１〜１０４を含む。
ステップ１０１：  ユーザモードでコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視する。
本実施例において、ステップ１０１は、前記プロセスが仮想化システムのホストにおける中央処理装置に呼び出されて実行されることに対応した動作を監視するステップを含んでもよい。ＣＰＵ（中央処理装置）仮想化技術により、プロセスが実行する時にまずカーネルにおける１つの仮想ＣＰＵを使用するため、本ステップにおいて、上記プロセス起動の動作に対する監視を実現するように、仮想ＣＰＵの処理に監視処理を増加することができる。
【００１４】
ステップ１０２：上記プロセス起動の動作が監視された場合、カーネルモードで、上記プロセスにおいて未処理信号が存在するか否かを判断する。
本実施例において、上記プロセス起動の動作が監視された後に、カーネルモードで、上記プロセスのｔａｓｋ＿ｓｔｒｕｃｔ構造（Ｌｉｎｕｘオペレーティングシステムに用いられるプロセス記述子）を取得することができ、当該ｔａｓｋ＿ｓｔｒｕｃｔ構造により上記プロセスにおいて未処理信号が存在するか否かを判断することができる。
【００１５】
ステップ１０３：前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送する。
本実施例において、ステップ１０２の前に、ユーザモードで、前記第１の関数のエントリアドレスを上記仮想化システムにおけるホストカーネルに転送し、且つカーネルモードで、前記第１の関数のエントリアドレスをカーネル空間に保存することができる。それに応じて、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプする上記ステップにおいては、前記カーネル空間において記憶された前記第１の関数のエントリアドレスを取得するステップと、前記信号に指示された実行命令を前記第１の関数のエントリアドレスにジャンプするステップと、を含んでもよい。
【００１６】
ステップ１０４：前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャする。
各信号は、いずれもシステムのヘッダファイルで定義されている信号番号と呼ばれる正の整定数の１つに対応する。本実施例において、ステップ１０３において前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するため、第１の関数が呼び出されて実行された場合、第１の関数において転送された信号番号を取得することができ、そして当該信号番号に対応した信号処理動作をキャプチャした。
【００１７】
本実施例により提供されたコンテナに基づく仮想化システム用動作キャプチャ方法は、プロセスにおける未処理信号に指示された実行命令を、カストマイズの第１の関数のエントリアドレスにジャンプし、したがって、カーネルをアクセス可能な信号処理動作をキャプチャした上で、コンテナにおけるプロセスのホストカーネルへのアクセスする動作に対してキャプチャすることが実現された。
【００１８】
続いて、本発明に係るコンテナに基づく仮想化システム用動作キャプチャ方法の一実施例のフロー２００を示した図２を参照する。
図２に示すように、本実施例のコンテナに基づく仮想化システム用動作キャプチャ方法は、次のステップ２０１〜２０３を含む。
【００１９】
ステップ２０１：ユーザモードでコンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視する。
本実施例において、ステップ２０１の具体的な処理は、前記図１に対応した実施例におけるステップ１０１の詳細な説明を参照してもよく、ここで具体的な説明は省略する。
【００２０】
ステップ２０２：前記プロセス起動の動作が監視された場合、カーネルモードで信号処理動作をキャプチャするステップを実行する。
その中で、前記信号処理動作をキャプチャするステップは、下記のステップ２０２１〜２０２３を含み、
ステップ２０２１：前記プロセスにおいて未処理信号が存在するか否かを判断する。
ステップ２０２２：前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送する。
ステップ２０２３：前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャする。
本実施例において、ステップ２０２１、ステップ２０２２、およびステップ２０２３の具体的な処理は、それぞれ前記図１に対応した実施例におけるステップ１０２、ステップ１０３、およびステップ１０４の詳細な説明を参照してもよく、ここで具体的な説明は省略する。
【００２１】
ステップ２０３：前記プロセス起動の動作が監視された場合、システム呼び出し動作をキャプチャするステップを実行する。
その中で、前記システム呼び出し動作をキャプチャするステップにおいては、下記のステップ２０３１〜２０３３を含む。
【００２２】
ステップ２０３１：カーネルモードで、モデル固有レジスタ（Ｍｏｄｅｌ  Ｓｐｅｃｉｆｉｃ  Ｒｅｇｉｓｔｅｒ：ＭＳＲ）を読み出すことにより、システムによって呼び出されたエントリアドレスを取得する。
本実施例において、ユーザモードで前記プロセス起動の動作が監視された場合、ユーザモードでカストマイズの命令（例えば、ＧＥＴ＿ＳＹＳＣＡＬＬ）をカーネルモードにおける１つの所定のインターフェースへ送信することができる。カーネルモードの前記インターフェースが当該命令を受信した後に、ＭＳＲ＿ＬＳＴＡＲ命令によりモデル固有レジスタを読み出してシステムによって呼び出されたエントリアドレスを取得することができる。
【００２３】
ステップ２０３２：ユーザモードで、前記エントリアドレスにおける、システムによって呼び出されたエントリ関数のアドレスをカストマイズの第２の関数のアドレスで代替する。
本実施例において、当該ステップは、前記プロセスのアドレス空間において実行されることができ、ステップ２０２１により取得された、システムによって呼び出されたエントリアドレスに記憶されたデータは、システムによって呼び出されたエントリ関数のアドレスであり、前記エントリアドレスに固有のデータをカストマイズの第２の関数のアドレスに変更し、このようにして前記プロセスがシステム呼び出し動作を行う場合、関連するエントリパラメータおよびシステム呼び出し番号を、第２の関数において取得することができる。
【００２４】
ステップ２０３３：前記第２の関数が呼び出された場合、前記第２の関数を呼び出すシステム呼び出し動作をキャプチャする。
本実施例において、ステップ２０３２により、前記プロセスがシステム呼び出し動作を行う場合、第２の関数において関連するエントリパラメータおよびシステム呼び出し番号を取得することが実現された。このため、第２の関数が呼び出されて実行された場合、当該システム呼び出し番号に対応したシステム呼び出し動作をキャプチャする。
【００２５】
説明すべきことは、ステップ２０３は、ステップ２０２と同時に実行されるてもよく、本実施例には、それらの実行される順番を限定しない。
【００２６】
図２から分かるように、図１に対応した実施例に比べて、本実施例における動作キャプチャ方法のフロー２００には、システム呼び出し動作をキャプチャするステップが増加された。これにより、本実施例に記載の技術案では、コンテナにおけるプロセスのカーネルへのアクセスする動作を、より全般的にキャプチャすることができ、したがって後続にキャプチャされた動作に対して一定の安全対策を施した後に、コンテナに基づく仮想化システムの安全をより全般的に確保することができる。
【００２７】
以下、本発明に係るコンテナに基づく仮想化システム用安全制御方法の一実施例のフロー３００を示す図３を参照する。
図３に示すように、本実施例のコンテナに基づく仮想化システム用安全制御方法は、次のステップ３０１〜３０３を含む。
【００２８】
ステップ３０１：図１または図２に対応した実施例に係る動作キャプチャ方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャし、前記カーネルへのアクセスする動作は、信号処理動作、またはシステム呼び出し動作である。
本実施例において、ステップ３０１の具体的な処理は、前記図１に対応した実施例におけるステップ１０１の詳細な説明を参照してもよく、ここでの具体的な説明は省略する。
【００２９】
ステップ３０２：キャプチャされた前記動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得する。
本実施例において、当該ステップは、図１または図２に対応した実施例における第１の関数により実行されることができ、ステップ３０１において未処理信号の信号番号を第１の関数へ転送したため、第１の関数において前記信号処理動作に対応した信号番号を得ることができる。
【００３０】
ステップ３０３：前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行する。
【００３１】
中央処理装置の特権レベルＲｉｎｇ３は、現在の権限が一番低い特権レベルであり、Ｒｉｎｇ３で実行されたプログラムは、相対的な安全である命令しか実行できなく、Ｒｉｎｇ３レベルより高い、相対的に危険な命令（例えば、Ｒｉｎｇ０命令）を実行することができないため、本実施例において、前記信号番号に対応した信号に指示された実行命令を中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行し、キャプチャされた信号処理動作に対応した実行命令に安全モードで実行させ、コンテナに基づく仮想化システムの安全性を向上した。
【００３２】
本実施例のいくつかの実現形態において、ステップ３０１は、図２に対応した実施例の動作キャプチャ方法により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャすることができる。また、本実施例に係る安全制御方法は、
キャプチャされた前記動作がシステム呼び出し動作である場合、キャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全か否かを判断するステップと、前記システム呼び出し動作が安全でない場合、前記システム呼び出し動作を阻止するステップと、を含んでもよい。
【００３３】
その中で、キャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全か否かを判断するステップにおいては、予め設定された設定ファイルにより前記システム呼び出し動作が安全であるか否かを判断するステップを含んでもよく、前記設定ファイルは、被検システム呼び出し番号および／または被保護リソースと、前記システム呼び出し番号および／または被保護リソースに関連する動作指示とを指定するために用いられる。例えば、ある経路におけるファイルを保護しようとしており、これらのファイルに対して書込み動作が禁止される場合、設定ファイルにおいては、システム呼び出し番号がｗｒｉｔｅ（）システム呼び出しに対応したシステム呼び出し番号であり、且つエントリパラメータが当該経路を含有する時に使用する処置（例えば、当該システム呼び出しを阻止すること）を、設定することができる。
【００３４】
前記実現形態は、システム呼び出し動作に対する安全制御方法を追加したことにより、本発明の安全制御方法が、コンテナに基づく仮想化システムをより全般的に保護することができる。
【００３５】
本実施例に係るコンテナに基づく仮想化システム用安全制御方法は、キャプチャされた信号処理動作に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えして実行することにより、前記実行命令に安全モードで実行させ、危険な命令の実行を阻止し、コンテナに基づく仮想化システムの安全性を向上した。
【００３６】
さらに、前記図１に示す方法の実現形態として、本発明は、図４に示すように、コンテナに基づく仮想化システム用動作キャプチャ装置の一実施例を提供した。当該装置の実施例は、図１に示す方法の実施例に対応している。当該装置は、具体的に、コンテナに基づく仮想化システムに用いられることができる。
【００３７】
図４に示すように、本実施例の動作キャプチャ装置４００は、プロセス起動監視ユニット４０１と、信号処理キャプチャユニット４０２とを含む。その中で、プロセス起動監視ユニット４０１は、ユーザモードで、コンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視するために用いられる。信号処理キャプチャユニット４０２は、プロセス起動監視ユニットによって前記プロセス起動の動作が監視された場合、カーネルモードで、信号処理動作をキャプチャするステップを実行するために用いられる。その中で、信号処理キャプチャユニット４０２は、前記プロセスにおいて未処理信号が存在するか否かを判断するための信号検出サブユニット４０２１と、前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するための実行命令ジャンプサブユニット４０２２と、前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするための信号処理キャプチャサブユニット４０２３と、を備える。
【００３８】
本実施例において、プロセス起動監視ユニット４０１は、さらに、前記プロセスが前記仮想化システムのホストにおける中央処理装置に呼び出されて実行されることに対応した動作を監視するように構成される。プロセス起動監視ユニット４０１の具体的な処理は、図１に対応した実施例におけるステップ１０１の詳細な説明を参照してもよく、ここで具体的な説明は省略する。
【００３９】
本実施例において、実行命令ジャンプサブユニット４０２２は、前記カーネル空間に記憶された前記第１の関数のエントリアドレスを取得するための第１の関数エントリアドレス取得モジュール（図示せず）と、前記信号に指示された実行命令を前記第１の関数のエントリアドレスにジャンプする実行命令ジャンプモジュール（図示せず）とを含んでもよい。
【００４０】
本実施例において、信号検出サブユニット４０２１、実行命令ジャンプサブユニット４０２２、および信号処理キャプチャサブユニット４０２３の具体的な処理は、それぞれ図１に対応した実施例におけるステップ１０２、ステップ１０３、ステップ１０４の詳細な記載を参照してもよく、ここで具体的な説明は省略する。
【００４１】
本実施例のいくつかの実現形態において、本実施例の動作キャプチャ装置は、さらに、プロセス起動監視ユニットによって前記プロセス起動の動作が監視された場合、システム呼び出し動作をキャプチャするステップを実行するためのシステム呼び出しキャプチャユニット４０３を備えてもよい。その中で、システム呼び出しキャプチャユニット４０３は、カーネルモードで、モデル固有レジスタを読み出すことにより、システムによって呼び出されたエントリアドレスを取得するためのシステム呼び出しエントリアドレス取得サブユニット４０３１と、  ユーザモードで、前記エントリアドレスにおける、システムによって呼び出されたエントリ関数のアドレスをカストマイズの第２の関数のアドレスで代替するためのアドレス代替サブユニット４０３２と、前記第２の関数が呼び出された場合、前記第２の関数を呼び出すシステム呼び出し動作をキャプチャするためのシステム呼び出しキャプチャサブユニット４０３３と、を備える。
【００４２】
システム呼び出しエントリアドレス取得サブユニット４０３１、アドレス代替サブユニット４０３２、およびシステム呼び出しキャプチャサブユニット４０３３は、それぞれ図２に対応した実施例におけるステップ２０３１、ステップ２０３２、ステップ２０３３の詳細な記載を参照してもよく、ここで具体的な説明は省略する。
【００４３】
前記実現形態によれば、本実施例に係る動作キャプチャ方法は、コンテナにおけるプロセスのカーネルへのアクセスする動作を、より全般的にキャプチャすることができ、したがって後続にキャプチャされた動作に対して一定の安全対策を施した後に、コンテナに基づく仮想化システムの安全をより全般的に確保することができる。
【００４４】
本実施例のいくつかの実現形態において、信号処理キャプチャユニット４０２は、前記プロセスにおいて未処理信号が存在するか否かを判断する前に、ユーザモードで、前記第１の関数のエントリアドレスを、前記仮想化システムの中のホストのカーネルに転送し、且つ、カーネルモードで、前記第１の関数のエントリアドレスをカーネル空間に保存するためのアドレス転送サブユニット（図示せず）を、さらに備えてもよい。
【００４５】
本実施例により提供されたコンテナに基づく仮想化システム用動作キャプチャ装置は、命令ジャンプサブユニット４０２２を実行することにより、プロセスにおける未処理信号に指示された実行命令を、カストマイズの第１の関数のエントリアドレスにジャンプし、したがって、カーネルをアクセス可能な信号処理動作をキャプチャした上で、コンテナにおけるプロセスのホストカーネルへのアクセスする動作に対してキャプチャすることが実現された。
【００４６】
前記動作キャプチャ装置４００が、例えば、プロセッサ、メモリなどのいくつかの他の公知の構造をさらに備えてもよく、本発明の実施例を曖昧にすることを回避するために、これらの公知の構造が図４に示されていないことを、当業者は理解することができる。
【００４７】
続いて、前記図３に示す方法の実現形態として、本発明は、図５に示すように、コンテナに基づく仮想化システム用安全制御装置の一実施例を提供した。当該装置の実施例は、図３に示す方法の実施例に対応している。当該装置は、具体的に、コンテナに基づく仮想化システムに用いられることができる。
【００４８】
図５に示すように、本実施例の安全制御装置５００は、動作キャプチャユニット５０１と、信号番号取得ユニット５０２と、特権レベル切り替えユニット５０３と、を備える。その中で、動作キャプチャユニット５０１は、図４に対応した実施例で提供された装置により、コンテナに基づく仮想化システムの中のコンテナにおけるプロセスのカーネルへのアクセスする動作をキャプチャするために用いられ、ここで、前記カーネルへのアクセスする動作が信号処理動作またはシステム呼び出し動作である。信号番号取得ユニット５０２は、キャプチャされた前記動作が信号処理動作である場合、前記信号処理動作に対応した信号番号を取得するために用いられる。特権レベル切り替えユニット５０３は、前記信号番号に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えて実行するために用いられる。
【００４９】
本実施例において、動作キャプチャユニット５０１、信号番号取得ユニット５０２、および特権レベル切り替えユニット５０３は、それぞれ図３に対応した実施例におけるステップ３０１、ステップ３０２、ステップ３０３の詳細な記載を参照してもよく、ここで具体的な説明は省略する。
【００５０】
本実施例のいくつかの実現形態において、本実施例の安全制御装置は、キャプチャされた前記動作がシステム呼び出し動作である場合、キャプチャされたシステム呼び出し動作に対応したシステム呼び出し番号およびエントリパラメータに基づいて、前記システム呼び出し動作が安全か否かを判断するための安全確定ユニット５０４と、前記システム呼び出し動作が安全でない場合、前記システム呼び出し動作を阻止するための動作阻止ユニット５０５とを、さらに備える。
【００５１】
その中で、安全確定ユニット５０４は、さらに、予め設定された設定ファイルにより前記システム呼び出し動作が安全であるか否かを判断するように構成されてもよく、前記設定ファイルは、被検システム呼び出し番号および／または被保護リソースと、前記システム呼び出し番号および／または被保護リソースに関連する動作指示とを指定するために用いられる。安全確定ユニット５０４、および動作阻止ユニット５０５の具体的な処理とそれによって得られた技術的効果は、図３に対応した実施例における関連実現形態の詳細な説明を参照してもよく、ここでの具体的な説明は省略する。
【００５２】
本実施例に係るコンテナに基づく仮想化システム用安全制御装置は、特権レベル切り替えユニット５０３で、キャプチャされた信号処理動作に対応した信号に指示された実行命令を、中央処理装置の特権レベルＲｉｎｇ３へ切り替えして実行することにより、前記実行命令に安全モードで実行させ、危険な命令の実行を阻止し、コンテナに基づく仮想化システムの安全性を向上した。
【００５３】
前記安全制御装置５００が、例えば、プロセッサ、メモリなどのいくつかの他の公知の構造をさらに備えてもよく、本発明の実施例を曖昧にすることを回避するために、これらの公知の構造を図５に示さなかったことを、当業者は理解することができる。
【００５４】
以下、本発明の実施例を実現するためのコンテナに基づく仮想化システムに適用されるコンピュータシステム６００を示す構造模式図である図６を参照する。
【００５５】
図６に示すように、コンピュータシステム６００は、読み出し専用メモリ（ＲＯＭ）６０２に記憶されているプログラム又は記憶部６０８からランダムアクセスメモリ（ＲＡＭ）６０３にロードされたプログラムに基づいて様々な適当な動作および処理を実行することができる中央処理装置（ＣＰＵ）６０１を備える。ＲＡＭ６０３には、システム６００の操作に必要な様々なプログラムおよびデータがさらに記憶されている。ＣＰＵ６０１、ＲＯＭ６０２およびＲＡＭ６０３は、バス６０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース６０５もバス６０４に接続されている。
【００５６】
キーボード、マウスなどを含む入力部６０６、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）など、およびスピーカなどを含む出力部６０７、ハードディスクなどを含む記憶部６０８、およびＬＡＮカード、モデムなどを含むネットワークインターフェースカードの通信部６０９は、Ｉ／Ｏインターフェース６０５に接続されている。通信部６０９は、例えばインターネットのようなネットワークを介して通信処理を実行する。ドライバ６１０は、必要に応じてＩ／Ｏインターフェース６０５に接続される。リムーバブルメディア６１１は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ６１０に取り付けられ、したがって、ドライバ６１０から読み出されたコンピュータプログラムが必要に応じて記憶部６０８にインストールされる。
【００５７】
特に、本発明の実施例によれば、上記フローチャートを参照しながら記載されたプロセスは、コンピュータのソフトウェアプログラムとして実現されてもよい。例えば、本発明の実施例は、コンピュータプログラム製品を含み、当該コンピュータプログラム製品は、機械可読媒体に有形に具現化されるコンピュータプログラムを含み、前記コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含む。このような実施例では、当該コンピュータプログラムは、通信部６０９を介してネットワークからダウンロードされてインストールされてもよく、および／またはリムーバブルメディア６１１からインストールされてもよい。
【００５８】
図面におけるフローチャートおよびブロック図は、本発明の各実施例に係るシステム、方法およびコンピュータプログラム製品により実現可能なアーキテクチャ、機能及び操作を示す。ここで、フローチャートまたはブロック図における各枠は、１つのモジュール、プログラムセグメント、またはコードの一部を代表してもよく、前記モジュール、プログラムセグメント、またはコードの一部は、規定された論理機能を実現するための１つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様として、枠に示された機能は、図面に示された順番と異なる順番で実行されてもよい。例えば、連続して示された２つの枠は、関連する機能に応じて、実際にほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図および／またはフローチャートにおける各枠と、ブロック図および／またはフローチャートにおける枠の組合せは、規定された機能または操作を実行する、ハードウェアに基づく専用システムで実現されてもよく、あるいは、専用ハードウェアとコンピュータの命令との組合せで実行されてもよい。
【００５９】
本発明の実施例に記載されたユニットは、ソフトウェアで実現されてもよく、ハードウェアで実現されてもよい。記載されたユニットは、プロセッサに設定されてもよく、例えば、「プロセス起動監視ユニット、および信号処理キャプチャユニットを備えるプロセッサ」として記載されてもよい。その中でも、これらのユニットの名称は、ある場合において当該ユニットその自体を限定するものではなく、例えば、信号処理キャプチャユニットは、「キャプチャ信号処理ユニット」として記載されてもよい。
【００６０】
一方、本発明は、不揮発性コンピュータ記憶媒体をさらに提供し、当該不揮発性コンピュータ記憶媒体は、上記実施例の前記装置に含まれる不揮発性コンピュータ記憶媒体であってもよく、独立に存在して端末に組み立てられていない不揮発性コンピュータ記憶媒体であってもよい。前記不揮発性コンピュータ記憶媒体は、１つ以上のプログラムが記憶され、前記１つ以上のプログラムが１つの機器により実行された場合、上記機器に以下の通りにさせ、すなわち、ユーザモードで、コンテナに基づく仮想化システムの中のコンテナにおけるプロセス起動の動作を監視し、前記プロセス起動の動作が監視された場合、カーネルモードで、信号処理動作をキャプチャするステップを実行し、前記信号処理動作をキャプチャするステップにおいては、前記プロセスにおいて未処理信号が存在するか否かを判断するステップと、前記信号が存在する場合、前記信号に指示された実行命令をカストマイズの第１の関数のエントリアドレスにジャンプし、且つ前記信号の信号番号を前記第１の関数へ転送するステップと、前記第１の関数が呼び出された場合、呼び出された時に転送された信号番号に対応した信号処理動作をキャプチャするステップと、を含む。
【００６１】
以上の記載は、本発明の好ましい実施例、および使用された技術的原理の説明に過ぎない。本発明に係る特許請求の範囲が、上記技術的特徴の特定な組合せからなる技術案に限定されることではなく、本発明の趣旨を逸脱しない範囲で、上記技術的特徴または同等の特徴の任意の組合せからなる他の技術案も含むべきであることを、当業者は理解すべきである。例えば、上記特徴と、本発明に開示された類似の機能を持っている技術的特徴（これらに限定されていない）とを互いに置き換えてなる技術案が挙げられる。
【図１】
2017076369.tif 000003
【図２】
2017076369.tif 000004
【図３】
2017076369.tif 000005
【図４】
2017076369.tif 000006
【図５】
2017076369.tif 000007
【図６】
2017076369.tif 000008