一種管理虛擬機的隔離方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機技術領域,尤其涉及一種管理虛擬機的隔離方法及裝置。
【背景技術】
[0002]近年來,隨著云計算的發展,作為其基礎支撐技術之一的虛擬化技術也得到了廣泛應用。利用虛擬化技術可以實現在一臺物理主機上同時運行多個虛擬機,這樣,可以提高資源的利用率和分配靈活性,但是同時也帶來了安全隱患。如若一個虛擬機由于漏洞而影響到底層的虛擬機監控器(VMM, Virtual Machine Monitor),則同一物理主機上的其他虛擬機均會受到影響。
[0003]目前常用的Xen虛擬化系統中的物理主機都包含兩個關鍵組件=Hypervisor (虛擬機管理器)和domain-0 (Xen平臺的管理虛擬機),其中,由于大量的漏洞一般會出現在domain-0的代碼中,因此,為了避免一個虛擬機的漏洞影響該虛擬機所處的物理主機上的其他虛擬機,對domain-Ο進行隔離并保證domain-O的安全已成為一個亟待解決的問題。
[0004]現有技術中,可通過將domain-Ο中的某些服務組件從domain-Ο中分離出來,并將該某些服務組件分別放入其他不同的獨立虛擬機中運行,以實現domain-Ο中該某些服務組件之間的隔離,從而保證domain-Ο的安全。
[0005]然而,上述通過不同虛擬機保證domain-Ο安全的方法中,一方面,由于domain-O中的某些服務組件之間的通信方式由原來的進程間通信變為虛擬機間通信,從而導致該某些服務組件之間的通信性能下降,且增加了虛擬機運行所需的資源;另一方面,由于未涉及到服務組件的級別,因此,導致domain-O中服務組件的安全性較低。
【發明內容】
[0006]本發明的實施例提供一種管理虛擬機的隔離方法及裝置,解決了服務組件之間的通信性能較差,虛擬機運行所需的資源較多,以及服務組件的安全性較低的問題。
[0007]為達到上述目的,本發明的實施例采用如下技術方案:
[0008]第一方面,本發明提供一種管理虛擬機的隔離方法,包括:
[0009]獲取客戶標識;
[0010]根據所述客戶標識,在所述管理虛擬機中查找與所述客戶標識對應的內核虛擬機;
[0011]若在所述管理虛擬機中未查找到所述內核虛擬機,則在所述管理虛擬機中創建所述內核虛擬機;
[0012]將所述內核虛擬機為客戶虛擬機提供的服務分解為多個服務組件,所述客戶虛擬機為與所述客戶標識對應的虛擬機;
[0013]將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中,其中,所述內核虛擬機包括多個執行環境,所述多個執行環境分別具有不同的權限。
[0014]在第一方面的第一種可能的實現方式中,若在所述管理虛擬機中查找到所述內核虛擬機,則所述方法還包括:
[0015]由所述內核虛擬機獲取虛擬機管理器發送的指示消息,所述指示消息為所述客戶虛擬機發送至所述虛擬機管理器,并由所述虛擬機管理器根據所述指示消息中攜帶的所述客戶標識,確定出與所述客戶標識對應的所述內核虛擬機后向所述內核虛擬機所發送的,所述指示消息用于指示所述客戶虛擬機所需的服務;
[0016]由所述內核虛擬機根據所述指示消息中攜帶的服務請求信息響應所述客戶虛擬機所需的服務。
[0017]在第一方面的第二種可能的實現方式中,所述獲取客戶標識,包括:
[0018]獲取請求消息,所述請求消息中攜帶所述客戶標識,所述請求消息用于請求創建所述客戶虛擬機;
[0019]從所述請求消息中獲取所述客戶標識;
[0020]所述方法還包括:
[0021]根據所述請求消息創建與所述客戶標識對應的所述客戶虛擬機。
[0022]結合前述的第一方面或第一方面的第一種可能的實現方式至第二種可能的實現方式中的任一種實現方式,在第三種可能的實現方式中,所述將所述內核虛擬機為客戶虛擬機提供的服務分解為多個服務組件,包括:
[0023]根據所述內核虛擬機的功能,將所述服務的代碼分解為多個功能代碼塊;
[0024]將所述多個功能代碼塊分別運行于多個服務進程中,以形成多個服務組件,其中,所述多個功能代碼塊與所述多個服務進程一一對應。
[0025]結合前述的第一方面或第一方面的第一種可能的實現方式至第三種可能的實現方式中的任一種實現方式,在第四種可能的實現方式中,所述將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中,包括:
[0026]根據所述多個服務組件的權限,對所述多個服務組件進行分組,以使得不同分組的服務組件具有不同的權限;
[0027]將所述多個服務組件中的不同分組的服務組件分別運行在與該組服務組件所具有的權限對應的執行環境中。
[0028]結合第一方面的第四種可能的實現方式,在第五種可能的實現方式中,所述多個服務組件的權限是通過如下方法來確定的:
[0029]獲取所述多個服務組件的系統參數;
[0030]根據所述多個服務組件的系統參數,分別確定與所述多個服務組件的系統參數對應的所述多個服務組件的權限。
[0031]結合前述的第一方面或第一方面的第一種可能的實現方式至第五種可能的實現方式中的任一種實現方式,在第六種可能的實現方式中,所述將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,所述方法還包括:
[0032]根據預設策略,對所述多個服務組件的權限進行限制,其中,所述預設策略包括訪問操作和控制操作中的至少一個。
[0033]結合前述的第一方面或第一方面的第一種可能的實現方式至第六種可能的實現方式中的任一種實現方式,在第七種可能的實現方式中,所述將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,所述方法還包括:
[0034]監控所述多個服務組件的運行狀態;
[0035]當所述多個服務組件中的一個服務組件的運行狀態發生錯誤時,重啟所述一個服務組件。
[0036]結合前述的第一方面或第一方面的第一種可能的實現方式至第七種可能的實現方式中的任一種實現方式,在第八種可能的實現方式中,所述將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,所述方法還包括:
[0037]根據預設時間,分別對應周期性地重啟所述多個服務組件中的每個服務組件,所述預設時間為與所述每個服務組件分別對應的預設時間。
[0038]結合前述的第一方面或第一方面的第一種可能的實現方式至第八種可能的實現方式中的任一種實現方式,在第九種可能的實現方式中,所述在所述管理虛擬機中創建所述內核虛擬機包括:
[0039]根據內核虛擬化技術,在所述管理虛擬機中創建與所述客戶標識對應的內核虛擬化容器;
[0040]將所述管理虛擬機為所述客戶虛擬機提供的服務設置于所述內核虛擬化容器中,以創建所述內核虛擬機。
[0041]結合前述的第一方面或第一方面的第一種可能的實現方式至第九種可能的實現方式中的任一種實現方式,在第十種可能的實現方式中,
[0042]所述多個服務組件之間的通信方式為進程間通信。
[0043]結合前述的第一方面或第一方面的第一種可能的實現方式至第十種可能的實現方式中的任一種實現方式,在第i 種可能的實現方式中,
[0044]所述多個服務組件包括:虛擬機啟動服務組件、虛擬機管理工具集組件、虛擬機設備模擬組件、虛擬機創建工具組件、虛擬機后端驅動組件及Xen存儲組件中的至少一個。
[0045]第二方面,本發明提供一種管理虛擬機,包括:隔離模塊和至少一個內核虛擬機,其中,所述隔離模塊用于:
[0046]獲取客戶標識;
[0047]根據所述客戶標識,在所述管理虛擬機中的所述至少一個內核虛擬機中查找與所述客戶標識對應的內核虛擬機;
[0048]若在所述至少一個內核虛擬機中未查找到所述內核虛擬機,則在所述管理虛擬機中創建所述內核虛擬機;
[0049]將所述內核虛擬機為客戶虛擬機提供的服務分解為多個服務組件,所述客戶虛擬機為與所述客戶標識對應的虛擬機;
[0050]將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中,其中,所述內核虛擬機包括多個執行環境,所述多個執行環境分別具有不同的權限。
[0051]在第二方面的第一種可能的實現方式中,
[0052]所述內核虛擬機,還用于若所述隔離模塊在所述管理虛擬機中查找到所述內核虛擬機,則獲取虛擬機管理器發送的指示消息,并根據所述指示消息中攜帶的服務請求信息響應所述客戶虛擬機所需的服務,所述指示消息為所述客戶虛擬機發送至所述虛擬機管理器,并由所述虛擬機管理器根據所述指示消息中攜帶的所述客戶標識,確定出與所述客戶標識對應的所述內核虛擬機后向所述內核虛擬機所發送的,所述指示消息用于指示所述客戶虛擬機所需的服務。
[0053]在第二方面的第二種可能的實現方式中,
[0054]所述隔離模塊,具體用于獲取請求消息,并從所述請求消息中獲取所述客戶標識,以及根據所述請求消息創建與所述客戶標識對應的所述客戶虛擬機,所述請求消息中攜帶所述客戶標識,所述請求消息用于請求創建所述客戶虛擬機。
[0055]結合前述的第二方面或第二方面的第一種可能的實現方式至第二種可能的實現方式中的任一種實現方式,在第三種可能的實現方式中,
[0056]所述隔離模塊,具體用于根據所述內核虛擬機的功能,將所述服務的代碼分解為多個功能代碼塊,并將所述多個功能代碼塊分別運行于多個服務進程中,以形成多個服務組件,其中,所述多個功能代碼塊與所述多個服務進程一一對應。
[0057]結合前述的第二方面或第二方面的第一種可能的實現方式至第三種可能的實現方式中的任一種實現方式,在第四種可能的實現方式中,
[0058]所述隔離模塊,具體用于根據所述多個服務組件的權限,對所述多個服務組件進行分組,以使得不同分組的服務組件具有不同的權限,并將所述多個服務組件中的不同分組的服務組件分別運行在與該組服務組件所具有的權限對應的執行環境中。
[0059]結合第二方面的第四種可能的實現方式,在第五種可能的實現方式中,
[0060]所述隔離模塊,還用于獲取所述多個服務組件的系統參數,并根據所述多個服務組件的系統參數,分別確定與所述多個服務組件的系統參數對應的所述多個服務組件的權限。
[0061]結合前述的第二方面或第二方面的第一種可能的實現方式至第五種可能的實現方式中的任一種實現方式,在第六種可能的實現方式中,
[0062]所述隔離模塊,還用于在將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,根據預設策略,對所述多個服務組件的權限進行限制,其中,所述預設策略包括訪問操作和控制操作中的至少一個。
[0063]結合前述的第二方面或第二方面的第一種可能的實現方式至第六種可能的實現方式中的任一種實現方式,在第七種可能的實現方式中,
[0064]所述隔離模塊,還用于在將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,監控所述多個服務組件的運行狀態,并當所述多個服務組件中的一個服務組件的運行狀態發生錯誤時,重啟所述一個服務組件。
[0065]結合前述的第二方面或第二方面的第一種可能的實現方式至第七種可能的實現方式中的任一種實現方式,在第八種可能的實現方式中,
[0066]所述隔離模塊,還用于在將所述多個服務組件分別運行在與該服務組件所具有的權限對應的執行環境中之后,根據預設時間,分別對應周期性地重啟所述多個服務組件中的每個服務組件,所述預設時間為與所述每個服務組件分別對應的預設時間。
[0067]結合前述的第二方面或第二方面的第一種可能的實現方式至第八種可能的實現方式中的任一種實現方式,在第九種可能的實現方式中,
[0068]所述隔離模塊,具體用于根據內核虛擬化技術,在所述管理虛擬機中創建與所述客戶標識對應的內核虛擬化容器,并將所述管理虛擬機為所述客戶虛擬機提供的服務設置于所述內核虛擬化容器中,以創建所述內核虛擬機。
[0069]結合前述的第二方面或第二方面的第一種可能的實現方式至第九種可能的實現方式中的任一種實現方式,在第十種可能的實現方式中,
[0070]所述多個服務組件之間的通信方式為進程間通信。
[0071]結合前述的第二方面或第二方面的第一種可能的實現方式至第十種可能的實現方式