本文提供 Azure 機密運算 (ACC) 用來加密使用中數據的解決方案。
架構
此圖表概述架構。 在整個系統中:
- 網路通訊是在傳輸中加密的 TLS。
- Azure 監視器 會追蹤元件效能,而 Azure Container Registry (ACR) 會管理解決方案的容器。
工作流程
解決方案牽涉到下列步驟:
- 當地醫院的職員會開啟入口網站。 整個 Web 應用程式是 Azure Blob 儲存體 靜態網站。
- Clerk 會將數據輸入醫院的入口網站,該入口網站會連線到由熱門醫療平臺廠商所建置的 Python Flask 型 Web API。 SCONE 機密運算軟體中的機密節點可保護病患數據。 SCONE 可在已啟用軟體防護延伸模組 (SGX) 的 AKS 叢集中運作,以協助在記憶體保護區中執行容器。 Web API 將提供敏感數據和應用程式程式代碼在受信任執行環境中加密和隔離的證據。 這表示沒有人類、沒有進程,也沒有記錄可以存取純文本數據或應用程式程序代碼。
- 醫院的 Web 應用程式用戶端會要求證明服務 (Azure 證明) 會驗證此辨識項,並接收已簽署的證明令牌,讓其他應用程式進行驗證。
- 如果 Web API 需要額外的元件(例如 Redis 快取),它可以沿著證明令牌傳遞,以確認數據與應用程式程式代碼到目前為止都保留在安全記憶體保護區中(請參閱步驟 6 以進行驗證)。
- Web API 甚至可以取用遠端服務,例如由第三方診斷提供者裝載的 ML 模型。 這樣做時,它會繼續傳遞任何證明令牌,以取得必要記憶體保護區是安全的辨識項。 Web API 也可以嘗試接收和驗證診斷提供者基礎結構的證明令牌。
- 遠端基礎結構會接受來自醫療平臺 Web API 的證明令牌,並使用 Azure 證明 服務中找到的公開憑證進行驗證。 如果已驗證令牌,則幾乎可以確定記憶體保護區是安全的,而且數據或應用程式程式代碼都沒有在記憶體保護區外部開啟。
- 診斷提供者確信數據尚未公開,並將它傳送至開放式類神經網路交換 (ONNX) 運行時間伺服器中自己的記憶體保護區。 AI 模型會解譯醫療影像,並將其診斷結果傳回給醫療平臺的機密 Web API 應用程式。 然後,軟體可以從這裡與患者記錄和/或聯繫其他醫院工作人員互動。
元件
Azure 證明 是一種統一的解決方案,可遠端驗證平臺的可信度。 Azure 證明 也會從遠端驗證平台中執行的二進位檔完整性。 使用 Azure 證明 與機密應用程式建立信任。
Azure Kubernetes Service 可簡化部署 Kubernetes 叢集的程式。
機密運算節點 裝載在特定虛擬機系列上,可藉由允許使用者層級程式代碼配置記憶體的私人區域,以在硬體型受信任執行環境 (TEE) 內的 AKS 上執行敏感性工作負載。 機密運算節點可以支援機密容器或記憶體保護區感知容器。
SCONE 平臺 是來自 Scontain 的 Azure 合作夥伴獨立軟體廠商 (ISV) 解決方案。
Redis 是開放原始碼的記憶體內部數據結構存放區。
安全容器環境 (SCONE) 支援在 Kubernetes 叢集內執行的容器中執行機密應用程式。
機密推斷 ONNX 運行時間伺服器記憶體保護區 (ONNX RT - 記憶體保護區) 是一個主機,可限制 ML 主控方存取推斷要求及其對應的回應。
替代項目
您可以使用 Fortanix ,而不是 SCONE 來部署機密容器,以搭配容器化應用程式使用。 Fortanix 提供執行和管理最廣泛的應用程式集所需的彈性:現有的應用程式、新的記憶體保護區原生應用程式,以及預先封裝的應用程式。
您可以使用 Occlum 而不是 SCONE,在已啟用 SGX 的 AKS 叢集內執行。 Occlum 可讓舊版應用程式在隔離的環境中執行,幾乎不需要修改。
電通 是輕量型開放原始碼客體OS。 Blob 可以在隔離的環境中執行單一 Linux 應用程式,其優點與執行完整的 OS 相當。 它具有將現有 Docker 容器應用程式轉換為受防護容器 (GSC) 的良好工具支援。
案例詳細資料
當組織共同作業時,他們會共享資訊。 但大部分合作物件都不想讓其他合作物件存取數據的所有部分。 機制可用來保護待用和傳輸中的數據。 不過,加密使用中的數據會帶來不同的挑戰。
解決方案使用機密運算和容器,為提供者裝載的應用程式提供一種方式,以安全地與醫院和第三方診斷提供者共同作業。 Azure Kubernetes Service (AKS) 會裝載機密運算節點。 Azure 證明 與診斷提供者建立信任。 透過使用這些 Azure 元件,此架構會在雲端中處理特定共享數據時,隔離醫院患者的敏感數據。 然後,診斷提供者無法存取醫院數據。 透過此架構,提供者裝載的應用程式也可以利用進階分析。 診斷提供者會將這些分析做為機器學習 (ML) 應用程式的機密運算服務。
潛在使用案例
許多產業會使用這些用途的機密運算來保護其數據:
- 保護財務數據
- 保護患者資訊
- 在敏感性資訊上執行ML進程
- 對來自許多來源的加密數據集執行演算法
- 保護容器數據和程式代碼完整性
考量
這些考量能實作 Azure Well-Architected Framework 的要素,其為一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework (部分機器翻譯)。
Azure 機密運算虛擬機(VM)可在第 2 代 D 系列大小中取得,以符合一般用途需求。 這些大小統稱為 D 系列 v2 或 DCsv2 系列。 此案例使用已啟用 Intel SGX 的 DCs_v2 系列虛擬機搭配 Gen2 操作系統 (OS) 映射。 但是,您只能在特定區域中部署特定大小。 如需詳細資訊,請參閱快速入門:在依區域提供的 Marketplace 和產品中部署 Azure 機密運算 VM。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀。
若要探索執行此案例的成本,請使用 Azure 定價計算機來預先設定所有 Azure 服務。
Contoso 醫療軟體即服務 (SaaS) 平臺可使用範例成本配置檔,如下圖所示。 其包括以下元件:
- 系統節點集區和 SGX 節點集區:無磁碟、所有暫時性
- AKS Load Balancer
- Azure 虛擬網絡:名義
- Azure Container Registry
- 單頁應用程式的記憶體帳戶 (SPA)
設定檔不包含下列元件:
Azure 證明 服務:免費
Azure 監視器記錄:使用量型
SCONE ISV 授權
使用敏感數據的解決方案所需的合規性服務,包括:
- 適用於 Kubernetes 的 適用於雲端的 Microsoft Defender 和 Microsoft Defender
- Azure DDoS 保護:網路保護
- Azure 防火牆
- Azure 應用程式閘道 和 Azure Web 應用程式防火牆
- Azure Key Vault
部署此案例
部署此案例牽涉到下列高階步驟:
在已啟用 SGX 的現有 AKS 叢集上部署機密推斷伺服器。 如需此步驟的詳細資訊,請參閱 GitHub 上的機密 ONNX 推斷伺服器專案。
設定 Azure 證明 原則。
部署已啟用 SGX 的 AKS 叢集節點集區。
存取名為 SconeApps 的策劃機密應用程式。 SconeApps 可透過 SCONE Standard Edition,在目前僅適用於商業客戶的私人 GitHub 存放庫上取得。 移至 SCONE 網站 ,並直接連絡公司以取得此服務等級。
在您的 AKS 叢集上安裝和執行 SCONE 服務。
在您的 AKS 叢集上安裝及測試 Flask 型應用程式。
部署及存取 Web 用戶端。
這些步驟著重於記憶體保護區容器。 受保護的基礎結構會延伸到此實作之外,並包含合規性需求,例如 HIPAA 所需的新增保護。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Amar Gowda |主要產品經理
下一步
深入了解 Azure 機密運算