將安全開發流程擴充套件到雲和大資料

發表於2013-05-10

來源:IBM developerWorks

簡介: 雲端計算和大資料正在改變著企業。瞭解必須將這些新技術融入您的安全開發流程的原因,並瞭解什麼是安全開發流程、雲端計算和大資料技術的組成部分,以及它們存在哪些應用程式安全風險和如何減輕這些風險。

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。

圖 5. Amazon DynamoDB

將安全開發流程擴充套件到雲和大資料

將它們整合在一起

通過執行一個 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 的研究,如果您的組織可以做到這一切,那麼您將會成為精心挑選的少陣列織之一。

相關文章