天天看點

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

螞蟻金服在過去十五年重塑支付改變生活,為全球超過十二億人提供服務,這些背後離不開技術的支撐。在 2019 杭州雲栖大會上,螞蟻金服将十五年來的技術沉澱,以及面向未來的金融技術創新和參會者分享。我們将其中的優秀演講整理成文并将陸續釋出在“螞蟻金服科技”公衆号上,本文為其中一篇。

在雲原生發展趨勢之下,金融行業想要應用雲原生技術,安全問題是一個非常大的攔路虎,而雲原生社群對安全問題的重視程度遠遠不夠。螞蟻金服在落地雲原生的時候,解決安全問題是重中之重,經過探索與實踐,我們沉澱出了一套從底層硬體到軟體、從系統到應用層的全鍊路金融級雲原生安全架構。

金融行業最重要的就是信任,我們認為,安全所帶來的信任,是一種無形的産品,支撐着所有金融業務。

順應網際網路時代發展,金融行業與機構也發生了很多的變化,包括 App、小程式等更多的通路管道,更快的業務變化,更多的第三方供應商。但是,不管怎麼變化,金融行業有一點始終不變,那就是 Zero Fault,對錯誤的零容忍,也就是對穩定性和安全性的極高要求。

這裡,我還想澄清大家對金融行業的一個錯誤看法,就是,大家都說金融機構有很多遺留系統,很多技術是十幾年前的,就認為金融機構的技術是落後的。但其實,金融行業一直是科技含量非常高的。前段時間有一部電影上映,叫《蜂鳥計劃》,根據真實事件改編,講一幫做高頻交易的人,為了降低從堪薩斯到紐約交易所的時間,建造了一條上千英裡直通兩地的光纖,想盡辦法去争取那最後一毫秒。是以,金融行業并不隻有平庸保守的科技,它同樣也在追逐最前沿最先進的技術,我們的使命就是要用科技來進一步武裝金融行業,為金融科技注入更多的活力。

雲原生架構其實代表一種新的生産力,金融行業肯定是需要雲原生的,它為我們帶來了節約成本和靈活開發的能力,但是在它前面還需要加一個定語,就是安全的雲原生架構,它裡面不僅僅包含之前的相對簡單的安全方案,而是一個從端到端的全鍊路可信的安全解決方案。包括明晰代碼所有權,做到可信啟動,對鏡像的制作和釋出收口,配合賬号體系,明晰應用的所有權和通路權限;以及安全可獨立部署的精細化隔離方案,将安全政策和實施內建在基礎架構中,對軟體開發和測試透明。

這裡我們着重分享螞蟻金服正在實踐的幾項雲原生安全技術,包括雲原生網絡安全 Service Mesh,安全容器,以及機密計算。

雲原生網絡安全:SOFAMesh

目前,雲原生裡除了容器之外第二大技術其實就是 Service Mesh,從螞蟻的實踐來看,其實它對金融安全有非常高的幫助。它至少可以做到三點:

• 政策化高效流量控制,可以幫助運維迅速适應業務快速變化;

• 全鍊路加密,保護端到端資料安全;

• 流量劫持與分析,當發現異常流量與容器時,進行流量阻斷。

并且,這些工作對業務是透明的,不需要給業務開發增加負擔,同時我們還可以對流量進行實時的語義分析等等,做比傳統的防火牆做更多的事情。

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

螞蟻金服在對 Service Mesh 的探索中,推出了自己用 Golang 打造的 SOFAMesh,并且已經對外開源,希望和社群一起努力,讓 Service Mesh 的理念和技術更加普及。

SOFAMesh 是基于 Istio 改進和擴充而來的 Service Mesh 大規模落地實踐方案。在繼承 Istio 強大功能和豐富特性的基礎上,為滿足大規模部署下的性能要求以及應對落地實踐中的實際情況,所做的改進包括采用 Golang 編寫的 SOFAMosn 取代 Envoy,極大降低了 Mesh 本身的開發難度,并做了一些創新性工作,例如合并Mixer到資料平面以解決性能瓶頸,增強 Pilot 以實作更靈活的服務發現機制,增加對 SOFARPC、Dubbo 的支援,等等。

更多詳情可檢視SOFAMesh的GitHub首頁:

https://github.com/sofastack/sofa-mesh

