螞蟻金服在過去十五年重塑支付改變生活,爲全球超過十二億人提供服務,這些背後離不開技術的支撐。在 2019 杭州雲棲大會上,螞蟻金服將十五年來的技術沉澱,以及面向將來的金融技術創新和參會者分享。咱們將其中的優秀演講整理成文並將陸續發佈在「 金融級分佈式架構」公衆號上,本文爲其中一篇。nginx
本文做者:何徵宇,gVisor 創始人,螞蟻金服研究員git
在雲原生髮展趨勢之下,金融行業想要應用雲原生技術,安全問題是一個很是大的攔路虎,而云原生社區對安全問題的重視程度遠遠不夠。螞蟻金服在落地雲原生的時候,解決安全問題是重中之重,通過探索與實踐,咱們沉澱出了一套從底層硬件到軟件、從系統到應用層的全鏈路金融級雲原生安全架構。github
金融行業最重要的就是信任,咱們認爲,安全所帶來的信任,是一種無形的產品,支撐着全部金融業務。編程
順應互聯網時代發展,金融行業與機構也發生了不少的變化,包括 App、小程序等更多的訪問渠道,更快的業務變化,更多的第三方供應商。可是,無論怎麼變化,金融行業有一點始終不變,那就是 Zero Fault,對錯誤的零容忍,也就是對穩定性和安全性的極高要求。小程序
這裏,我還想澄清你們對金融行業的一個錯誤見解,就是,你們都說金融機構有不少遺留系統,不少技術是十幾年前的,就認爲金融機構的技術是落後的。但其實,金融行業一直是科技含量很是高的。前段時間有一部電影上映,叫《蜂鳥計劃》,根據真實事件改編,講一幫作高頻交易的人,爲了下降從堪薩斯到紐約交易所的時間,建造了一條上千英里直通兩地的光纖,想盡辦法去爭取那最後一毫秒。因此,金融行業並不僅有平庸保守的科技,它一樣也在追逐最前沿最早進的技術,咱們的使命就是要用科技來進一步武裝金融行業,爲金融科技注入更多的活力。安全
雲原生架構其實表明一種新的生產力,金融行業確定是須要雲原生的,它爲咱們帶來了節約成本和敏捷開發的能力,可是在它前面還須要加一個定語,就是安全的雲原生架構,它裏面不只僅包含以前的相對簡單的安全方案,而是一個從端到端的全鏈路可信的安全解決方案。包括明晰代碼全部權,作到可信啓動,對鏡像的製做和發佈收口,配合帳號體系,明晰應用的全部權和訪問權限;以及安全可獨立部署的精細化隔離方案,將安全策略和實施集成在基礎架構中,對軟件開發和測試透明。服務器
這裏咱們着重分享螞蟻金服正在實踐的幾項雲原生安全技術,包括雲原生網絡安全 Service Mesh,安全容器,以及機密計算。網絡
當前,雲原生裏除了容器以外第二大技術其實就是 Service Mesh,從螞蟻的實踐來看,其實它對金融安全有很是高的幫助。它至少能夠作到三點:架構
而且,這些工做對業務是透明的,不須要給業務開發增長負擔,同時咱們還能夠對流量進行實時的語義分析等等,作比傳統的防火牆更多的事情。負載均衡
螞蟻金服在對 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%。
傳統容器架構
提雲原生你們確定都會提容器,傳統容器從虛擬機到容器,實際上是犧牲了隔離性的,從上圖能夠很清楚的看到,當咱們的應用在容器裏,其實共享着同一個 CPU、內存、網絡和存儲,只是從外面看起來是不一樣的。這會致使安全上的問題,就是不一樣的容器之間不存在真正的隔離,一旦一個容器發生安全問題,極可能影響到其它容器,甚至入侵整個系統。螞蟻金服在這方面作的工做就是安全容器,具體就是 Kata Containers。
安全容器架構
Kata Containers 安全容器是 OpenStack 基金會的頂級開放基礎設施項目,由螞蟻金服和 Intel 共同主導開發。在安全容器裏,每一個 Pod 運行在獨立的沙箱中,彼此不共享內核,提供強安全保障。這裏給你們分享一下 Kata Containers 的近期進展,針對你們最關注的性能問題有了很是大的提高:
咱們也會和社區一塊兒繼續共建 Kata Containers,讓安全容器成爲雲原生的標配。
安全容器能夠有效的保護主機,可是,金融業務自己仍然須要更強的隔離保護,螞蟻金服引入了機密計算,並根據實際場景研發了大規模落地解決方案 SOFAEnclave。
所謂機密計算,也就是基於例如 Inte SGX,ARM Trustzone 等可信執行環境(Trusted Execution Environment, TEE),也稱爲 Enclave ,訪問計算機內存時隔離用戶數據,以免將數據暴露給其餘應用程序、操做系統或其餘雲服務器租戶的解決方案。
Enclave架構
Enclave 是運行時的雙向保護,好比說你的金融業務跑在 Enclave 上的時候,操做系統都看不到 Enclave 裏的內存,同時會進行完整性檢查,保證訪問 Enclave 的代碼不被替換。
可是 Enclave 目前存在一些問題,阻礙了它在實際生產環境中的應用。總結這些問題包括:
第一,須要改寫應用,由於可信執行環境裏面沒有內核和基礎庫,因此無法把應用直接在 Enclave 中執行;第二,須要分割應用,須要把業務程序劃分爲 Enclave 內和 Enclave 外的部分;第三,未集羣化,與客戶端場景不一樣,Enclave 中的應用如何 failover,容災也是阻止其在數據中心中大規模使用的一個緣由。
螞蟻金服針對這些問題的答案就是 SOFAEnclave 機密計算中間件。
SOFAEnclave 架構
SOFAEnclave 由三個組件組成,第一個是 Occlum LibOS,另一個是 SOFAst,以及 KubeTEE。Occlum 是螞蟻和英特爾、清華主導開發的一個內存安全的多任務 Enclave 內核,把系統內核的功能經過 lib 的方式連接過去,經過這種方式給 Enclave 增長功能。同時咱們也創新性的解決了在 Enclave 跑多進程的方式,讓 Enclave 真正適配大型的應用。
想詳細瞭解 SOFAEnclave 的技術細節,能夠參考這篇文章:《SOFAEnclave:螞蟻金服新一代可信編程環境,讓機密計算爲金融業務保駕護航102年》
SOFAEnclave 開源組件 Occlum GitHub 主頁:https://github.com/occlum/occlum
當咱們把這些安全組件與雲原生框架編織在一塊兒,構成一個全景,就是咱們正在構建的金融服務的安全雲原生安全架構——基於阿里雲和 Kubernetes,以端到端的安全性保障金融服務。
上述這些組件有些是螞蟻金服在實踐檢驗以後開源並與合做夥伴和社區共同發展的,有些從開始就是在社區中開發的。與傳統金融行業的技術發展不一樣,咱們提倡創建一個開放的架構,並相信開放的開源治理對於這個架構是不可或缺的,咱們會持續參與和支持社區化的開放開發,與社區一塊兒打造下一代金融級雲原生技術。
https://gitee.com/sofastack/sofa-mosn
SOFAMosn(Modular Observable Smart Network),是一款採用 GoLang 開發的 Service Mesh 數據平面代理,旨在爲服務提供分佈式、模塊化、可觀察、智能化的代理能力。SOFAMosn 經過 XDS API 與 SOFAMesh 集成,同時 SOFAMosn 能夠做爲獨立的四、7層負載均衡使用,將來 SOFAMosn 將支持更多雲原生場景,並支持 nginx 的核心轉發功能。
今年 '618' 螞蟻金服已經完成核心繫統上到 SOFAMosn 的驗證工做,在立刻來臨的今年的雙 11,阿里巴巴和螞蟻金服將會在覈心繫統大規模上線 Service Mesh。
ElasticDL 是螞蟻金服發佈的新一代基於雲原生的開源 AI 學習平臺,它的架構基於原生的 Kubernetes 體系,所以具備強大的容錯能力和彈性調度能力。另外,ElasticDL 可以支持新一代的 TensorFlow 2.0 框架,也但願引領 AI 開發者走向新一代的機器學習。
將來,ElasticDL 會支持更多的 AI 模型,讓它自己變得更強大,也會更好地融入雲原生體系和 Kubernetes 體系。