譯者 | 晶顏
審校 | 重樓
什么是云原生應用?
云原生應用標志著軟件創建和推出方式的改變。它利用了云計算環境的功能,將應用程序構建為一組被稱為“微服務”的服務,通過API進行交互。
像Docker這樣的容器化工具通常用于打包每個微服務及其依賴項,以確保跨設置的一致性并支持部署。Kubernetes等平臺可以自動管理應用程序,處理擴展負載平衡和服務發現等任務。DevOps方法則強調開發和運維團隊之間的協作,通過支持持續集成、持續交付和快速迭代,在原生方法中發揮作用。
憑借其核心的靈活性和可擴展性,原生應用可以動態地調整資源,以滿足不斷變化的工作負載,從而提高性能和成本效益。此外,它們優先考慮彈性,采用容錯措施來優雅地處理故障并維護可用性。采用原生原則使組織能夠加速創新,提高敏捷性,并簡化他們的軟件開發過程。
運行時安全模型
運行時安全模型的概念與應用程序積極運行時實現的安全措施和協議有關。它涉及一系列旨在保護應用程序及其基礎設施在運行期間免受安全風險的策略和技術。運行時安全模型的一些關鍵元素如下所示:
- 訪問控制:實時實施訪問控制,確保只有經過授權的用戶或進程才能與應用程序及其數據交互。這包括設置諸如多因素身份驗證(MFA)或OAuth之類的身份驗證機制,以驗證用戶身份并強制執行適當的授權規則。
- 加密:在應用程序運行時對數據進行加密有助于防止非法訪問或攔截。這包括在傳輸過程中使用HTTPS或TLS等協議加密數據,就像使用加密算法和安全存儲方法加密靜態數據一樣。
- 運行時監控:持續監控應用程序的運行時環境對于檢測和響應安全威脅或異常是至關重要的。這包括跟蹤活動、審計事件以及監視系統和網絡流量。
- 漏洞管理:持續評估應用程序及其組件對于發現任何弱點和維護設置非常重要。使用自動化的漏洞檢查工具可以幫助發現漏洞,并根據漏洞的嚴重性對其進行優先級排序,從而更輕松地解決問題。
- 容器安全性:在利用容器化技術部署應用程序時,關注容器安全性至關重要。這包括掃描容器映像以查找漏洞、在運行時監視容器行為以及在容器的編排層實現安全措施等舉措。
- 安全配置管理:確保應用程序及其運行環境的配置管理,可以減少潛在的攻擊點,最大限度地減少安全威脅。這包括加固操作系統、保護網絡設置以及停用可能產生漏洞的服務或功能等步驟。
- 運行時威脅檢測和響應:在操作過程中,擁有用于識別和響應實時威脅的機制對于處理安全事件至關重要。分析機器學習算法或利用威脅情報饋送等技術可以幫助識別可疑活動或潛在漏洞,以增強安全態勢。
云原生環境的類型
云原生環境可以根據它們使用的技術和部署模型分為以下幾種:
- 虛擬機:在基于虛擬機的環境中,應用程序部署在虛擬服務器中。每個虛擬機運行自己的操作系統,以確保應用程序之間的隔離。虛擬化環境負責將資源(CPU、內存、存儲等)分配給虛擬機。云服務提供商提供虛擬機實例的大小和配置,供用戶根據需要部署和擴展應用程序。
- 存儲單元:容器充當包含應用程序及其必要組件的包,便于在設置中部署。依賴容器的云原生環境使用Docker等技術將應用程序捆綁到容器中。這些容器利用主機操作系統內核,導致與機器(VM)相比成本增加。Kubernetes是一個用于大規模管理容器化應用程序的平臺。
- 容器服務:容器服務平臺為部署、編排和擴展應用程序提供了一個托管環境,用戶無需處理底層基礎設施的復雜性。這些平臺簡化了容器編排任務,并允許開發人員專注于有效地構建和部署應用程序。
- 無服務器函數(Serverless Function):在無服務器函數中,開發人員可以運行函數或代碼段,而無需管理服務器或基礎設施。云提供商根據事件或觸發器動態分配資源以執行這些函數。這些無服務器函數通常是無狀態的、事件觸發的、壽命短的,因此非常適合事件驅動的架構、時間數據處理和微服務應用程序。一些無服務器平臺的例子包括AWS Lambda、Google Cloud Functions和Azure Functions。
云原生應用安全最佳實踐
保護基于云的應用程序涉及一種策略,該策略涵蓋了從底層基礎設施到實際應用程序代碼的應用程序堆棧級別。下面,讓我們探討一些確保基于云的應用程序安全的指導原則:
- 安全開發實踐:確保使用編碼技術和指南(如OWASP Top 10),以防止諸如注入攻擊、XSS、CSRF等安全風險。在開發期間合并代碼評估、靜態代碼檢查和自動安全評估(如SAST和DAST),以查明并修復某個階段的安全弱點。
- 容器安全:通過使用Claire、Trivy或Anchore等工具頻繁掃描容器映像以查找漏洞。確保來自源的容器映像選擇基本映像,并單獨包含基本依賴項。在運行時期間實現安全措施,以限制容器特權并將攻擊風險降至最低。
- 網絡安全:利用網絡分段和防火墻來控制應用程序各部分之間的數據移動。結合加密方法(如TLS/SSL),以保護數據在傳輸過程中避免被竊聽或攔截。使用Web應用防火墻(WAF)對HTTP流量進行內容和安全威脅篩選。
- API安全性:通過使用API密鑰、OAuth令牌或JWT令牌來允許API請求。設置使用限制、控制流量、實施訪問規則來防止誤用并抵御DDoS攻擊。清理輸入數據,防止注入攻擊,維護數據的完整性。
- 記錄和監控:建立一個記錄和監控系統,以密切關注安全事件和異常事件。利用安全信息和事件管理(SIEM)工具收集和連接來自各個來源的安全日志,以檢測威脅和響應事件。為安全方面的任何活動或違規創建警報和自動化操作。
- 事件響應和災難恢復:制定響應事件的計劃,詳細說明識別、控制和從安全問題中恢復的步驟。確認備份和災難恢復協議的有效性,以保障數據的準確性,并在入侵或故障的情況下減少中斷。
云原生安全工具和平臺
市面上有各種安全工具和平臺可用于解決云原生應用和環境面臨的安全挑戰。以下是一些按功能分類的杰出例子:
1. 容器安全
Docker安全掃描
Docker安全掃描是Docker Hub提供的用于存儲Docker容器映像的功能。它使用戶能夠檢查Docker容器鏡像是否存在安全問題,并接收有關發現的任何漏洞的警報。以下是Docker安全掃描的工作原理:
- 上傳鏡像:當用戶上傳一個Docker鏡像到Docker Hub時,它會進入安全掃描隊列;
- 漏洞檢測:Docker Hub利用已知漏洞數據庫掃描容器映像的各個層,尋找集成到映像中的操作系統包、庫和依賴項中的安全漏洞;
- 安全警報:在完成掃描過程后,Docker Hub會生成安全警報,突出顯示在映像中發現的任何漏洞。這些警報詳細說明了有關每個漏洞的信息,例如其嚴重級別、受影響的組件以及修復這些漏洞的建議步驟。
Clair
Clair是一種用于掃描容器映像源中漏洞的工具。它是由CoreOS創建的,現在是紅帽的一部分。它通常用于容器的安全流程,以識別和解決Docker和開放容器倡議(OCI)映像中的安全缺陷。以下是Clair的主要功能:
- 檢測漏洞:Clair分析容器映像及其層,以檢測映像中包含的操作系統包、庫和依賴項中存在的已知安全漏洞。它將映像中的組件與從安全建議中獲得的已知漏洞的更新數據庫進行比較。
- 架構設計:Clair的架構允許可擴展的漏洞掃描。它由數據庫(通常是PostgreSQL)、REST API服務器和負責獲取漏洞數據和執行掃描操作的工作進程等組件組成。
- 分析靜態數據:Clair能夠在不運行容器映像的情況下分析它們,從而支持快速和輕量級的漏洞檢查。它從映像清單中提取元數據,并仔細檢查各層,以收集有關已安裝包、庫及其各自版本的詳細信息。
- CVE匹配:Clair將容器映像中的元素與CVE 數據庫進行比較,以識別任何漏洞。它提供了每個漏洞的信息,例如CVE ID、嚴重等級、受影響的版本,以及參考和建議。
- 與容器編排平臺集成:Clair可以與Kubernetes等容器編排平臺連接,在部署期間自動進行漏洞掃描。有一些插件和擴展還可以與流行的容器運行時環境和編排器集成。
- 自定義和可擴展性:Clair具有高度可定制性和靈活性,允許用戶個性化漏洞掃描策略,設置掃描閾值,并與外部系統和工具連接。用戶可以創建自定義插件和擴展來擴展Clair的功能,并將它們整合到現有的安全流程和工具集中。
Anchore Engine
Anchore Engine是一個容器安全平臺,專注于分析、評估和驗證容器映像的安全漏洞、策略遵從性以及行業標準合規性。它允許組織維護安全協議,并保證容器中的應用程序在設置中安全構建和啟動。以下是Anchore Engine的功能概述:
- 漏洞評估:Anchore Engine對容器映像進行漏洞評估,精確定位操作系統包、庫和依賴項中存在的已知安全漏洞。它使用CVE等數據庫,將容器映像中的組件與已知漏洞進行比較。
- 策略評估:Anchore Engine為容器映像定義配置、包版本和漏洞閾值,并根據這些策略評估容器映像,以確保與安全實踐和組織指導方針保持一致。
- 映像摘要分析和元數據評估:Anchore Engine仔細檢查來自容器映像的元數據,如映像摘要、層數據和包清單,以提供對其內容和互連性的見解。這有助于用戶掌握容器映像的組成,同時確定安全威脅或合規性問題。
- 可定制策略和白名單:用戶可以根據自己的不同需求和場景定制安全策略和白名單。Anchore Engine提供了策略定制選項,允許組織調整漏洞嚴重級別黑名單包,并根據他們的風險承受能力和監管要求進行合規性檢查。
- 與CI/CD管道無縫集成:Anchor Engine與CI/CD管道無縫集成,以自動進行安全評估,并確保在整個容器生命周期中遵守策略。它提供了與CI/CD工具集成的插件和API,支持在構建和部署階段自動掃描漏洞并執行策略。
- 通知系統和警報:Anchor Engine通過電子郵件通知、webhook警報和連接到外部通知系統,提醒用戶在容器映像中發現的安全漏洞、策略違規和合規性問題。此特性使響應能夠解決安全問題并滿足安全標準合規性要求。
- 可擴展性和性能優化:Anchor Engine是為支持跨分布式環境的容器映像分析和掃描的可擴展性而構建的。通過利用處理和緩存機制,它提高了性能效率,同時減少了掃描持續時間。這確保了大規模容器映像的快速安全評估。
容器編排安全
保護容器編排涉及保護平臺本身及其監督的容器化任務。隨著Kubernetes、Kube、Sysdig、Docker Swarm和Apache Mesos等平臺在編排和擴展容器化應用程序方面越來越受歡迎,優先考慮安全措施變得至關重要。
- Kubernetes安全策略:Kubernetes的一個函數,通過控制訪問和管理volume mount,在pod級別設置安全規則。
- Kubernetes Bench:根據CIS Kubernetes基準中定義的行業實踐來評估Kubernetes集群的工具。
- Docker Swarm:Docker Swarm是Docker的原生集群和編排工具。它通過提供負載平衡和服務發現等特性,簡化了容器的編排。
- Sysdig Secure:用于保護容器的平臺,包括在運行時進行威脅檢測、管理漏洞和確保Kubernetes設置中的合規性。
2. 無服務器安全
AWS Lambda安全最佳實踐:AWS提供了專門針對AWS Lambda保護無服務器應用程序的指導方針。OWASP無服務器十大項目強調了無服務器設置中的安全風險,并提供了有效的緩解策略。Snyk是一個致力于識別和修復開源依賴中漏洞的平臺。
3. API安全性
API安全性涉及用于保護API免受入侵、數據泄露和有害攻擊的實踐、方法和技術。由于API在軟件開發中促進不同系統之間的通信和數據交換,因此確保API的安全性對于保護敏感數據和維護應用程序及服務的可靠性至關重要。以下是API安全性的一些基本要素:
- 身份驗證:采用健壯的身份驗證技術來確認API用戶的身份,并保證獲得批準的個人和應用程序可以到達受保護的資源。這可能涉及使用API密鑰、OAuth令牌、JWT(JSON Web令牌)或客戶端證書進行身份驗證。
- 授權:實施訪問控制和授權策略,以根據用戶的角色、權限和特權限制對API端點和資源的訪問。實現基于角色的訪問控制(RBAC)或基于屬性的訪問控制(ABAC),以建立和監督授權規則。
- 加密:對通過API傳輸的敏感數據進行加密,防止被截取或監控。利用傳輸層安全性(TLS/SSL)加密客戶端和服務器之間的通信,確保數據的機密性和完整性。
- 輸入驗證:為了確保系統安全,需要仔細清理來自API用戶的任何數據。這有助于防止諸如代碼注入之類的攻擊。通過使用驗證和數據銷毀技術,可以確保在將用戶輸入用于流程之前對其進行過濾和清理。
- 速率限制和節流:設置控制API請求流的措施,可以防止濫用、拒絕服務(DoS)攻擊和暴力破解攻擊。通過根據用戶身份、IP地址或API密鑰等因素設置請求的數量限制,還可以減少系統超載和耗盡資源的風險。
- 審計日志記錄:跟蹤API中的所有活動對于監視訪問嘗試和安全事件至關重要。通過記錄這些事件,可以密切關注用戶操作,檢測任何行為,并及時調查安全問題。
- API網關:API網關是有效管理和保護所有API的核心。這些網關通過處理諸如身份驗證檢查、授權驗證、數據加密過程和控制請求速率等任務,幫助在API之間強制執行安全策略。
4. 谷歌云安全指揮中心
谷歌云安全指揮中心(Cloud SCC)是谷歌云平臺(GCP)提供的安全管理和數據保護平臺。它提供了對跨GCP基礎設施、服務和應用程序的安全性和遵從性風險的全面洞察和監督。谷歌云安全指揮中心包含以下主要功能:
- 資產清單:云SCC提供了在組織的GCP環境中部署的所有云資產的透視圖,例如機器、容器、數據庫、存儲桶和網絡資源。它自動對云資產進行分類,同時提供每個資產的元數據和上下文信息。
- 安全發現:云SCC整合了來自GCP安全服務(如Google Cloud Monitoring、Google Cloud Logging以及第三方安全工具)的安全發現和見解。它對安全威脅(如漏洞、錯誤配置或跨資源的可疑活動)進行優先級排序。此外,它還提供了解決這些問題的建議。
- 漏洞評估:通過與Google Cloud Security Scanner和第三方漏洞管理解決方案等工具集成,Cloud SCC進行自動化漏洞掃描,評估云資產的安全狀態。通過精確定位操作系統、軟件包和依賴項中的已知漏洞,它提供了關于漏洞的報告以及修復指導。
- 威脅檢測:云SCC利用谷歌云安全指揮中心進行威脅檢測,及時識別和解決安全威脅和可疑活動。它依靠機器學習算法、異常檢測方法和威脅情報來源來仔細檢查云日志和遙測數據,以尋找妥協指標(IoC)和安全事件的跡象。
- 策略監控和執行:云SCC使組織能夠通過安全運行狀況分析和策略情報建立來維護資源的安全策略和合規性需求。它會不斷地監視資源是否存在違規風險、配置錯誤或偏離安全策略,并發出警報和通知以解決問題。
- 數據風險評估:云SCC提供了評估數據風險的工具,以幫助組織精確定位數據,如可識別信息(PII)、知識產權和存儲在GCP服務中的機密數據。它評估數據使用趨勢、訪問控制和加密配置,以評估數據安全風險和合規性狀態。
- 合規性報告:云SCC包括預定義的合規性框架,例如CIS基準、GDPR法規和HIPAA標準。它會生成合規性報告及幫助組織展示對命令和行業規范遵從性的指示板。
5. 安全信息和事件管理(SIEM)
安全信息和事件管理(SIEM)解決方案提供了安全事件、警報和事件的視圖,使組織能夠有效地發現、調查和處理安全風險。SIEM解決方案的關鍵要素和功能如下所示:
- 數據收集:SIEM解決方案從網絡設備、服務器、端點、應用程序、云服務和安全實用程序等來源收集與安全相關的數據。數據輸入可能包括日志、事件、告警、流記錄、配置文件和威脅情報提要。
- 標準化和整合:SIEM平臺將來自不同來源的安全數據整合為統一的格式,以便進行檢查和鏈接。此過程包括在對安全事件進行分類和對齊以簡化分析和關聯的同時準確地解釋信息。
- 分析和關聯:SIEM解決方案將來自源的安全事件鏈接起來,以查明趨勢、異常情況和可能的安全事件。它們利用相關規則、啟發式、統計分析和機器學習算法來檢測活動、威脅和攻擊模式。
- 警報和通知:SIEM系統為滿足預定義標準的安全事件或滿足閾值的事件生成警報和通知。它們發送通知、顯示儀表板并生成報告,以提醒安全團隊可能存在的安全漏洞、策略違規或異常活動。
- 響應事件:SIEM解決方案通過提供探測安全事件、檢查證據和執行根本原因分析的工具,幫助檢測和響應事件。它們使安全團隊能夠有效地評估、確定優先級并處理安全事件。
- 確保合規性和生成報告:SIEM平臺通過提供預定義的合規性模板、審計跟蹤和報告功能,幫助監視合規性狀態并生成報告。它們通過自動報告過程幫助組織展示對命令、行業規范和內部政策的遵從情況。
- 集成系統和簡化流程:SIEM解決方案與安全工具和技術無縫集成,以增強其功能,同時簡化安全工作流程。它們支持與威脅情報平臺、端點檢測和響應(EDR)解決方案、事件響應工具和安全編排自動化平臺的連接,以實現內聚方法。
- 適應性和效率:SIEM平臺專為適應性和效率而設計,以安全管理數據集,同時滿足大規模實現的需求。它們利用分布式架構以及數據分區技術和數據壓縮方法來有效地提高性能水平。
結論
擁抱云原生應用將徹底改變軟件開發,并通過微服務、Docker和Kubernetes來利用云計算的創新能力和敏捷性。然而,健壯的安全實踐對于有效地保護這些環境至關重要。通過全面的安全方法,組織可以釋放云原生優勢,同時降低風險并確保現代軟件生態系統的彈性。
原文標題:Guide to Cloud-Native Application Security,作者:Naga Santhosh Reddy Vootukuri