您的應用程序在無伺服器運作,傳統安全最佳做法不再適用,怎麼辦?!
如果您是無伺服器主機的擁護者,那麼對於無伺服器的應用程序架構上,可提高其安全性就不足為奇。在無伺服器的架構下,您不需要再為您的伺服器做補丁的更新;其短時間的應用與不會記錄過程中的狀態將使用攻擊者更加的難以入侵。現在,您的應用程序在雲的架構裏已是大量的小型的應用功能,這讓您可以清楚的看到每個應用的狀態。不過,威脅對您來說,還是會持續存在,無伺服器的架構只是改變原本的作法與維運方式,但其包含了數百種的應用與功能,這意味者攻擊者的攻擊面已更改,維護的管控和安全性需要思維方式的轉變。在此,我們介紹了9種無服務器安全最佳實踐方法供您參考。
1. 標示出您的應用程序
由於無伺服器應用程序包含數百種功能,因此您必須對整個應用有完整了解,才能理解潛在的風險。如果只用“Code”表示整個流程,這是非常敏感的,您必需考慮:
-
您的應用程有涉及什麼樣的資料?這些資料有多敏感?
-
這些資料有什麼樣的價值等…如果資料發生外洩會造成什麼樣的影響?
-
什麼樣的服務(APIs)會存取到這些資料?
隨著您的應用程序被廣泛的使用,對於維護而言,將會是一個挑戰;考慮可以幫助您加強整個應用程序環結的服務。
2. 針對“功能層級”的應用來做安全政策的配制
將您的應用程序調整為較小的元件,並可被像是資料庫、存儲設備或是Message Queues等來觸發、使用,這意味著攻擊者將擁有更多的攻擊目標與媒介。
3. 對每個功能建立適合的最小權限角色
無伺服器可以大大增加可使用的資源數量;所以,您必須考慮用於控制數百個資源之間交互的策略,每個方向都具有數百個可能的權限。
花時間為每個功能創建合適且權限最少的訪問角色。所以,請確保您的每個功能都以最小的可行權限執行;從特權開始,僅在需要時擴大特權,以減少影響。經常對這些特權進行連續性的評估,並實施自動修復以糾正任何超出策略範圍的特權。在無伺服器的環境中,原本配置良好的事情可能突然變得不理想;因為其他角色可能已經改變原本的功能或是策略,進而使應用程序的其他部分易受攻擊。
4. 安全的應用程序依存關係
功能的相依性通常包括從npm(Node.js)、PyPI(Python)、Maven(Java)或其他相關Repository引入。應用程序相依性;尤其是開放源的使用是非常普遍,但是經常受到定期揭露的新漏洞的影響;對於無伺服器環境下手動管理開放源的相依性是特別具有挑戰性。
保護應用程序的相依存關係需要有較佳的數據資料與自動化工具,以防止使用到新的易受攻擊的新漏洞,並就新發現的問題提出警示。Source Composition Analysis(SCA),此工具有助於在開發生命週期的早期識別開放源的漏洞;此外,通過確保將應用程序正確劃分為不同的服務,並謹慎採用最低特權原則,將易受攻擊的庫的影響降至最低。
5. 對於不良的程式碼保持警戒
無伺服器的部署擁有多樣性的觸發能力和無限的擴展性,但卻意味著最小的程式碼錯誤也有可能迅速的從您應用程序內部轉變為一種自發的DoS。
確保開發人員受到充分的培訓, 程式碼的審查也將有所幫助;不過,大多數情況下,建議使用工具來測試配置以監視程式碼與其和配置。
6. 將服務設定的測試加到CI/CD與PROD
無伺服器部的應用提高了生產的速度、提升了應用程序創造價值的速度,但也提供了許多破壞安全性的機會。因此,測試並驗證您認為您剛剛在設定中所做的事情亦是必然; 您必須持續測試您配置是否為實際正在運行的內容。
7. 觀察資料訊息
資料流的影響是無伺服器獨有的,這是因為應用程序中元件的數量大大增加,所以您必須時時監測資料的訊息,以確保它僅在所需的服務之間進行,並且正確的信息會在正確的位置出現。
8. 持續減輕Denial of Service或是Denial of Wallet
儘管無伺服器的應用程序調整使用很容易,不過不是無限制的擴充的。如果攻擊者可以使您的限制達到極限,那麼您仍然容易受到“DoS”攻擊. 如果您擴充上限很高,可以避免此問題,但是您現在將面對更新的攻擊“DoW”。在這種攻擊中,攻擊者會淹沒您的應用程序,從而增加您的開支。使用無伺服器;啟用用大規模自動擴展,可以幫助緩解某些DoS攻擊,但仍容易受到DoW攻擊。
在Web伺服器前部署適當的緩解措施來緩解DoS攻擊,例如Amazon的API Gateway外,還應考慮通過其他觸發器(例如Kinesis和S3)進行DoS和DoW防護。這些功能可以幫助檢測這些攻擊,將其影響降到最低,並動態調整以幫助緩解。
9. 使FAAS容器服務處於最新的狀態
考量到一些功能在使用情境上的壽命策略(在某些平台上,提供可用於刷新function instances的API);一些安全解決方案可以為您做到這一點。此外,請確保您具有一個安全解決方案,該解決方案可以檢測出試圖掛在function instances,例如額外程式碼或是隱藏的native process等,然後將這些事物從容器中清除。
結論:
就像保護網絡安全一樣,保護無伺服器應用程序的安全需要在整個應用程序開發生命週期和供應鏈中採取多種策略, 嚴格遵守安全策略將改善您的安全狀況。但是,只是這樣是遠遠不夠的,為了獲得最佳的保護,您必須利用無伺服器安全工具持續確保安全,並預防攻擊、檢測弱點以及欺騙。
保護無伺服器應用程序安全需要一個專業的解決方案,該解決方案將幫助開發人員在構建過程中做正確的事情並整合至CI / CD中,且還可於運作環境中,實時提供全面的保護,持續掃描應用程序的程式碼,以解決可能的風險。
資料來源 : https://blog.checkpoint.com/2020/04/29/9-serverless-security-best-practices-you-must-read/