在傳統模式下,企業建立一套密碼服務系統不僅需要購買大量的密碼設備和配套軟件,還需要配備專人對密碼設備和系統進行運維管理。同時,隨著業務規模的不斷擴大,企業還需持續增加硬件投入和運維人員。

在云計算環境下,企業用戶的觀念從購買軟硬件產品向購買服務方向轉變。企業用戶希望不必購買大量的密碼機設備和配套的管理軟件,不必雇用更多專門的人員對密碼設備和管理軟件進行維護管理,只希望通過向云密碼服務提供商申請實現按需分配、彈性伸縮(自動化調度)、高可用等需求的云密碼服務。

為解決傳統模式下密碼設備使用及運維方面的問題,實現云架構下對外提供可按需分配、彈性伸縮的安全云密碼服務,以及安全云密碼服務的創建、發布、開通、選購、調度、使用等功能,可將密碼設備集群視作密碼資源池,結合 Kubernetes 云平臺,使用云計算的硬件虛擬化技術,將密碼設備資源虛擬成各個相互獨立的虛擬密碼設備,通過密碼資源調度系統進行密碼資源的分配、管理和統一調度,并對外提供統一的按需分配、彈性擴展的密碼功能服務。可為業務系統提供平臺即服務(Platform as a Service,PaaS)化云密碼服務,實現云密碼服務的集約利用、彈性伸縮,簡化密碼設備的管理和維護,有效提升密碼設備利用率,為用戶節省大量的運維工作量。

1

云平臺及密碼機

1.1 Kubernetes 云平臺

Kubernetes 是 Google 公司于 2014 年創建的開源容器集群管理系統,是 Google 公司十多年大規模容器管理技術 Borg 的開源版本。它構建于 Docker 技術之上,為容器化的應用提供資源調度、部署運行、服務發現、擴容縮容等一整套功能。Kubernetes 可以快速部署及擴展應用、無縫對接新的應用功能、節省資源并優化硬件資源的使用。

Kubernetes 基本架構如圖 1 所示 。

圖 1 Kubernetes 基本架構

Kubernetes 集群由 Master 和 Node 兩個節點共同組成。在 Master 上運行 ETCD、API Server、Controller Manager 和 Scheduler 4 個組件。其中,API Server、Controller Manager 和 Scheduler 3 個組件構成了 Kubernetes 的總控中心,負責對集群中所有資源進行管控和調度。在 Node 上運行Kubelet、Kube-proxy 和 Docker,負責對節點上Pod 的全生命周期進行管理,以及實現服務代理的功能。所有節點上都可以運行 Kubectl 命令行工具。

API Server 作為集群的核心,負責集群各功能模塊之間的通信。集群內的功能模塊通過 API Server 將 信 息 存 入 ETCD, 其 他 模 塊 通 過 API Server 讀取這些信息,從而實現模塊間的信息交互。Node 節點上的 Kubelet 每隔一個時間周期,通過 API Server 報告自身狀態,API Server接收到信息后,將節點信息保存到 ETCD 中。Controller Manager 中 的 Node Controller 通 過 APIServer 定期讀取節點狀態信息,并做響應處理。當 Scheduler 監聽到某個 Pod 創建的信息后,檢索所有符合該 Pod 要求的節點列表,并將 Pod綁定到節點列表中最符合要求的節點上。如果Scheduler 監聽到某個 Pod 被刪除,則調用 APIServer 刪 除 該 Pod 資 源 對 象。Kubelet 監 聽 Pod信息,如果監聽到 Pod 對象被刪除,則刪除本節點上相應的 Pod 實例,如果監聽到修改 Pod 信息,則會相應修改本節點的 Pod 實例。

Kubernetes 可將多臺 Docker 主機抽象為一個資源,以集群方式管理容器,包括任務調度、資源管理、彈性伸縮、滾動升級等功能。可通過編排系統(YAML File)快速構建容器集群,提供負載均衡,解決容器直接關聯及通信問題,支持自動管理和修復容器。

1.2 云服務器密碼機

密碼機是一種以密碼技術為核心,為業務系統提供安全的密鑰管理和密碼運算的硬件設備 。業務系統通過調用密碼機提供的密碼服務,實現數據的機密性、完整性、有效性和不可否認性。隨著云計算技術的發展和普及,這些業務系統逐步向云上遷移,或采用云計算相關技術,實現了資源的節約利用、按需分配、彈性調度,也實現了業務系統的高可用、自動化部署 / 升級。相應的,這些業務系統也要求密碼機具備節約利用、按需分配、彈性調度、高可用、自動化部署 / 升級等特性。

傳統的密碼機很難滿足這些要求,因此密碼機也需與云計算技術相結合,提供具備節約利用、按需分配、彈性調度、高可用、自動化部署 / 升級等特性的云服務器密碼機。

