剛柔並濟,SOA 安全策略最佳實踐系列
轉自:http://www.ibm.com/developerworks/cn/webservices/1001_xiaobo_soasecurity/index.html
在面向服務的體系架構(SOA)中,服務的安全對於保護企業的核心資產具有重要的作用。本系列文章將通過對策略驅動服務安全治理的介紹,展示如何在 SOA 治理的框架中實現服務安全問題與業務問題的解耦,如何處理 SOA 安全中的加解密、數字簽名、身份認證和服務訪問授權等問題,以及如何把 SOA 安全的靈活性與高效能統一在一個解決方案中。本文是系列文章的第 1 部分,將針對 SOA 的安全策略作一個概述。
企業 IT 應用的典型環境已經是一個由網路、伺服器、路由裝置以及中介處理設施(比如 ESB)構建成的複雜的應用環境。由於這樣的複雜網路環境面臨著外部和內部的各種攻擊和欺詐,因此如何在不安全的網路環境中保護敏感資訊得到了廣泛的重視。法律規定方面,企業有義務保護其客戶的隱私資訊;自身資訊保安的方面,一個企業要保證其敏感資訊的保密性、完整性和可溯源性等等。
由於企業發展和管理的一些原因,不同職能部門往往擁有各自獨立的應用系統。終端使用者是通過訪問企業的統一門戶(Portal)來獲得其提供的服務。門戶會統一進行初步的身份認證和訪問控制管理,然後應用諸如單點登入(Single-Sign On,SSO)連線後臺不同部門的各種應用系統來提供服務,而這些應用系統都有自己獨立的應用安全解決方案,如圖 1 所示。
各個部門獨立的應用安全解決方案一般來說都屬於傳統的 IT 安全解決方案,大都涉及以下一個或多個方面:
- 身份識別(Identification):保證訪問資源的請求者能夠宣告他自己的身份;
- 認證(Authentication):能夠驗證訪問資源的請求者宣告的身份是否真實;
- 授權(Authentication):保證該請求者只能夠訪問經過授予訪問許可權的資源;
- 完整性(Integrity):保證訊息在傳輸過程中不被篡改;
- 保密性(Confidentiality):保證訊息在傳輸過程中不被別人偷窺;
- 可審計性(Audit):所有的事務必須記錄在案以備日後的分析和審計;
- 不可否認性(Non-repudiation):訊息傳輸的雙方都能夠向第三方提供合法證明,證實訊息的傳送者的確是傳送了該訊息而且訊息的接受者的確是接受到了該訊息。
各個部門獨立的應用安全解決方案對於企業來說重複了相當多的工作,並且使安全管理工作處於一種分散的狀態,種分散往往會帶來難以同步、難以改變、難以整合等問題,常見的問題主要有下面幾個方面:
- 難以監控和驗證當前所有應用安全是否同時滿足某一規程;
- 難以滿足不斷修訂或增加的規程(如 ITAR 規程)需要細粒度訪問控制的需求,如除了基於角色的訪問控制,還需要基於規則和基於屬性的訪問控制;
- 難以滿足不斷增長的安全多樣化需求,包括個性化、目錄、埠以及資料級別的訪問控制;
- 在各個系統中分別開發應用安全會重複增加費用。
企業對應用安全的整合是企業 IT 應用整合的重要組成部分,用 SOA 安全來整合企業應用安全可以給企業帶來一致、鬆耦合和易重用的安全。SOA 安全通過集中的、基於標準的安全服務來實現認證、授權和審計(AAA,Authentication, Authorization and Audit),可以實現一致地管理企業範圍內的基於角色的授權、基於內容和基於規則的訪問控制和服務訪問風險的控制等策略。
SOA 作為構建 IT 系統的一種新方式,它能夠通過重用現有 IT 資產來構建新的業務應用,並且具有靈活改變的能力以支援未來業務的發展。然而在 SOA 中,服務之間跨域操作的鬆耦合性給安全帶來了不少挑戰。SOA 架構的目標是實現業務的敏捷性,如何構建易管易控、高度重用而又靈活應變的應用安全來是實現這個目標的一個難點。在 SOA 環境中,主要的安全需求有以下幾項:
- 把身份認證從服務中解耦出來;
- 以事務形式實時地無縫地連線安全和應用系統;
- 當服務被編排成應用時,每個服務都應當執行與應用安全相對應的恰當的安全控制;
- 把使用不同技術實現的服務和異構的系統中的身份安全資訊進行統一管理;
- 保護事務中的敏感資料資訊而不影響其他的服務;
- 能夠和不斷增長的企業、行業以及法律法規的各種約束保持一致性。
為此 IBM 提出了 SOA 安全參考模型,如圖 2 所示。
這個參考模型是針對企業域而非單一應用系統,其中:
- 業務安全服務(Business Security Services):管理對約束滿足性、報表、身份認證、訪問管理、資料保護、隱私、可靠性管理、不可否認性,以及系統安全和網路安全的要求;
- IT 安全服務(IT Security Services):作為 SOA 基礎架構的組成部分,把安全本身作為服務提供給應用服務(即 Security as a Service),使之能夠實現身份認證、訪問授權、保密性、完整性和審計,它支撐著業務安全服務;
- 安全使能器(Security Enablers):主要是加解密演算法、目錄技術和密匙機制等支援 IT 安全服務完成業務功能的各種技術;
- 安全策略管理(Security Policy Management):作為策略管理(Policy Management)的一部分執行撰寫、轉換、實施和監控安全策略,如:撰寫對服務訪問者的認證和授權的策略、依據可靠模型在不同服務訪問之間傳遞安全資訊、審計重要事件和保護敏感資訊等等。從功能上來說,安全策略管理是 SOA 安全的核心部分之一;
- 策略管理(Policy Management):提供基於策略的管理平臺,以達到 IT 架構和業務的一致性要求;
- 治理和風險管理(Governance and Risk Management):提供了一套機制在比較大的 SOA 環境中來實施策略。其中治理(Governance)幫助客戶在整個企業範圍內更好地管理 SOA,風險管理(Risk Management)評估 SOA 環境中的各種風險並制定管理這些風險的戰略。
SOA 安全參考模型實際上是 IBM 的 SOA 的參考架構中 IT 服務管理的一部分。
前面已經提到安全策略管理是 SOA 安全的核心部分之一。在 SOA 治理的支撐下,策略驅動的服務安全解決方案,使業務需求產生出來的目標在操作層面上能夠得到很好的貫徹和執行。總的說來,策略驅動的服務安全能夠提供:
- 控制的可見性:策略是控制邏輯的具體表現,而不會像硬編碼那樣分散在系統的各個角落難以視覺化;
- 高度的靈活性:能夠快速響應市場競爭或者企業自身、行業內部規程和法規的變化;
- 能夠做到一致性管理,利用策略配置的工具能夠做到策略的一致性管理,並很少發生配置錯誤;
- 能夠充分保證服務和應用都是滿足控制要求的,特別是對於外部的訪問者;
- 能夠降低花銷和節省時間,不需要設計、編寫、測試、部署和維護硬編碼。
策略驅動的服務安全解決方案是策略驅動的服務治理的一部分。用策略驅動的方式來進行服務安全管理時,應該參考策略管理生命週期(Policy Management Life Cycle),如下圖所示。
策略管理生命週期是一個閉環的四段方法論。
- 策略撰寫(Author),依據業務和技術需求識別、設計、編寫和鞏固策略,並識別出有可能被策略影響到的利益相關者;
- 策略轉換(Transform),把撰寫的策略(有可能還是業務需求的形式)轉化成可以執行的形式,並把它部署到策略實施點(Policy Enforcement Point, PEP);
- 策略實施(Enforce),在執行的環境中實施已經部署的策略;
- 策略監控(Monitor),測量、分析和報告策略的執行資料,檢查策略的滿足性要求,並把監控的結果作為輸入進入下一個迴環的撰寫階段的輸入,以便進一步完善策略滿足新的業務需求。
在策略驅動的服務治理中,策略被分為三個層面:
- 業務層面,把策略描述為業務某種形式的說明;
- 架構層面,把策略明確為架構風格和開發模式;
- 實施層面,把策略細化為各種配置條目。
在實際應用中,策略應用有不同的方面。除了本系列文章要討論的涉及服務安全方面的策略,實際的應用環境中往往還有服務質量、業務規程等方面的策略。無論對哪方面的策略,從業務、架構和實施三個層面看到的策略形式是一個逐步細化的過程,如下表所示。
層面 | 服務安全 | 服務質量 | 業務規程 |
---|---|---|---|
業務層面 | 安全與隱私策略 所有個人資訊必須被保護 |
業務服務策略 白金卡客戶優先訪問服務 |
業務策略 保證所有的財務事務滿足法律法規 |
架構層面 | 應用安全策略 所有的經理只能訪問他們自己的直接客戶的信用記錄 |
服務生命週期策略 所有部署的服務被分類 |
部署生命週期策略 所有的服務必須是原創的 |
實施層面 | 訪問控制策略 訊息應當被數字簽名,訪問通過授權 |
服務級策略 白金卡服務的響應時間必須小於 X 秒 |
原創認證策略 每部分程式碼都要有相應的所有者 |
事實上,IBM 提出了多種 SOA 策略,下面是一些具體的例子。
- 訊息安全策略(Message Security Policy),訊息內容的加密和簽名,使得訊息內容不能被偷窺和篡改;
- 訪問控制策略(Access Control Policy),細粒度的訪問控制,使得能夠靈活控制敏感資訊不會洩露;
- 可靠訊息遞送策略(Reliable Messaging Policy),訊息不會由於傳遞路徑中某些節點的故障而丟失,能夠保證訊息傳遞到目的地;
- 服務生命週期策略(Service Lifecycle Policy),為服務在生命週期轉換的時候指定一個或多個驗證器,以保證服務滿足某些規程;
- WS-I 符合策略(WS-I Compliance Policy),WSDL 都滿足 WS-I 規範,使得 J2EE 平臺的 WEB 服務能夠和 .NET 平臺的 WEB 服務互操作;
- 原創認證策略(Certificate of Originality Policy),應用的程式碼都要原創,不能抄襲任何擁有智慧財產權的系統的程式碼,以免帶來法律上的風險。
在這 6 種策略格式裡,應在構建時(Buildtime)實施的策略是服務生命週期策略、WS-I 符合策略和原創認證策略,應在執行時(Runtime)實施的是訊息安全策略、訪問控制策略和可靠訊息遞送策略。在服務安全方面,主要是訊息安全策略和訪問控制策略,在本系列後續文章中我們將進行更詳細的介紹。
層面 | 與業務的耦合性 | 管理方式 | 資源的調配 | 互聯協議支援 |
---|---|---|---|---|
傳統 IT 安全解決方案 | 強,安全邏輯和業務邏輯不能很好的分離,安全邏輯的更改會影響業務邏輯 | 分散式管理,每個系統需要各自維護一套安全方案 | 安全處理佔用業務處理的 IT 資源,影響業務處理能力 | 和底層互聯協議安全相繫結 |
策略驅動的服務安全解決方案 | 弱,安全程式碼和業務程式碼很容易分離,安全邏輯的更改不會影響業務邏輯 | 集中式管理,跨越系統,實現統一建立、分發、實施策略。 | 安全作為服務 (SasS) 不佔用業務處理的 IT 資源,提高業務處理能力 | 依靠 ESB 的能力實現和協議無關的資料安全處理能力 |
這裡需要指出的是,基於策略的服務安全方案的出現並不會取代以往的企業應用安全方案,而是隨著企業 SOA 戰略實施的不斷改進和對舊有系統的改造與重用,在原有的安全方案上的補充和提高,藉助於 SOA 的鬆散靈活的服務架構來實現更高階別的對於服務安全的需求。
IBM 擁有一整套完整的策略驅動的服務安全解決方案。它整合了 SOA 基礎產品系列,能夠對安全策略的撰寫、轉換、實施和監控四個生命週期進行完整的管理。
IBM 策略驅動服務安全解決方案的主要 SOA 產品有下面三種。
- Tivoli Security Policy Manager (TSPM),可以管理安全策略的整個生命週期。
圖 5.Tivoli Security Policy Manager(TSPM)
TSPM 7.0 是 IBM 在 SOA 安全領域的一個新產品。它提供了集中的、後設資料驅動的策略管理和變更管理;它的服務註冊系統基於基於標準協議的整合,可以通過 WS-Policy,WS-SecurityPolicy, WS-Trust 等標準協議與 WSRR,CCMDB 整合;擁有細粒度的授權、安全服務;基於 XACML 標準把在原來單獨存在於各個應用或服務的認證、授權解耦出來作為一個整合的服務以便增強安全,降低系統的複雜度和成本;通過端到端的策略集中化管理能降低策略管理的費用和風險。
它可以作為一個獨立的產品對策略提供整個生命週期的管理,針對相關服務開發策略,附著策略,部署策略到各個執行環境,監控策略的執行情況。具體的說,它的主要功能有:
- 策略管理(Policy Administration Point,PAP),TSPM 作為策略集中化管理的節點,它具有資源識別、資源分類、策略撰寫、策略轉換、安全的策略部署、委託管理,日誌和審計,變更管理和版本控制等等功能;
- 策略決策(Policy Decision Point,PDP),TSPM 中的 Runtime Security Service(RTSS)元件是安全即服務(Security as a Service)理念的具體實現,能夠以 Web 服務的方式提供身份、認證、授權和審計的功能;
- 策略實施(Policy Enforcement Point,PEP),TSPM 提供的策略實施的模式分為基於容器的(如針對 WAS 的外掛)、基於仲裁者的(如 DataPower)和基於應用的(如 Java API 上的 JACC)三種模式。
另外,TSPM 能夠整合策略資訊(Policy Information Point,PIP),它支援基於標準的身份屬性服務(Identity Attribute Service,IdAS)來整合身份資訊和服務資訊。TSPM 還提供了策略設計工具幫助客戶建模、分析和建立策略模板。
它可以同其他 SOA、策略相關產品整合,滿足靈活與效能並重的應用需求:整合 WSRR 作為策略庫方便重用和動態切換;整合 DataPower 分別單獨作為外部的 PDP 和 PEP 提高執行時策略的實施效率。
- WebSphere Service Registry and Repository (WSRR),提供了策略庫、策略撰寫和實施。
圖 6.WebSphere Service Registry and Repository (WSRR)
WSRR 6.2 能夠方便地在 SOA 中釋出、查詢、豐富、管理和治理服務與策略。WSRR 本身自帶 服務生命週期治理的策略庫,但服務安全的策略需要架構人員自己撰寫,它提供了以下策略方面的功能:
- 策略庫(Policy Libraries),WSRR 為 SOA 應用提供了集中可靠的策略編目,策略作為頭等物件能夠像服務一樣被儲存、分類、變更和治理,提供了一系列可操作的策略模板,策略也作為 SOA 治理的最佳實踐看待;
- 策略撰寫(Policy Authoring),WSRR 提供的策略編輯器能夠很容易的建立新的策略,並能夠對 WS-Policy 提供視覺化來保證策略的一致性和魯棒性;
- 策略實施(Policy Enforcement),WSRR 能使 ESB 和其他 SOA 產品能夠在執行時動態的發現和實施策略。
WSRR 能夠管理業務需求、應用架構和 IT 操作三個層面的策略,與此同時它也可以作為服務註冊和管理的中心。
- WebSphere DataPower SOA Appliance (DataPower),提供了策略執行時的實施環境。
圖 7.WebSphere DataPower SOA Appliance (DataPower)
DataPower XI50 3.7.3 作為一個 SOA 硬體產品,是策略執行時實施的一個主要部件,它在策略方面的主要功能有:
- 執行時實施(Runtime Enforcement),通過提前上傳策略或者從服務註冊庫中檢索到服務已載入的策略,DataPower 作為 PEP 實施策略;
- 自行或第三方決策(On/Off-box Decision),DataPower 可以自身作為 PDP 依據策略和執行狀時資訊做出決策,DataPower 也可把第三方如 TSPM 的 RTSS 作為 PDP 來做決策;
- 配置策略,能夠基於 WSDL、Service Endpoint、Operation 各種引數,基於某一時間段內服務的訪問數量(如每秒鐘的事務數,TPS)和基於服務請求、服務響應和異常的內容來進行各種不同策略配置;
- 支援多個裝置對一個策略進行聯合實施,提供通知(Notify)、減慢(Shape)和拒絕(Throttle)的策略響應模式。
DataPower 提供了豐富的策略實施功能,最重要的是它擁有 XML 加速器的功能,作為安全閘道器處理服務安全要比普通軟體產品更為理想。在高效能的安全方案中,DataPower 有明顯的優勢。
在後續的文章中,我們將陸續介紹在應用場景中如何整合上述的這些產品、運用訊息安全策略和訪問授權策略實現 SOA 安全。
在 SOA 整合的過程中 SOA 安全得到越來越多的關注,策略驅動的服務安全是 SOA 安全的最佳實踐,策略驅動的 SOA 服務安全能夠安全與業務的解耦、細粒度的訪問控制和高效能的實施。IBM 提供了豐富而強大的 SOA 產品來支援策略驅動的服務安全,最終實現正規化、標準化、自動化、可追蹤和高重用的 SOA 安全。
本文概述了在 SOA 的架構下使用策略來幫助實現服務的基本概念,接下來的下一篇我們結合一個具體的場景介紹如何使用 TSPM (Tivoli Security Policy Manager) 和 DataPower 以及 WSRR(WebSphere Service Repository and Registry)實現訊息內容的保護。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780828/viewspace-626226/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 剛柔並濟,SOA 安全策略最佳實踐系列 SOA 安全策略概述
- 剛柔並濟的開源分散式事務解決方案分散式
- SOA 非功能測試最佳實踐
- SOA成功之關鍵最佳實踐薦
- 採用 SOA 最佳實踐,借鑑經驗教訓
- pt-tools系列:xtrabackup最佳實踐
- dart系列之:集合使用最佳實踐Dart
- PHP最佳實踐系列之標準PHP
- dart系列之:dart程式碼最佳實踐Dart
- Android 快速開發系列 ORMLite 框架最佳實踐AndroidORM框架
- SOA實現中的4個最差實踐
- Istio最佳實踐系列:如何實現方法級呼叫跟蹤?
- Pika最佳實踐
- Flutter 最佳實踐Flutter
- MongoDB 最佳實踐MongoDB
- 《.NET最佳實踐》
- Django 最佳實踐Django
- metaq最佳實踐
- Iptables 最佳實踐 !
- Java最佳實踐Java
- Kafka最佳實踐Kafka
- Log最佳實踐
- SnapKit 最佳實踐APK
- MacBook 最佳實踐Mac
- viewport 最佳實踐View
- ViewPager最佳實踐Viewpager
- OpenResty最佳實踐REST
- PHP最佳實踐PHP
- MongoDB最佳實踐MongoDB
- JDBC 最佳實踐JDBC
- JavaScript 最佳實踐JavaScript
- dart系列之:和null說再見,null使用最佳實踐DartNull
- 並查集系列之「思路最佳化」並查集
- restful api最佳實踐RESTAPI
- MongoDB最佳安全實踐MongoDB
- springDataJpa 最佳實踐Spring
- App瘦身最佳實踐APP
- OpenResty 最佳實踐 (2)REST