1、2022 云安全聯盟大中華區-版權所有1如何設計安全的無服務器架構2022 云安全聯盟大中華區-版權所有3致致謝謝本文檔 如何設計安全的無服務器架構(How to Design a Secure ServerlessArchitecture)由CSA的專家編寫,CSA大中華區秘書處組織翻譯并審校。中中文文版版翻翻譯譯專專家家組組(排排名名不不分分先先后后)組長:何國鋒翻譯組:陳皓高亞楠胡向亮蔣蓉生李帥宇李騰飛李巖劉芳茆正華吳賀夏永濤謝佳徐文想徐帥健妮楊文宏岳婧張明敏周溥璇左奕航審校組:何國鋒解佳姚凱郭鵬程感謝以下單位對本文檔的支持與貢獻:北京啟明星辰信息安全技術有限公司北京山石網科信息技術有限
2、公司北京北森云計算股份有限公司成都云山霧隱科技有限公司貴州白山云科技股份有限公司上海安幾科技有限公司上海派拉軟件股份有限公司浙江大華技術股份有限公司中孚信息股份有限公司中國電信股份有限公司研究院中國工商銀行股份有限公司英英文文版版原原創創專專家家組組團隊領導者/作者:Aradhna ChetalVishwas ManralMarina BregkouRicardo FerreiraDavid HadasVani MurthyElisabeth VasquezJohn Wrobel主要貢獻者:Amit BendorPeter CampbellMadhav ChablaniJohn Kinsell
3、aNamrata KulkarniAkshay MahajanEric MatlockShobhit MehtaVrettos MoulosRaja RajenderanAbhishek VyasBrad WoodwardCSA全球員工:Marina BregkouClaire Lehnert (Design) Stephen Smith (Design)AnnMarie Ulskey (Cover, Design)審稿:Anil Karmel Alex Rebo在此感謝以上專家。如譯文有不妥當之處,敬請讀者聯系CSA GCR秘書處給與雅正!聯系郵箱:researchc-;云安全聯盟CSA公眾
4、號。2022 云安全聯盟大中華區-版權所有4序序 言言在當今快節奏的商業環境下,開發人員被要求更迅速地構建和部署應用程序以跟上業務發展需求,同時云原生理念也被普遍接受,基于云原生的無服務器架構因此日漸受到業界青睞。但是像其它云計算解決方案一樣,無服務器架構也帶來了各種各樣的安全風險。本文全面概括了無服務器平臺的各種威脅,重點關注無服務器平臺應用程序所有者面臨的風險,聚焦于最佳實踐,并提供了適當的安全控制建議。文中提出的基于無服務器的安全計算執行模型,對指導應用程序所有者如何采用無服務器架構具有極好的參考價值。李雨航 Yale LiCSA 大中華區主席兼研究院院長2022 云安全聯盟大中華區-版
5、權所有5目目錄錄致謝. 3執行摘要. 61. 介紹. 61.1 目的和范圍.61.2 受眾.72. 什么是無服務器.83. 為什么選擇無服務器.123.1 無服務器架構的優勢和收益.133.2 無服務器的共享責任模型.143.3 什么時候適合無服務器.144. 使用用例和舉例.155. 無服務器安全威脅模型.185.1 無服務器 一場全新的安全博弈?.185.2 無服務器威脅形勢.195.3 威脅模型25 項無服務器應用程序所有者面臨的威脅.225.4 無服務器威脅的獨特性.276. 安全設計、控制以及最佳實踐.346.1 無服務器設計注意事項.366.2 針對 FaaS 的控制.426.3
6、CI-CD 流水線、函數代碼、代碼掃描以及函數和容器的策略實施. 436.4 基于容器鏡像的無服務器增量/附加控制.476.5 合規和治理.637. 無服務器架構安全的未來愿景.667.1 無服務器架構的未來之路.677.2 無服務器架構安全.697.3 無服務器在數據隱私方面的進展.718. 總結. 729. 參考文獻.73附錄 1:首字母縮略詞.75附錄 2:術語表.772022 云安全聯盟大中華區-版權所有6執執行行摘摘要要無服務器平臺使開發人員能夠更快地開發和部署應用, 用一種簡單的方式將應用遷移到云原生服務上,而無需再管理容器集群或虛擬機等基礎設施。隨著企業努力更快地將技術價值推向市
7、場,無服務器平臺正逐漸獲得開發人員的青睞。像任何解決方案一樣,無服務器帶來了各種各樣的網絡風險。本文探討了無服務器應用的安全性,聚焦于最佳實踐和建議。本文全面概括了不同威脅,重點關注無服務器平臺面臨的應用程序所有者風險,并提供了適當的安全控制建議。從部署的角度來看,采用無服務器架構的組織可以專注于產品核心功能,而不必考慮負載平衡、監控、可用性、冗余和安全方面的工作來管理和控制平臺或計算資源。無服務器方案本質上是可擴展的,并為“即用即付”范式提供了大量的最優計算資源。此外,從軟件開發的角度來看,采用無服務器架構的組織可以獲得一種全新的部署模型, 在該模型下, 組織不再需要管理和控制底層操作系統、
8、 應用服務器或軟件運行時環境。因此,這樣的組織可以在更短的時間內部署服務并交付給市場,并降低總體運營成本。本文的建議和最佳實踐是通過在信息安全、云運營、應用程序容器和微服務方面具有廣泛知識和實踐經驗的多元化團隊間相互協作制定的。 這些信息適用于在無服務器環境中可能負有一定責任的受眾。1. 介介紹紹1.1 目目的的和和范范圍圍本文的目的是提供實現安全無服務器方案的最佳實踐和建議。無服務器服務涉及兩種角色:服務/平臺提供者無服務器平臺的提供者,可在此基礎上構建無服務器應用;應用程序所有者無服務器方案的用戶,他們的應用運行在無服務器平臺上。2022 云安全聯盟大中華區-版權所有7基于無服務器方案,服
9、務提供者提供彈性自動分配的計算資源,以滿足不同可執行體的需求,不需要用戶控制每個可執行體所需的資源。本文的范圍限于一個部門基于其他部門作為平臺提供者提供的無服務器解決方案來運行他們的工作負載。 無服務器的實現既包括基于容器鏡像的無服務器(也稱為容器即服務 Container-as- service) ,也包括基于函數的無服務器(也稱為函數即服務 FaaS) 。在本文中,我們將更多地關注應用程序所有者,并考慮在使用無服務器服務時對應用的威脅。然后,我們對安全最佳實踐提出了具體的建議,并列出了應用程序所有者應采用的建議控制措施。由于其他材料中有很多關于保護不同云服務的細節, 本文將只關注由于遷移到
10、無服務器服務而引發的變化,避免詳細闡述通用的云安全。本文的主要目標是提出并推進基于無服務器的安全云計算執行模型。 其目的還在于指導應用程序所有者如何采用無服務器架構。1.2 受受眾眾本文主要適用于應用開發人員、 應用架構師、 安全專業人員、 首席信息安全官 (CISO) 、風險管理專業人員、系統與安全管理員、安全項目經理、信息系統安全官以及任何對無服務器計算安全感興趣的人。本文假設讀者有一定的編碼實踐、安全和網絡專業知識,以及應用容器、微服務、函數和敏捷應用開發知識。由于無服務器領域技術在不斷變化,鼓勵讀者利用其他資源(包括本文中列出的資源)獲取最新和詳細信息。鼓勵讀者遵循與安全軟件設計、開發
11、和部署相關的行業標準實踐2022 云安全聯盟大中華區-版權所有82. 什什么么是是無無服服務務器器1)無無服服務務器器定定義義無服務器計算是一種云計算運行模型,在該模型中,云提供者負責為應用程序所有者的工作負載分配所需的計算和基礎設施資源。 應用程序所有者在任何時間都不再需要確定和控制分配多少計算資源(以及體量)來服務于他們的工作負載。它可以憑借大量的計算資源為工作負載提供按需服務。 無服務器計算基于“即用即付”范式提出, 在這種范式下,支付通常和實際的物理資源(如 CPU)使用量有關。使用無服務器的應用程序所有者使用服務提供者提供的能執行(調用、觸發)的“可調用單元” ,以及一組可調用單元執
12、行(調用、觸發)需要的“事件” 。應用程序所有者還可以提供支持的代碼在可調用單元運行。支持代碼可以作為庫提供,又稱為“層” ,可以在運行函數的上下文中運行(作為同一進程的一部分) ;也可以作為“擴展”或可以在同一環境中運行的支撐線程/進程(與可調用單元不同的進程) 。 “層”和“擴展”共享分配給函數的相同資源,并在同樣的上下文中運行。注意, “無服務器”這個名稱只適用于使用該服務的應用程序所有者所經歷的行為。在底層,執行代碼的 服務器仍然存在,但從應用程序所有者那里抽象出來。2) 可可調調用用單單元元不同的無服務器解決方案為可調用單元提供了一系列選項。 一個常見的服務選項是使應用程序所有者能夠
13、在服務提供者支持的運行態(JavaScript、Python、Java 等)中提供函數代碼。這種服務在業界被稱為“函數即服務”或 FaaS。在 FaaS 下,應用程序所有者提供的函數代碼通常嵌入到由服務提供者掌管的容器鏡像中。 FaaS 的擴展包括給服務提供者鏡像安裝額外的庫,以及在鏡像啟動和函數執行前向容器注入數據。第二個常見選項是讓應用程序所有者提供其控件的容器鏡像作為可調用單元。FaaS的這種擴展與非無服務器服務有很大的區別,后者的應用程序所有者提供了容器鏡像,并在托管或非托管容器服務上執行。下表強調了這一區別。在基于鏡像的無服務器模式下,服務提供者負責實現正確數量的可調用單元實例,以響
14、應任何給定時間的事件。2022 云安全聯盟大中華區-版權所有9無無服服務務器器微微服服務務(本文涉及)非無服務器(本文未涉及)名稱基于函數的無服務器基于容器的無服務器托管容器服務Kubernetes 服務由應用程序所有者交付可調用單元函數是否存在依賴 容器鏡像依賴特定編程語言因所有二進制文件和依賴項都已打包,可獨立于代碼語言運行應用??刂瓶蓤绦畜w的可擴展性、 負載均衡、 冗余度和監控實例服務提供者應用程序所有者控制實例可用性和冗余度服務提供者控制實例的可用性和冗余度應用程序所有者底層服務器的生命周期和擴展性服務提供者控制實例的可用性和冗余度應用程序所有者執行時間通常很短(秒級或更短)。一般限制
15、在幾分鐘。通常是長期和無限的。狀態無狀態和瞬時的所有狀態主要在可調用單元外維護通常情況下微服務是無狀態的,但可以在掛載的卷中維護狀態擴展計算服務提供者負責應用程序所有者負責支付模式即用即付為已分配資源付費運行時責任服務提供者應用程序所有者例子AWSLambda AzureFunctionGoogleCloud FunctionsIBM CloudFunctionsAWS FargateGoogle Cloud RunIBM Code EngineAWS ECSRed HatOpenshift (基于AWS/Azure/.)AWS EKSGoogle GKE Azure AKS IBMIKS在基
16、于函數的無服務器(也稱為無服務器函數)下, 鏡像由服務提供者擁有和控制,這將保證鏡像安全的責任留給了服務提供者。因此,服務提供者必須適當控制,以減輕鏡像給應用程序所有者工作負載造成的任何風險 (請參見本文 5.3 中的服務提供者控制的安全風險) 。2022 云安全聯盟大中華區-版權所有10在基于容器鏡像的無服務器(也稱為無服務器容器)下,鏡像由應用程序所有者擁有和控制,這將保證鏡像安全的責任留給了應用程序所有者。因此,應用程序所有者需要適當控制, 以減輕從鏡像到其工作負載的風險 (請參見本文 5.3 中的應用程序所有者設置階段威脅) 。3)事事件件事件是在無服務器環境中可能導致特定函數被觸發的
17、條件它可能包括新的附加數據、接收到的新數據包,或者只是不同周期階段的過期終結。除了可調用單元之外,事件驅動型應用程序的所有者還可以向服務提供者者提供一組事件, 從而定義何時需要執行可調用單元的實例來處理事件。服務提供者負責對事件排隊,初始化充足的可調用單元的模型,并根據服務級別協議,在約定的時間內可調用單元處理完成每個事件。事件的實際處理時間被累計用于計費。事件因事件的來源和事件的類型而有所不同。如定時器事件、web 請求觸發的事件、由存儲器或數據庫中的數據的變化觸發的事件、 由云帳戶的服務之間或用戶與云帳戶的服務之間的交互觸發的事件、來自事件服務的事件、云帳戶中的監控服務或日志服務的事件等。
18、4)無無服服務務器器安安全全概概述述無服務器安全帶來了一種新的安全范式:應用程序所有者除了保護數據之外,只負責應用的保護。所有管理服務器或其安全方面,包括啟動、機器操作系統(OS)打補丁、更新和降級,都由無服務器平臺提供者管理,從而使應用程序所有者能夠專注于應用本身,而不用再費心于基礎設施。但是,正如本文稍后在討論應用程序所有者需要考慮的威脅時將詳細介紹的那樣,無服務器也引入了它自己的安全挑戰。2022 云安全聯盟大中華區-版權所有11為了更好地解釋平臺提供者和應用程序所有者之間對不同模型的共享責任, 我們繪制了下面的圖。比較分擔責任模型無服務器責任模型詳圖:基于函數的無服務器(FaaS)共享
19、責任模型應用程序所有者的安全團隊程序代碼庫依賴關系云服務依賴關系IAM 配置云服務配置服務提供者的安全團隊事件系統容器鏡像計算資源虛擬化容器化服務器數據中心集群管理網絡鏡像管理存儲2022 云安全聯盟大中華區-版權所有12基于鏡像的無服務器共享責任模型由于基于函數的無服務器可以特定于操作/運行時環境,因此平臺提供者承擔了維護和更新不同版本和編程語言的責任。5) 混混合合無無服服務務器器架架構構(私私有有和和公公有有)業界存在許多無服務器架構,以下常見的基礎設施示例有(部分) :亞馬遜:Lambda, Fargate, AWS Batch谷歌:Cloud Functions, Knative,
20、Cloud Run微軟:Azure Functions, Azure Container InstancesNimbella:OpenWhiskIBM:Kortine(代碼引擎) 、OpenWhisk(Cloud Functions)紅帽:Koitine(OpenShift 的一部分)3. 為為什什么么選選擇擇無無服服務務器器與傳統的基于云的或以服務器為中心的基礎設施相比,無服務器計算有幾個優勢。在無服務器計算中,應用程序所有者通常不需要關心托管其應用的基礎設施,包括應用運行的操作系統的維護和補丁或基礎設施擴容。這能降低大量的運營成本。Manral,2021此外, 應用代碼是在動態平臺上承載和
21、運行的: 特定代碼可能運行在許多物理機器上,但應用程序所有者幾乎無法得知代碼具體在哪個物理機上運行。應用程序所有者的安全團隊應用代碼庫依賴關云服務依賴關系服務提供者的安全團隊事件系統計算資源管理虛擬容器化服務數據中心集群管網絡鏡像管存儲IAM 配置容器鏡像云服務配置2022 云安全聯盟大中華區-版權所有13無服務器平臺通常具有動態縮放功能。3.1 無無服服務務器器架架構構的的優優勢勢和和收收益益下表介紹了無服務器架構的幾大優勢,以方便讀者閱讀。無無服服務務器器架架構構可可提提供供的的優優勢勢本本文文討討論論的的無無服服務務器器架架構構部署速度無服務器使應用程序所有者專注開發業務應用,而不用關心
22、應用基礎設施,使業務能夠快速構建和部署應用。因此,它是一個很好的實驗工具,可為市場更快地帶來新價值。成本基礎設施成本:通常按每個事件計費,這意味著當不使用基礎設施時,不需要付費非常劃算的工作負載開銷即便不需要服務器時也不必維護它們,可以提供非常細粒度的資源使用控制。運營成本:沒有需要管理的基礎設施可以減少運營成本和維護它所花費的時間。Manral,2021應用程序擁有者的體驗容易部署:無服務器服務可以通過命令行工具, 編程控制或簡單的應用程序編程接口 (API) 以最少化的配置輕松部署。易于監控:大多數云提供商都提供與其無服務器產品捆綁在一起的開箱即用的日志記錄和監控解決方案。 該平臺由API
23、 驅動,這對應用程序擁有者的生產力至關重要。無服務器管理開銷:無服務器服務抽象了所有服務器管理任務,例如補丁、服務開通、容量管理、操作系統維護。規模按性質可擴展:無服務器根據使用情況在細粒度上自動擴展, 只需配置基礎設施而無需設置基礎設施無需配置擴展或縮減工作負載的策略。在本地工作時,伸縮僅限在于可用的基礎設施上。2022 云安全聯盟大中華區-版權所有143.2 無無服服務務器器的的共共享享責責任任模模型型在共享責任模型中,開發人員負責保護他們的代碼和用于向云交付應用程序的工具。在這個共享的責任模型中,每一方都完全控制他們所擁有的那些資產、過程和功能。服服務務應應用用程程序序擁擁有有者者無無服
24、服務務器器平平臺臺提提供供商商平臺補丁基于鏡像和功能的無服務器。平臺配置與應用程序相關的應用程序和平臺配置。向應用程序擁有者開放最小配置。鏡像補丁基于鏡像的無服務器容器?;诤瘮档臒o服務器安全編碼實踐基于鏡像和函數的無服務器。供應鏈安全基于應用和組件的供應鏈。平臺供應鏈.網絡安全監控基于鏡像和函數的無服務器。應用程序安全監視 基于鏡像和函數的無服務器CI / CD流水線配置基于鏡像和函數的無服務器3.3 什什么么時時候候適適合合無無服服務務器器當存在相對較大的應用程序或應用程序集以及成熟的軟件開發和運營 (DevOps) 團隊、流程和產品來支持它們時,無服務器模型最合適。在這種情況下, 應用程
25、序可以分解為稱為微服務的較小組件 (請參閱 Best Practices inImplementing a Secure Microservices Architecture ) 。 每個都支持一個或多個團隊,并在無服務器環境中運行。 這允許通過專注于特定功能來更有效地使用開發資源。 與單體應用2022 云安全聯盟大中華區-版權所有15程序相比,該模型還允許對每個微服務進行更敏捷的開發,因為應用程序的每個部分的功能都可以轉移到生產中,而無需過多關注與其他應用程序功能的完全集成和回歸測試。對于相對較小的應用程序或團隊, 無服務器模型有時比擁有支持應用程序的傳統基礎架構(例如 IaaS 基礎架構即
26、服務或 PaaS 平臺即服務)的成本效益要低。 較小的應用程序通常具有較低的復雜性,并且失去了將應用程序分解為微服務的好處。在這種情況下,微服務可以與其他服務緊密耦合,可能失去了微服務的一些長處,例如可復用性。 支持微服務的資源不足可能會導致團隊需要停止一個微服務以支持另一個微服務。同樣重要并需要注意的是,幾乎在所有情況下,無服務器架構可簡化部署過程。 部署包括簡單地上傳一個容器鏡像或一組代碼, 而不像傳統的應用程序部署那樣關注資源供應和網絡架構。 所以企業在決定組織在決定使用無服務器體系結構時,需要執行業務影響分析和成本/效益分析,以選擇技術效率最高、成本效益最高、適合其業務需求的解決方案。
27、4. 使使用用用用例例和和舉舉例例無服務器計算的關鍵作用是為云程序員提供必要的工具, 這些工具可以通過消除對基礎架構的考慮并支持直接使用編程語言來降低云計算架構的復雜性。然而,許多問題需要提前解決,包括負載平衡、請求路由以有效利用資源、系統升級(例如安全補?。?、遷移到新的可用實例以及冗余副本的地理分布以便在發生災難時保護服務。無服務器架構的一個使用用例是, 在沒有操作和擴展基礎設施方面廣泛技術專業知識的情況下,擁有超大彈性擴容的基礎設施。無需維護硬件、操作系統或支持軟件,即可構建、部署、管理和擴展無服務器應用程序。這使應用程序擁有者能夠專注于業務邏輯,而不是非核心的能力。應用程序擁有者的成本是
28、高度精細的,費用隨著使用而線性增長,從而產生一致的經濟可行性??偝杀救Q于運營規模??蛻?用戶必須根據其需求決定平臺規模。無服務器架構還有一些業務使用用例是:(注意:這并不是一個全面的使用用例的存儲庫,而只是提供一些示例來,為安全專業人員提供一些參考)。2022 云安全聯盟大中華區-版權所有16Web應用程序:用戶需要訪問現有的服務并查看或進行較小更新的地方。在該活動完成之后,該功能可能會被刪除基本上是傳統的請求和響應工作負載??梢允褂脽o服務器功能,但仍然需要解決錯誤的身份驗證和不可抵賴性等安全威脅。數據處理活動是事件驅動的,在數據處理請求完成后,服務可能會被刪除。例如,啟動觸發器以通過經紀賬
29、戶拉取一天內為客戶購買的所有賬戶借方或股票的報告。除了身份驗證和授權之外,數據完整性、機密性和安全性問題也是無服務器功能需要關注的。批量處理使用用例,通過設置一系列觸發器,并構建一個工作流來提取、操作和處理數據。例如,拉出一份未通過碳排放測試的汽車列表,并向車主發送一封電子郵件,其中包含州要求和標準以及滿足這些要求的截止日期。 安全問題主要是低權限訪問、數據機密性和用戶隱私。事件采集和集成:從分析應用程序中收集所有事件,并將它們提供給數據庫,用于索引和歸檔事件,并使用特定觸發器啟動報告功能或發布到儀表板/瀏覽器界面。在這種情況下,必須從安全角度解決訪問管理和不可否認性問題,并確保使用檢測所需的
30、元數據生成日志。無服務器已經在行業中用于安全檢測和自動響應,主要用于警告錯誤配置和采取后續行動。無服務器可用于圖片識別和處理。例如谷歌Vision和亞馬遜 Rekognition服務,然后根據標識對這些圖片進行索引?;蛘?,無服務器也用于構建應用,客戶上傳信用卡信息,然后提取屬性來處理交易。對于這些使用用例,數據安全性、隱私、身份和訪問管理問題都需要解決。在一些使用用例中,可以生成觸發器,將事件流水線傳遞給SaaS提供者進行處理。CI-CD流水線需要快速迭代軟件開發的能力。無服務器可以自動化許多這些過程。代碼檢查可以觸發構建和自動重新部署, 或者變更請求可以觸發運行自動化測試,以確保在人工審查之
31、前對代碼進行了良好的測試。在任何需要自動化的地方,都有可能使用無服務器應用程序簡化或加速自動化,并可以輕松地從工作流程中消除手動任務。在物聯網傳感器輸入消息的工業環境中, 需要基于可設置的觸發器處理這些消息,然后使用無服務器功能響應消息并進行擴展。在某些情況下,不安全功能的影響2022 云安全聯盟大中華區-版權所有17可能非常嚴重。因此,除了故障之外,身份驗證、數據保護和檢測是這些場景中需要解決的重要控制。如果有一個應用程序需要基于業務邏輯執行特定的步驟:可以使用無服務器功能來實現執行一系列步驟的微服務工作負載的編排。從編排的角度來看,使用無服務器存在幾個安全問題;從可審核性的角度來看,觸發事
32、件傳遞的數據/元數據、故障/可用性、以及身份驗證和授權之外的不可否認性問題。假期期間的客戶服務使用用例,響應客戶的查詢,即聊天機器人,無服務器提供自動伸縮以滿足高峰需求并在聊天結束后刪除其功能。從安全角度來看,用戶身份驗證和數據保護/隱私仍然是需要解決的問題。行業中無服務器的其他流行使用用例是基礎設施自動化任務, 例如在定時備份等。從安全團隊的角度來看,企業面臨的一個重要的問題是,他們可能不知道在他們的平臺中所有的無服務器功能都在哪里使用了考慮到其中一些功能可能是臨時的,這就使它變得很困難。以下章節提供了構建控件的詳細建議,這些控件將有助于企業中無服務器的可見性和資產跟蹤。如上所述, 安全團隊
33、可以使用無服務器函數來觸發和使用其他無服務器函數以自動化安全任務。檢測和響應的使用用例在業界已經很普遍,但安全團隊還可以使用無服務器的其他任務,比如CI-CD 流水線中自動掃描發現漏洞時強制中斷構建。無服務器函數可以按需觸發對基礎架構的掃描,并報告結果或自動執行。無服務器函數也可用于加強其他安全控制。例如,每當用戶上傳數據元素時,函數都會檢查數據是否已被標記或標簽。如果沒有,它會向用戶生成警報或電子郵件,告知上傳的文件沒有被標記。然后將其進行隔離,直到標記,以確保適當的DLP或其他合規政策可以執行。無服務器函數也可用于安全策略的執行,例如在驗證對服務的訪問時,函數檢查可以確保是否落實身份驗證。
34、或者還會需要升級身份驗證,因此失敗的身份驗證保證級別有可能觸發另一個功能請求升級身份驗證。同理,可能還有其它函數用于執行安全政策。類似地,無服務器在安全領域中的應用也在逐步被探索,并在使用無服務器功能去簡化和自動化安全任務這一項上還具有無限潛力。同時,安全團隊與開發人員也必須了解對無服務器技術至關重要的威脅概況和安全控制,這些將在后面章節中詳細討論。2022 云安全聯盟大中華區-版權所有185. 無無服服務務器器安安全全威威脅脅模模型型在使用無服務器技術時,應用程序的開發者需要關注多種威脅。本節將討論無服務器服務的使用是如何以及為何改變了應用程序服務的威脅形勢。 詳細介紹無服務器獨特威脅模型及
35、表現方式;以及針對無服務器的特殊安全注意事項及工具。無服務器緩解措施、設計架構及減少安全控制在第6章中介紹。5.1 無無服服務務器器 一一場場全全新新的的安安全全博博弈弈?云服務提供者引入無服務器服務,給應用/服務開發商和擁有者帶來了全新的安全挑戰。無服務器作為事件驅動架構,將工作負載分解成多個無縫隔離的執行環境。每個執行環境都承載著一個特定任務并負責處理一個單獨事件,在時間與空間中各自運行,具有自己的依賴項、代碼、鏡像、權限要求、配置和生命周期。和傳統安全威脅模型以及非無服務器的微服務環境中的云威脅模型相比有顯著變化。 使用無服務器的應用程序擁有者需要重新評估不斷進化的威脅形勢,并重新考慮所
36、需的恰當安全控制。無服務器也許包括一些跨越信任邊界的流量,例如從公共位置獲得數據,將數據輸入客戶經營場所,調用其它位置的函數等?,F有的網絡邊界正在逐漸消散。這種碎片化也會導致需要大幅增加收集、處理和分析以檢測攻擊的安全原始數據量。無服務器是將工作負載深入云中的又一步驟, 同時將更多過去由工作負載開發人員擁有和控制的功能轉移到云服務提供者(CSP)手中。例如,在以前的傳統代碼中作為函數調用實現并可能成為微服務中的Rest API,現在轉變成了由云服務提供者(CSP)來提交、排隊、處理的事件。云服務提供者(CSP)會跟進直至實際數據被功能函數處理完成 -一直到請求者要求處理這些數據之后的某個時候。
37、 應用程序擁有者將多項安全控制權放權給服務提供者 - 這個過程再次要求重構服務消費者的權限和義務,以此來保證基于無服務器的微服務/應用的安全性以及明確由誰來做。我的服務功能 2功能 1傳統服務2022 云安全聯盟大中華區-版權所有19功能 2無服務器 一場全新的安全博弈5.2 無無服服務務器器威威脅脅形形勢勢5.2.1 主主要要威威脅脅領領域域使用無服務器時對應用程序擁有者工作負載的威脅可以分為以下幾類:1.應用程序擁有者設置階段威脅2.應用程序擁有者部署階段威脅3.服務提供者的行為威脅Kubernetes/容器管理服務Rest API微服務 6微服務 7微服務無服務器功能 2功能 1功能 1
38、2022 云安全聯盟大中華區-版權所有20在下述圖表中,我們總結了無服務器下應用程序擁有者的主要威脅領域。威脅形勢5.2.2 應應用用程程序序擁擁有有者者設設置置階階段段的的威威脅脅我們將與應用程序所有者準備工作負載資產相關的威脅包命名為部署威脅, 包括所有必要的代碼、鏡像、CI/CD工作、云資源的供應和配置等,統稱為應用程序擁有者設置階段的威脅。 其中包括了無服務器特有的一組威脅和一組存在于系統中 (如微服務) 的威脅,但隨著時間推移, 系統中運行或啟動不同的重復代碼的預期數量會隨著無服務器的使用而增加。對于無服務器而言, 應用程序擁有者設置階段的威脅的獨特性包括由訪問權限或配置錯誤而導致的
39、威脅:2022 云安全聯盟大中華區-版權所有21廣泛且通用的權限廣泛且通用的事件訪問在無服務器控制上擁有廣泛的用戶權限弱配置應用程序擁有者設置階段的威脅隨著向無服務器的轉變而加劇,其中包括:CI/CD流水線或依賴項中與交付流程相關的威脅:可利用的存儲庫和基本映像注冊表針對/通過構建/部署工具的攻擊易受攻擊的依賴關系易受攻擊的基本鏡像錯誤配置導致的與服務設置相關的威脅:相關云服務的錯誤配置或漏洞5.2.3 應應用用程程序序所所有有者者部部署署階階段段威威脅脅本文命名與應用程序所有者部署工作負載資產相關的威脅包, 包括所有無服務器關聯的云和云外資產、應用程序所有者部署階段威脅。本文再次區分了無服務
40、器特有的威脅和因使用無服務器而加劇的威脅:無服務器特有的應用程序所有者部署階段威脅包括:可調用單元的設計和實現造成的運行時相關威脅:數據注入全局環境泄漏錯誤和異常處理不當認證中斷或不安全與無服務器按量計費相關的威脅:財政和資源枯竭(如果已設定資源限制)資源豐富和意外開支。應用程序所有者部署階段因使用無服務器而加劇的威脅包括:2022 云安全聯盟大中華區-版權所有22密鑰管理不安全不安全的日志記錄/監控日志和元數據中的敏感數據記錄/監測不足且不安全5.2.4 服服務務提提供供者者的的行行為為威威脅脅本文將與應用程序使用的服務提供者提供的服務相關的威脅集命名為服務提供者的行為威脅,包括服務提供者使
41、用的整個堆棧,以及用于形成無服務器或相關服務的任何依賴項、個人和其他資產。這些威脅包括無服務器獨有的,也包括與其他服務中相似的:易受攻擊/惡意的服務基礎鏡像易受攻擊的運行服務可調用單元調用之間的漏洞不同可調用單元之間的漏洞無服務器服務正確性API/門戶/控制臺漏洞5.3 威威脅脅模模型型25項項無無服服務務器器應應用用程程序序所所有有者者面面臨臨的的威威脅脅下表列出了無服務器面臨的各種威脅。序序號號威威脅脅類類別別威威脅脅描描述述緩緩解解措措施施(安安全全控控制制)應應用用程程序序所所有有者者設設置置階階段段的的威威脅脅(A)無無服服務務器器面面臨臨的的特特有有威威脅脅1泛泛化化和和通通用用權
42、權限限未維持可調用單元的最小特權原則。應用程序所有者可以定義無服務器可調用單元在運行時可擁有的特權。過多權限可能被攻擊者利用開展網絡攻擊。見章節6,6.3.5, 6.3.7.1,6.3.7.2等。2泛泛化化和和通通用用的的事事件件訪訪問問未維護觸發可調用單位的事件的最小特權原則。應用程序所有者可定義有權限觸發可調用單元事件的用戶。 泛化的訪問控制極大的減化了攻擊的執行難度, 增加了事件驅動的無服務器架構中的攻擊面。見章節6,6.3.5, 6.3.7.1,6.3.7.2等。2022 云安全聯盟大中華區-版權所有233無無服服務務器器訪訪問問控控制制的的泛泛化化用用戶戶特特限限未維護團隊的最小特權
43、原則。應用程序所有者可定義有權設置無服務器服務、鏡像存儲等的用戶。更泛化的訪問增加了潛在的攻擊路徑,增加了來自內部人員的風險。見章節6,6.3.5, 6.3.7.1,6.3.7.2等。4不不完完善善的的配配置置無服務器配置不完善和配置遷移可能會使平臺和所承載應用程序易遭受攻擊。許多用于托管無服務器應用程序的服務的配置不安全。 特定的配置參數對應用程序的整體安全狀況具有重要影響,應予以關注。例如,誰可以承擔執行功能的角色, 以及基于這個假定的角色,能實現什么?見章節6,6.3.7.2.6.3.26.3.36.3.4等。無無服服務務器器面面臨臨的的通通用用嚴嚴重重威威脅脅5相相關關云云服服務務的的
44、錯錯誤誤配配置置或或漏漏洞洞其他云服務與無服務器服務協同構建的工作負載可能配置錯誤或易遭受攻擊。通常, 可調用單元的安全性取決于所使用的相關云服務的安全性。例如,可調用單元的安全性可能依賴于密碼服務或身份和訪問控制管理系統等的安全功能。 可調用單元也可能依賴于供應鏈中第三方提供的服務。 因此,對其他服務的依賴和這些服務中的錯誤配置作為無服務器應用程序的一部分, 會影響無服務器功能的完整性。見章節6, 6.3.7.1,6.3.7.2, 6.3.3等。6可可利利用用的的存存儲儲庫庫和和基基本本鏡鏡像像注注冊冊表表用于存儲庫依賴項和基礎鏡像的存儲庫和注冊表中存在漏洞。攻擊者可能會嘗試通過識別共享(公
45、共或私有) 代碼存儲庫和鏡像注冊表中的漏洞來組合應用惡意代碼。由于獨立可調用單元數量的潛在急劇增加, 無服務架構面臨的威脅也會增加。見章節6,6.3.3等。7攻攻擊擊對對抗抗/通通過過構構建建/部部署署工工具具用于構建和部署可調用單元和事件的 CI/CD 自動化工具的漏洞和錯誤配置。作為 CI/CD 實踐的一部分,自動化工具通常用于構建、 部署可調用單元格(包括將觸發它的事件)。這種自動化功能需要通過具有提升權限的工具來存儲可調用單元和設置無服務器云服務。 攻擊者可能會使用提升后的權限將惡意代碼合并到目標應用程序中, 或者作為一種導致無服務器應用程序更新發生拒絕服務的方法。見章節6,6.3.7
46、.1等。2022 云安全聯盟大中華區-版權所有248脆脆弱弱性性依依賴賴(易受攻擊的依賴項)任何第三方庫中的漏洞或惡意代碼都可能導致可調用單元發生供應鏈攻擊。應用程序可調用單元通常使用多個第三方庫依賴。 此類庫可能包括現有或新發現的漏洞。 此外,惡意攻擊者可能會在此類庫中嵌入惡意軟件這適用于所有應用程序和服務, 包括無服務器微服務。見章節 6,6.1, 6.2,6.3.7.1,6.3.7.2等。9易易受受攻攻擊擊的的基基礎礎鏡鏡像像基于鏡像的無服務器服務形成的基礎鏡像中的漏洞。應用程序所有者在基于鏡像的無服務器下構建的基礎鏡像易遭受預安裝依賴項中多種現有或新發現的漏洞的影響, 并且還可能包括預
47、安裝的惡意軟件。見章節6,6.3.3等。應應用用程程序序所所有有者者部部署署階階段段威威脅脅 (B)1數數據據注注入入無服務器可調用單元在激活期間從各種事件接收輸入 - 每個此類事件都代表數據注入相關的潛在威脅。當不受信任的輸入在經過適當審查和驗證前直接傳遞給解釋器執行, 就會出現注入漏洞。 此類漏洞通常被攻擊利用。 大多數無服務器架構提供了大量事件源, 可作為數據注入攻擊的潛在載體。 數據注入事件還會破壞業務函數的執行排序并導致拒絕服務。見章節6,6.3.7.2等。2全全局局信信息息泄泄漏漏無服務器全局信息可能引發信息泄露,例如,在可調用單元的調用時會進行令牌維護(例如,無需每次調用都重新驗
48、證身份),全局信息可能會在請求時泄漏敏感數據。由于可調用單元的不同調用通常用于為其他工作負載的用戶的數據使用提供服務, 因此可調用單元與其他請求之間發生數據泄漏是一種威脅。 敏感數據可能會留在容器中, 并可能在函數的后續調用期間暴露。 惡意數據可能被故意留下來攻擊函數的未來調用。見章節6,6.3.7.2等。3錯錯誤誤和和異異常常處處理理不不當當與標準應用程序的調試功能相比,基于無服務器應用程序的云初始調試選項有限(且更復雜)。錯誤處理不當會產生漏洞并允許惡意操作, 例如緩沖區溢出攻擊和拒絕服務攻擊。 詳細的錯誤消息可能會導致信息意外泄露給攻擊者- 這適用于所有應用程序、 無服務器、 元數據和資
49、源。見章節6,6.3.7.2等。2022 云安全聯盟大中華區-版權所有254損損壞壞或或不不安安全全的的身身份份驗驗證證對事件源的身份和/或發起此類事件的用戶/進程的身份驗證不正確。通常, 可調用單元需要確認所發送事件背后的實體的身份。 攻擊者將試圖利用所使用的身份驗證機制中的任何漏洞。見章節6,6.3.7.2,6.3.5等。5財財務務及及資資源源枯枯竭竭攻擊者利用無服務器機制惡意占用資源攻擊者可能會利用無服務器的“即用即付”服務機制,通過創建許多調用應用程序可調用單元的虛假事件和/或通過啟動導致告警的事件(例如,通過暴露代碼或依賴項中的一些其他弱點)來迫使應用程序所有者長時間支付大量的計劃外
50、費用。見章節6,6.3.6等。6資資源源冗冗余余無服務器機制被攻擊者利用作為無限計算資源池攻擊者可能會利用無服務器可作為無限資源池的機制。 并鑒于這些漏洞去利用可調用單元可用的大量計算資源并利用它謀取利益, 例如,利用相關資源進行挖礦或對某些第三方發起攻擊。見章節6, 6.3.7.1,6.3.7.2, 6.3.3等。無無服服務務器器面面臨臨的的通通用用嚴嚴重重威威脅脅7不不充充分分且且不不安安全全的的審審計計/監監測測對安全事件的態勢感知不足,無法監測安全漏洞。審計不足會妨礙組織對攻擊/違規行為迅速做出響應的能力, 并使取證分析變得困難或不可能。見章節6, 6.3.7.1,6.3.7.2, 6