由于 Kubernetes 具有按需分配、彈性調度、自動化等諸多方面的優點,因此本文將云服務器密碼機與 Kubernetes 相結合,并圍繞密碼服務管理構建云密碼資源池。相較于傳統密碼機,與 Kubernetes 相結合的云服務器密碼機具有統一管理、按需分配、彈性伸縮、高可用、自動負載均衡、自動化部署 / 升級等優點。

2

云密碼資源池構建

2.1 云服務器密碼機接入 Kubernetes

通過在云服務器密碼機中部署 KubernetesNode 節點組件(主要是 Kubelet、Kube-proxy),使 云 服 務 器 密 碼 機 作 為 一 個 Node 節 點 接 入Kubernetes,然后可由 Kubernetes 調度云服務器密碼機生成虛擬密碼機(Virtual Security Module,VSM),VSM 可視為 Pod。云服務器密碼機接入 Kubernetes 如圖 2 所示。

圖 2 云服務器密碼機接入 Kubernetes

2.2 安全接入

云服務器密碼機屬于密碼產品,在內部存儲了密鑰及其他敏感信息,Kubernetes 提供了多種配置及操作 Pod 的方法,使用這些方法可在云服務器密碼機中運行惡意鏡像、掛接外部存儲獲取敏感信息、管理人員惡意操作等,可能導致云服務器密碼機內的敏感信息泄露或被破壞,因此,需對部署在云服務器密碼機中的Kubernetes Node 組件進行安全性改造,以防止惡意鏡像在云服務器密碼機中執行、掛接外部存儲導致敏感數據泄露、管理人員惡意操作等事件發生。

2.2.1 防止惡意鏡像在云服務器密碼機中執行

默 認 情 況 下, 在 Kubernetes 的 Node 節點中使用 Docker 作為容器的實現,Kubernetes 負責調度,最終由 Docker 生成 Pod。作為 Node 節點接入 Kubernetes 的云服務器密碼機,內部也采用了Docker 生成 VSM。當創建 VSM 需從外部下載鏡像時,Docker 可能會從外部下載到惡意鏡像,惡意鏡像可能導致云服務器密碼機內部的敏感數據被竊取或破壞。因此,云服務器密碼機可從以下兩個維度限制惡意鏡像在云服務器密碼機中執行。

(1)禁止 Docker 從外部下載鏡像。

(2)云服務器密碼機自身提供安全的鏡像管理功能:允許導入內置簽名的鏡像。導入鏡像時,需驗證該鏡像是否具有簽名以及簽名是否能夠驗證通過,只有通過驗證的鏡像才能導入云服務器密碼機。在創建 VSM 時,云服務器密碼機可以使用提前導入的鏡像創建 VSM。

2.2.2 防止掛接外部存儲導致敏感數據泄露

在創建 Pod 時,Kubernetes 可配置 Pod 使用外部存儲,并將外部存儲映射到 Pod 的指定目錄。VSM 內部存儲了敏感信息,如果在創建 VSM 時,將 VSM 存儲敏感信息的目錄設置為外部存儲,則可在外部存儲中找到敏感信息。雖然密鑰等敏感信息是密文形態,但敏感信息出現在外部存儲中,也無形中增加了信息泄露的風險。因此,在云服務器密碼機中,要禁止為 VSM 配置外部存儲。一個可選的措施是改造部署在其中的 KubernetesNode 組件,在創建 VSM 時,檢查是否要求 VSM使用外部存儲,如有此需求,則禁止該 VSM 的創建,并向 Kubernetes 告知相應的錯誤信息。

2.2.3 防止管理人員惡意操作

Kubernetes 提供了一系列命令,供 Kubernetes管理人員遠程操作 Pod,例如從 Pod 中拷貝數據、將數據拷貝到 Pod、在 Pod 中執行命令等。對云服務器密碼機而言,如果允許 Kubernetes 管理人員執行上述命令,則管理人員可能會復制或破壞 VSM 內部的敏感信息。因此,需要對部署在云服務器密碼機中的 Node 組件進行改造,限制其執行上述命令。

2.3 云密碼資源池管理

2.3.1 云密碼資源池工作原理

與 Kubernetes 結合的云密碼資源池工作原理如圖 3 所示。

圖 3 云密碼資源池工作原理

云密碼資源池管理平臺是整個云密碼資源池的主控平臺及統一入口,通過 API Server 對外提供的 RESTful 接口實現對 Kubernetes Master 的訪問及調度,主要負責對云密碼資源池的統一管理和維護。

Kubernetes Master 主 要 提 供 API Server、Scheduler、Controller Manager 組件,接收云密碼資源池管理平臺發起的請求命令,從 Kubernetes Node 節點中獲取 Node 的資源信息,并發出調度任務。

云服務器密碼機作為 Kubernetes Node 接入Kubernetes Master。Kubernetes Node提供了Kubelet、Kube-proxy,每個 Node 節點安裝部署 Docker,即實際的執行者。

2.3.2 云密碼資源池架構