螞蟻金服率先在生産環境中大規模落地 SOFAMesh,超過 10W+ 容器做到了 Mesh 化,平穩支撐了 618 大促,給我們帶來了多協定支援、UDPA、平滑更新、安全等多方面的好處,并且對性能僅有輕微的影響,單跳 CPU 增加 5% 損耗,RT增加不到 0.2ms,甚至部分業務經過 Mesh 化改造将業務鍊路下沉,RT 反而下降 7%。

安全容器 Kata Containers

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

傳統容器架構

提雲原生大家肯定都會提容器,傳統容器從虛拟機到容器,其實是犧牲了隔離性的,從上圖可以很清楚的看到,當我們的應用在容器裡,其實共享着同一個 CPU、記憶體、網絡和存儲,隻是從外面看起來是不同的。這會導緻安全上的問題,就是不同的容器之間不存在真正的隔離,一旦一個容器發生安全問題,很可能影響到其它容器,甚至入侵整個系統。螞蟻金服在這方面做的工作就是安全容器,具體就是 Kata Containers。

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

安全容器架構

Kata Containers 安全容器是 OpenStack 基金會的頂級開放基礎設施項目,由螞蟻金服和 Intel 共同主導開發。在安全容器裡,每個 Pod 運作在獨立的沙箱中,彼此不共享核心,提供強安全保障。

這裡給大家分享一下 Kata Containers 的近期進展,針對大家最關注的性能問題有了非常大的提升:

• 引入 shimv2 每 Pod 輔助程序數量從 2N+2 減少到 1 個;

• 引入 virtiofs,提升檔案系統性能約 70% 到 90%;

• 引入 Firecracker, VMM 記憶體開銷從 60MB 降到約 15MB;

• 改用 rust 實作 agent,占用記憶體從 11MB 下降到約 1MB。

我們也會和社群一起繼續共建 Kata Containers,讓安全容器成為雲原生的标配。

安全容器可以有效的保護主機,但是,金融業務本身仍然需要更強的隔離保護,螞蟻金服引入了機密計算,并根據實際場景研發了大規模落地解決方案 SOFAEnclave。

機密計算中間件:SOFAEnclave

所謂機密計算,也就是基于例如 Inte SGX,ARM Trustzone 等可信執行環境(Trusted Execution Environment, TEE),也稱為 Enclave ,通路計算機記憶體時隔離使用者資料,以避免将資料暴露給其他應用程式、作業系統或其他雲伺服器租戶的解決方案。

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

Enclave架構

Enclave 是運作時的雙向保護,比如說你的金融業務跑在 Enclave 上的時候,作業系統都看不到 Enclave 裡的記憶體,同時會進行完整性檢查,保證通路 Enclave 的代碼不被替換。

但是 Enclave 目前存在一些問題,阻礙了它在實際生産環境中的應用。總結這些問題包括:

第一,需要改寫應用,因為可信執行環境裡面沒有核心和基礎庫,是以沒法把應用直接在 Enclave 中執行;

第二,需要分割應用,需要把業務程式劃分為 Enclave 内和 Enclave 外的部分;

第三,未叢集化,與用戶端場景不同,Enclave 中的應用如何 failover,容災也是阻止其在資料中心中大規模使用的一個原因。

螞蟻金服針對這些問題的答案就是 SOFAEnclave 機密計算中間件。

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

SOFAEnclave架構

SOFAEnclave 由三個元件組成,第一個是 Occlum LibOS,另外一個是 SOFAst,以及 KubeTEE。Occlum 是螞蟻和英特爾、清華主導開發的一個記憶體安全的多任務 Enclave 核心,把系統核心的功能通過 lib 的方式連結過去,通過這種方式給 Enclave 增加功能。同時我們也創新性的解決了在 Enclave 跑多程序的方式,讓 Enclave 真正适配大型的應用。

想詳細了解 SOFAEnclave 的技術細節,可以參考這篇文章:

《SOFAEnclave:螞蟻金服新一代可信程式設計環境》

當我們把這些安全元件與雲原生架構編織在一起,構成一個全景,就是我們正在建構的金融服務的安全雲原生安全架構——基于阿裡雲和 Kubernetes,以端到端的安全性保障金融服務。

當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?雲原生網絡安全:SOFAMesh安全容器 Kata Containers機密計算中間件:SOFAEnclave

上述這些元件有些是螞蟻金服在實踐檢驗之後開源并與合作夥伴和社群共同發展的,有些從開始就是在社群中開發的。與傳統金融行業的技術發展不同,我們提倡建立一個開放的架構,并相信開放的開源治理對于這個架構是不可或缺的,我們會持續參與和支援社群化的開放開發,與社群一起打造下一代金融級雲原生技術。

繼續閱讀