Share via


採用 Azure Kubernetes Service (AKS) 的機密容器搭配 Intel SGX 記憶體保護區

機密容器可協助您在 Intel SGX 型受信任執行環境 (TEE) 中,執行多數常見程式設計語言執行階段 (Python、Node、Java 等) 的現有未修改容器應用程式。 此封裝模型通常不需要修改或重新編譯任何原始程式碼,並且是在 Intel SGX 記憶體保護區中執行的最快方法。 執行您的標準 Docker 容器的一般部署程序,需要開放原始碼 SGX 包裝函式或 Azure 合作夥伴解決方案。 在此封裝和執行模型中,每個容器應用程式都會載入在信任的界限 (記憶體保護區),並具有由 Intel SGX CPU 強制執行的硬體型隔離。 在記憶體保護區中執行的每個容器都會收到從 Intel SGX CPU 傳遞的專屬記憶體加密金鑰。 此模型適用於市場上可用的現成容器應用程式,或目前在一般用途節點上執行的自訂應用程式。 若要執行現有的 Docker 容器,機密運算節點上的應用程式需要 Intel Software Guard Extensions (SGX) 包裝函式軟體,以協助容器在特殊 CPU 指令集的範圍內執行。 SGX 會建立對 CPU 的直接執行,以從信任界限移除客體作業系統 (OS)、主機 OS 或 Hypervisor。 此步驟可減少整體表面受攻擊區域和弱點,同時達成單一節點內的程序等級隔離。

執行未修改容器的整體程序牽涉到您容器目前封裝方式的變更,如下所述。

Diagram of confidential container conversion, with new steps for enabling Intel SGX and AKS.

協助執行標準容器所需的 SGX 包裝函式軟體會由 Azure 軟體合作夥伴或開放原始碼軟體 (OSS) 解決方案提供。

合作夥伴啟用者

開發人員可以根據軟體提供者的功能、與 Azure 服務和工具支援的整合來選擇軟體提供者。

重要

Azure 軟體合作夥伴通常牽涉到在 Azure 基礎結構上的授權費用。 請獨立驗證所有合作夥伴軟體條款。

Fortanix

Fortanix 具有入口網站和命令列介面 (CLI) 體驗,可將其容器化應用程式轉換為支援 SGX 的機密容器。 您不需要修改或重新編譯應用程式。 Fortanix 可讓您彈性地執行和管理一組廣泛的應用程式。 您可以使用現有的應用程式、新的記憶體保護區原生應用程式,以及預先封裝的應用程式。 從 Fortanix 的記憶體保護區管理員 UI 或 REST API 開始。 使用 Fortanix 的 AKS 快速入門手冊建立機密容器。

Diagram of Fortanix deployment process, showing steps to move applications to confidential containers and deploy.

SCONE (Scontain)

SCONE (Scontain) 安全性原則會產生憑證、金鑰和祕密。 只有具有應用程式證明的服務才會看到這些認證。 應用程式服務會透過 TLS 自動對彼此執行證明。 您不需要修改應用程式或 TLS。 如需詳細資訊,請參閱 SCONE 的 Flask 應用程式示範

SCONE 可以將大部分現有的二進位檔轉換成在記憶體保護區內執行的應用程式。 SCONE 也會藉由加密資料檔案和 Python 程式碼檔案來保護解譯的語言,例如 Python。 您可以使用 SCONE 安全性原則來保護加密的檔案,以防止未經授權的存取、修改和復原。 如需詳細資訊,請參閱 SCONE 有關如何使用 SCONE 搭配現有 Python 應用程式的文件。

Diagram of SCONE workflow, showing how SCONE processes binary images.

您可以遵循此 SCONE 範例 AKS 應用程式部署,在 Azure 機密運算節點上部署 SCONE。

Anjuna

Anjuna 提供 SGX 平台軟體,以在 AKS 上執行未修改的容器。 如需詳細資訊,請參閱 Anjuna 的關於功能和範例應用程式的文件

開始使用範例 Redis 快取和 Python 自訂應用程式 (這裡)

Diagram of Anjuna's process, showing how containers are run on Azure confidential computing.

OSS 啟用者

注意

Azure 機密運算和 Microsoft 不會直接與這些專案和解決方案建立關聯。

Gramine

Gramine 是輕量型客體 OS,其設計目的是要以最少的主機需求執行單一 Linux 應用程式。 Gramine 可以在隔離的環境中執行應用程式。 有針對將現有 Docker 容器轉換為 SGX 就緒容器的工具支援。

如需詳細資訊,請參閱 Gramine 的在 AKS 上的範例應用程式和部署

Occlum

Occlum 是適合 Intel SGX 的記憶體安全、多程序程式庫 OS (LibOS)。 OS 可讓傳統應用程式在 SGX 上執行,幾乎不需要修改原始程式碼。 Occlum 可透明地保護使用者工作負載的機密性,同時允許輕鬆地「隨即轉移」至現有的 Docker 應用程式。

如需詳細資訊,請參閱 Occlum 的在 AKS 上的部署指示和範例應用程式

Marblerun

Marblerun 是機密容器的協調流程架構。 您可以在已啟用 SGX 的 Kubernetes 上執行和調整機密服務。 Marblerun 會處理未定案工作,例如驗證叢集中的服務、管理其祕密,以及在兩者之間建立記憶體保護區對記憶體保護區的 mTLS 連線。 Marblerun 也可確保您的機密容器叢集遵守簡單 JSON 中定義的資訊清單。 您可以透過遠端證明向外部用戶端驗證該資訊清單。

此架構會將單一記憶體保護區的機密性、完整性和可驗證性屬性延伸至 Kubernetes 叢集。

Marblerun 支援使用 Graphene、Occlum 和 EGo 建立的機密容器,提供每個 SDK 的範例。 該架構可在 Kubernetes 上與現有的雲端原生工具一起執行。 有 CLI 和 Helm 圖表。 Marblerun 也支援採用 AKS 的機密運算節點。 遵循 Marblerun 的在 AKS 上部署 Marblerun 的指南

機密容器參考架構

取得連絡

您有關於實作的問題嗎? 您要成為機密容器的啟用者嗎? 將電子郵件傳送至 acconaks@microsoft.com

下一步