云密碼資源池管理平臺是云密碼資源池的主控平臺,通過調用 Kubernetes 主控節點(Master)中 API Server,實現云密碼資源池中所有計算節點(Node)的統一管理,為整個云密碼資源池提供云服務器密碼機接入、云密碼資源池化、密碼計算單元(虛擬密碼機)和密碼計算單元集群(虛擬密碼機集群)控制管理等功能。云密碼資源池架構如圖 4 所示。

圖 4 云密碼資源池架構

云密碼資源池包括云密碼資源池管理平臺、主控節點和計算節點 3 個部分。

云密碼資源池管理平臺是整個云密碼資源池的管理入口,通過 API Server 實現對主控節點的統一調度及管理。

主控節點(Kubernetes Master)負責對多個計算節點(Kubernetes Node)進行管理及調度。

密碼設備集群由多臺云服務器密碼機共同組成。云服務器密碼機作為計算節點接入到主控節點,是云密碼計算服務中的核心組件。VSM是云服務器密碼機經過虛擬化處理后的虛擬密碼機。  

云計算業務服務器集群中的業務系統通過虛擬密碼機 API 接口實現對 VSM 虛擬密碼機的訪問及接口調用,完成云密碼服務運算處理。

租戶訪問云密碼服務管理平臺,實現云密碼資源申請、VSM 虛擬密碼機創建、管理和監控。

2.3.3 云密碼資源映射關系

建立統一的密碼資源數據模型,形成密碼資源模板(服務模板),劃分云服務器密碼機不同層次的密碼運算能力,定義密碼資源基準數據;分析租戶云密碼資源申請信息,利用密碼資源數據模型實現密碼運算能力與云服務器密碼機內存的映射關系,便于云服務器密碼機實例的創建,簡化租戶對云密碼資源申請過程的復雜度,降低使用難度,提升易用性。

2.3.4 云密碼資源服務類型水平擴展

首先基于鏡像包裝成服務模板,其次基于服務模板包裝成服務目錄,最后基于服務目錄發布服務實例 。云密碼資源服務類型水平擴展如圖 5 所示。

圖 5 云密碼資源池服務類型水平擴展

鏡 像 是 VSM 虛 擬 密 碼 機 鏡 像 文 件, 用于 創 建 VSM 虛 擬 密 碼 機 或 VSM 虛 擬 密 碼 機集群。

服務模板由一個或多個鏡像構成,一個鏡像對應一個或多個模板。服務模板用于定義云密碼資源映射關系,劃分云服務器密碼機不同層次的密碼運算能力。

服務目錄由服務模板包裝而成,一個服務模塊可包裝成一個或多個服務目錄;一個服務目錄唯一屬于一個服務模板。服務目錄定義不同檔次、不同規格的云服務器密碼機,如高端、中端、低端等。服務實例是密碼計算單元(虛擬密碼機)或密碼計算單元集群(虛擬密碼機集群),可對外提供按需分配、彈性伸縮的云密碼服務。

3

云密碼資源池應用

云密碼資源池主要面向云計算、政務云領域,重點是私有云環境中,以池化機制為云服務器密碼機對外提供可按需分配、彈性伸縮、高可用、自動化部署 / 升級的云密碼服務 。云密碼資源池應用如圖 6 所示。

圖 6 云密碼資源池應用

管理人員訪問云密碼資源池管理平臺,完成云密碼資源配置、服務模板和服務目錄創建、資源審批、分配、管理、監控、配置、審計、服務發布。租戶訪問云密碼資源管理平臺,完成密碼資源申請、管理、監控、服務訂閱。

在云應用場景中,對云服務器密碼機的差異化需求是統一管理、高性能、高可用、動態伸縮(云密碼資源充分利用)。云服務器密碼機接入云密碼資源池管理平臺,由云密碼資源池管理平臺對其進行統一管理。由管理人員統一對云服務器密碼機進行運維管理,并對 VSM 進行初始化、配置管理和密鑰管理。多個 VSM 可組成集群,并在云服務器密碼機中創建 Service,通過 Service 對多個 VSM 進行負載均衡,為云計算業務系統提供高性能、高可靠、按需分配、彈性伸縮的密碼服務。

4

結 語

隨著云計算服務的不斷發展,密碼在云計算業務系統中的應用不斷增加,云計算業務系統對云密碼服務的需求也隨之增長。為順應云密碼服務技術發展趨勢,將云服務器密碼機接入 Kubernetes,通過云密碼資源池管理平臺實現云密碼資源池構建,根據用戶需求對外提供按需分配、彈性伸縮、高可用、安全的云密碼服務。因此,安全的云密碼服務技術及應用具有廣闊的應用前景,可進一步滿足云計算業務中對云密碼服務的迫切需求。

引用格式:廖成軍 , 吳慶國 , 李軍 . 安全的云密碼服務技術及應用 [J]. 信息安全與通信保密 ,2022(12):81-88.