將安全開發流程擴展到云和大數據
英文原文:Extend your secure development process to the cloud and big data
簡介: 云計算和大數據正在改變著企業。了解必須將這些新技術融入您的安全開發流程的原因,并了解什么是安全開發流程、云計算和大數據技術的組成部分,以及它們存在哪些應用程序安全風險和如何減輕這些風險。
2012 年有關應用程序安全狀態的 Ponemon Institute 報告(參閱 參考資料)表明,“71%的開發人員認為安全性在軟件開發生命周期中沒有得到充分重視”。這種說法令人非常困惑,因為各個組織現在已經在他們的安全系統開發生命周期 (SDLC) 中引入了新技術。這些新技術(即云計算和大數據)將進一步增強組織的安全開發流程(如果組織有這樣的流程)。
本文從應用程序安全性的角度概述了云計算和大數據、它們的缺陷和弱點,還介紹了如何使用一個安全的 SDLC 進程在這些平臺上安全地開發應用程序。
安全開發入門
要將云和大數據引入安全的 SDLC 流程中,必須先將安全性引入到組織的 SDLC 中并始終遵循它。SDLC 是一個開發流程,該流程側重于開發優質軟件的五個階段:需求、設計、開發、測試和實現。組織必須在這一流程的每個階段都引入安全性。無論是使用特定的過程模型(如 Microsoft® 的安全開發生命周期(SDL;參見 圖 1)或 (ISC)²> 的最佳實踐(參見 圖 2)、利用 Open Web Application Security Project (OWASP) 的最佳實踐,還是引入自定義框架來實現該操作,SDLC 現在都是開發團隊的必要條件。
圖 1. Microsoft 的 SDL 流程
圖 2. (ISC)² 的安全編碼最佳實踐
云計算入門
除了了解什么是安全的 SDLC 流程之外,組織還需要了解什么是云計算,以及云計算如何幫助組織尋找規模效益,并讓組織重新專注于組織的核心競爭力。如果您愿意的話,還可以使用云計算重塑舊的應用程序服務提供商 (ASP) 模式。然而,真正的云計算產品會在 ASP 模式方面有一些細微的差別,也就是說,在資源池、按需功能、多租戶和快速彈性方面存在細微差別。這些特性意味著,在使用云計算的時候,您可以通過將固定的資本支出 (CapEx) 轉換為可變的運營支出 (OpEx) 來獲得規模效益。
美國國家標準與技術研究所 (NIST) 已經通過建立云服務模式和云部署模式進一步定義了什么是云計算。云服務模式是一些方法,組織可以通過這些方法根據需要使用云計算,這些模式包括基礎架構即服務 (IaaS)、平臺即服務 (PaaS) 或軟件即服務 (SaaS)。請注意,云計算用戶使用 IaaS 獲得的靈活性最大,使用 SaaS 獲得的靈活性最小。但是,IaaS 提供的靈活性向云計算用戶提出了治理、監視和管理環境的要求。因此,對于 IaaS,用戶需從操作系統層開始構建(虛擬)服務器。對于 PaaS,用戶需構建數據庫、應用程序、業務規則和加載數據。對于 SaaS,用戶只需將數據加載到預先構建的應用程序中。
NIST 還定義了云部署模式,其中包含公共云、私有云、混合云和社區云(參見 圖 3)。例如,Google Docs 就是公共云模式的一個示例,其中應用程序和數據存儲在 Google 的數據中心的某些位置。在此模式中,用戶實際上在 Google “高層” 公寓中擁有一個樓層。
圖 3. NIST 云
大多數組織會采用私有云的方式在內部利用云計算。在自己的數據中心利用云的細微差別(例如,資源池、按需功能、多租戶或快速彈性)進行信息處理的組織就是私有云的一個示例。請注意,您也可以在云服務提供商 (CSP) 的設施內擁有一個私有云。這方面的示例包括 Terremark 的客戶,以及那些使用 Amazon Virtual Private Cloud (Amazon VPC) 作為他們的 Amazon Web Services™ (AWS) 服務線(參見 圖 4)的客戶。混合用戶的示例是一家制藥公司,該公司使用私有模式來存儲它的研究和開發數據,將該數據安全地(通過安全套接字層或傳輸層安全性)發送到公共云以便進行計算,然后將該數據發送回私有云。實際上,混合模式充分利用了公共云和私有云的優勢。社區云很大程度上利用了資源池。這方面的一個示例是一個學區中的多所學校,它們共享了服務器資源,以便進行信息處理。
圖 4. Amazon VPC
除了云計算之外,大數據也是行業的一個新范例。Oracle 將大數據定義為聚合三個來源的數據:傳統(結構化數據)、傳感器數據(日志數據、元數據)以及社交數據(社交媒體)。大數據通常使用新的方式(如 NoSQL,Not only Structured Query Language)存儲在非關系型的分布式數據庫中。有四種類型的非關系型數據庫管理系統(非 RDBMS):基于列的、鍵-值形式、圖(Graph)和文件型。這些非 RDBMS 聚合源數據,分析程序(如 MapReduce)分析該信息。聚合并分析大數據之后,組織可以使用該信息進行市場研究、供應鏈研究、過程優化、安全事件分析或趨勢分析。
大數據增值的方案包括提供市場研究數據以支持作出外包或內包、進行收購或兼并、進入新市場或離開市場的決定。被視為一種專供學術研究的技術之后,現在非 RDBMS 系統正在行業中逐步接近臨界狀態。領先的技術服務提供商(如 Twitter)開始使用它們,并且很多個人和公司也開始使用這些提供商的產品。由于這些平臺的開放源代碼的特性(會導致節約成本),非 RDBMS 正在成為使用 Web 2.0 技術的組織首選的數據庫架構,因為組織無需在傳統的關系型數據庫軟件許可或本地硬件方面進行投資。根據您的預算,我主張組織設置新的崗位來治理和管理大數據系統,而分析人員、編程人員、項目經理以及傳統的 RDBMS 管理員都應該進行交叉培訓。如何進行所有這些操作都基于組織的需求,但您會發現在這些已經利用大數據平臺的組織(Yahoo!、Facebook 等)有一個特殊的關注點。如果您的組織決定將專用資源合并到大數據,那么請記住,使用這些系統來增加您的現有 RDBMS 投資以便存儲和分析大數據,這一點非常重要。
企業將繼續同時使用 RDBMS 和非 RDBMS 系統。盡管這兩種系統有一些相似之處,但也應該注意它們的差別。例如,非 RDBMS 將數據可分布到多個計算機系統上,當數據跨越多個管轄范圍或跨越多個管轄范圍共享時,非 RDBMS 會影響組織遵守隱私權的狀態。非 RDBMS 通過是一個應用程序編程接口 (API) 調用的,而不是像 RDBMS 系統一樣通過數據庫連接(例如,Open Database Connectivity、Java™ Database Connectivity)來創建、讀取、更新和刪除數據。非 RDBMS 與 RDBMS 在處理數據的方式上也有所不同。例如,非 RDBMS 中的表稱為域或命名空間(和在 Amazon DynamoDB 中一樣,如 圖 5 所示)。而且,非 RDBMS 數據定義語言或元數據并不像在 RDBMS 中那樣可以輕松查詢。此外,大多數非 RDBMS 都不再使用 SQL 進行數據操作語言調用;很多都使用 NoSQL。最后,非 RDBMS 要求運行的 API 服務應該相對數據庫服務器實例運行,這樣通常會導致較低的 OpEx。
將它們整合在一起
通過運行一個 API 服務(如 Gemini Cloudian),非 RDBMS 用戶可以節省 CapEx 和 OpEx,而且可以使用非 RDBMS 技術輕松構建應用程序。CSP(如 AWS)目前正依賴于這項功能。AWS 有一個稱為 Amazon SimpleDB 的產品,各種創業公司(如 Flipboard、Kehalim、Livemocha 和 LOUD3R)都使用該產品快速向市場提供解決方案。非 RDBMS 用戶使用第三方軟件產品(例如,Cloudian)將其 NoSQL 數據庫連接到 Web 應用程序,或者編寫他們自己的軟件。組織使用了非 RDBMS 來體驗增強的可伸縮性、彈性(分片)、模塊性、可移植性和互操作性,同時還將 NoSQL 平臺與編程語言(如 Java 語言,參見 圖 6)、Web 2.0 技術(如 Ruby on Rails,這是一種側重于動態內容的 Web 2.0 編程語言)、增強的 Web 服務架構或面向服務的架構結合使用。
圖 6. 在 Amazon DynamoDB 中使用 Java
提示和技巧
大數據解決方案通常會與 Web 開發項目以及 CSP 提供的非 RDBMS/NoSQL 解決方案結合使用,因此將組織的安全 SDLC 流程擴展到云或大數據環境的第一步自然就是將該流程部署到 Web 開發項目中。由于 Web 或瘦客戶端應用程序具有特定的脆弱性,如跨站點腳本 (XSS) 或跨站點請求偽造 (XSRF),因此開發團隊應該了解如何為其環境編寫安全軟件,這一點非常重要。這方面的示例包括提供相應的培訓和培養意識,針對 OWASP Top Ten 中發現的漏洞進行靜態和動態應用程序安全測試 (DAST),更新威脅模型分析任務和工具,將組織的開發和質量保證 (QA) 環境擴展到云中,以便測試這類環境,以及如何重組大數據系統(例如,非 RDBMS/NoSQL)的深入防御戰略。
此處的重點是使用應用程序和中間件層來確保大數據(即非 RDBMS/NoSQL)系統的安全,因為這些后端解決方案利用了一個開放架構。要確保該架構的安全,組織必須在數據層之外提供其他的保護和控制,尤其當系統位于云中時。其他保護和控制的示例包括:
- 加密。數據在傳輸中,數據正被使用。
- 增強的身份和訪問管理 (IAM) 解決方案。安全斷言標記語言、表述性狀態轉移、雙因素認證/一次性密碼。
- 添加一個明確的隔離或職責分離。也就是說,清晰地描述誰可以讀取和寫入更改、誰可以擁有和讀取數據。
- 邏輯訪問控制。虛擬防火墻、Web 應用程序防火墻(如 Imperva)、XML 防火墻、通過使用數據庫防火墻(DBF,如 Oracle DBF)進行的數據庫活動監視。
- 啟用增強的會計、審計和問責制實踐。尤其值得一提是,將會使用安全信息和事件管理工具。
在這些保護和控制就位之后,必須測試它們的有效性。但是,由于 CSP 限制了用戶掃描其云環境的能力,因此可用于云的 DAST 產品有諸多局限性。除此之外,大多數漏洞掃描程序尚未更新其產品,沒有提供對大數據環境的掃描。但是,從云的角度來看,這個規則也有一些例外,即 AWS 與名為 Core 的公司合作。Core CloudInspect 允許掃描組織基于 IaaS 的 Amazon Elastic Compute Cloud 實例。
Microsoft® SQL Azure™ 基于 PaaS 的解決方案還允許使用 McAfee 的 Database Security Scanner 測試云用戶的安全性。除了這些例外情況之外,其他需要注意的是,組織可以減少因為沒有使用最新的漏洞掃描程序而導致的風險,同時通過實現經驗證安全的編碼約定(比如將隱私和安全性融入設計中,編寫事先準備好的聲明進行輸入驗證)將代碼部署到云或大數據系統。除了舊的掃描解決方案之外,組織還面臨著有關測試云和大數據代碼的其他挑戰:將安全的、適當的更改與配置管理過程相融合。
路障和地雷
很多組織可能發現,采用執行更改和配置管理請求的方式將其安全 SDLC 進程擴展到云和大數據方面有一些挑戰。當利用云進行開發或 QA 工作時,如果在開發/QA環境內外檢查代碼,那么集成開發環境可能無法正常工作。因為缺乏通信,可能會導致需要進行額外的工作才能保持庫中代碼的一致性、保持代碼最新而且沒有缺陷。要減輕這種風險,組織需要通過單點登錄將 IAM 平臺擴展到它的開發環境。除了制定適當的變更和配置管理任務之外,組織還需要將威脅模型、攻擊向量以及對第三方向量產品的測試融入其 SDLC 流程中。
在利用云或大數據時,組織必須將新的威脅模型、攻擊向量以及對這些第三方產品和服務的測試整合到它的環境中。這方面的示例包括測試 CSP 的 PaaS 環境、測試基于應用程序的云或大數據環境,或者測試與第三方 Web 服務或 API 有關聯的安全性。要融入的具體內容包括測試輸入驗證、內存溢出、加密密鑰管理以及處理正常退出和不正常退出。
結束語
組織必須將一些特定操作融入其安全 SDLC 流程中,以這種方式緩解在企業中引入云或大數據所帶來的風險。這些操作包括測試供應商軟件和硬件產品的安全態勢,更新更改和配置管理過程,了解現有安全評估工具的局限性,以及采用迭代方式將組織的安全 SDLC 流程擴展到 Web 開發項目中。這方面的知識再加上對云和大數據的組成的進一步了解,通過這些我們就可以了解云和大數據中發現的漏洞,并了解如何修復在云和大數據中發現的那些漏洞。根據 Ponemon 的研究,如果您的組織可以做到這一切,那么您將會成為精心挑選的少數組織之一。