(轉)基于 SOA 的醫療權限管理服務

業務場景

安全作為一項非功能需求,在行業應用中受到越來越高的重視,而權限管理是安全領域的基本功能,保證擁有適當權限的用戶才能訪問應用。在電子健康檔案系統中,患者的醫療檔案具有私密性,他人不準查看,而出于醫療活動的需要,會開放給某些醫生瀏覽或者更新,這就要求由患者為醫生授權對文檔的訪問權限。安全處理可能散布在區域信息中心和各醫院的多個應用系統之中,那么如何以統一的方式描述這種安全策略,并將安全處理獨立出來,集中的執行和管理?


XACML

XACML(eXtensible Access Control Markup Language) 作為 OASIS 標準,用于描述通用訪問控制策略,并提供執行授權策略框架。該框架包含策略的執行點 PEP、決策點 PDP、信息點 PIP 以及管理點 PAP,目標是對訪問請求做出授權響應。XACML 的策略語言模型如圖 1 所示。


圖 1. XACML 策略語言模型
圖 1. XACML 策略語言模型

規則 Rule 是策略 Policy 的基本單元,其中主要包括目標 Target、效果 Effect 和條件 Condition。目標定義了主體 Subject、資源 Resource、動作 Action 和環境 Environment,效果表示目標滿足后的結果(允許 Permit 或是拒絕 Deny),條件表示該規則在何時適用。策略可以包含一組規則、規則結合算法、策略級別的目標和義務,其中策略級別的目標可以是策略中規則的目標交集,義務表示授權決策完成后要求執行點的動作。

下面通過 XML 片段說明 XACML 的策略和請求、應答消息。策略要求只有訪問者 id 是以 med.example.com 為域名的 email, 才允許訪問資源。請求消息中的訪問者 id 并不滿足要求,因此應答消息并沒有允許該訪問請求。


清單 1. XACML 策略示例
               
 <Policy xmlns="urn:oasis:names:tc:xacml:2.0:policy:schema:os"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:policy:schema:os 
     http://docs.oasis-open.org/xacml/access_control-xacml-2.0-policy-schema-os.xsd"
     PolicyId="urn:oasis:names:tc:example:SimplePolicy1"
     RuleCombiningAlgId="identifier:rule-combining-algorithm:deny-overrides"> 
     <Description>Medi Corp access control policy</Description> 
     <Target/> 
<Rule RuleId= "urn:oasis:names:tc:xacml:2.0:example:SimpleRule1" Effect="Permit"> 
    <Description>Any subject with an e-mail name in the med.example.com domain 
    can perform any action on any resource.</Description> 
    <Target><Subjects><Subject> 
      <SubjectMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match"> 
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"> 
        med.example.com</AttributeValue> 
 <SubjectAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
  DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"/> 
             </SubjectMatch> 
         </Subject></Subjects></Target> 
     </Rule> 
 </Policy> 


清單 2. 請求消息示例
               
 <?xml version="1.0" encoding="UTF-8"?> 
 <Request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os 
    http://docs.oasis-open.org/xacml/access_control-xacml-2.0-context-schema-os.xsd"> 
     <Subject> 
         <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
             DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"> 
             <AttributeValue>bs@simpsons.com</AttributeValue> 
         </Attribute> 
     </Subject> 
     <Resource> 
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
     DataType="http://www.w3.org/2001/XMLSchema#anyURI"> 
     <AttributeValue>file://example/med/record/patient/BartSimpson</AttributeValue> 
         </Attribute> 
     </Resource> 
     <Action> 
         <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
          DataType="http://www.w3.org/2001/XMLSchema#string"> 
             <AttributeValue>read</AttributeValue> 
         </Attribute> 
     </Action> 
     <Environment/> 
 </Request> 


清單 3. 應答消息示例
               
 <?xml version="1.0" encoding="UTF-8"?> 
 <Response xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os 
 http://docs.oasis-open.org/xacml/xacml-core-2.0-context-schema-os.xsd"> 
     <Result> 
         <Decision>NotApplicable</Decision> 
     </Result> 
 </Response> 


TSPM 簡介

當前簡單的基于角色訪問控制已經不能滿足要求,企業需要基于業務規則和上下文數據進行更細粒度的訪問控制。于是,集中式的基于策略的安全管理系統出現了,它構建在開放標準之上,集中管理認證、授權等安全任務,方便與異構系統集成。靈活的策略管理框架有助于實現業務目標和安全要求,而通用的安全服務是 SOA 環境中的基礎構造元素,它可以復用在多個業務場景中。

IBM 針對策略管理提出了包含建模 Author、轉換 Transform、運行 Enforce 和監控 Monitor 在內的生命周期,有效的安全策略管理就需要貫穿這四個階段,首先需要根據需求編寫安全策略,策略的定義和管理由策略管理點完成,然后它以通用形式被分發到策略決策點和執行點,在系統應用中被執行。

TSPM 是基于標準的應用安全方案,它提供集中式的應用權利管理、SOA 安全策略管理和安全服務,來加強應用系統和業務服務的訪問控制能力,從而在企業中實現服務治理。TSPM 使得主管部門和管理員將安全問題交給專門服務來處理,并且簡化了復雜的授權策略管理;另一方面,使得企業架構師和安全操作員針對多個系統的安全需求,可以集中管理和執行策略。結合策略管理框架,TSPM 通過多個組件的協作完成安全策略的生命周期管理。Tivoli Security Policy Manager 控制臺作為策略管理點,TSPM Runtime Security Services 作為策略決策點,保證容器級別安全性的 WAS 插件作為策略執行點。


圖 2. TSPM 體系結構
圖 2. TSPM 體系結構

醫療權限管理服務

TSPM 提供了通用的安全策略管理和執行平臺,業務系統可以直接調用 RTSS 服務進行授權請求。但是,這需要業務系統構造 XACML 格式的請求,并遵從 RTSS 的訪問協議,這增加了系統改造的負擔,而且無法簡單明了的配置訪問控制列表。因此,針對區域醫療的集成環境,基于 TSPM 產品開發授權服務,對外提供簡單的 Web 服務,根據請求構造 XACML 消息,再轉發給 RTSS 進行授權處理。同時,該服務支持配置訪問控制列表,使得在業務系統中也可以靈活的改變授權策略。圖 3 給出了業務系統和醫療授權服務的關系。


圖 3. 醫療權限管理的交互關系
圖 3. 醫療權限管理的交互關系

該方案中,根據業務需求通過 TSPM 創建策略,并發布到 RTSS 等待執行。策略的定義依賴于業務服務的元數據、用戶身份以及其他上下文信息。這里的策略與 Entitlement 數據不同, 它是符合 XACML 的通用策略,即通過請求中的主體、資源、動作、環境等,就可以得到是否允許訪問的效果。實際的策略可能很復雜,根據不同情況進行處理。而 Entitlement 數據作為策略執行的上下文信息(信息點),從一個方面描述用戶對資源的授權情況,為策略執行提供必要的支撐數據。讀者可以通過下一章節的策略示例來理解它們的區別。

授權服務提供的方法包括根據請求參數返回授權結果,以及針對資源訪問控制列表進行增刪改查操作,代碼片段如下所示。


清單 4. 授權服務接口
               
 @WebService 
 public class AuthzHealthcare{ 
 @WebMethod 
 public List<AuthzEntry> authorize(List<AuthzEntry> props); 

 @WebMethod 
 public boolean addEntitlement(AuthzRelation record); 
 @WebMethod 
 public boolean removeEntitlement(AuthzRelation record); 
 @WebMethod 
 public boolean updateEntitlement(AuthzRelation record); 
 @WebMethod 
 public List<AuthzRelation> listEntitlement(); 
 } 

其中 authorize 方法用于將外部系統的訪問請求轉化生成 XACML 消息,發送給 TSPM 的 RTSS 服務進行授權處理,并將返回的授權結果包裝成 POJO 對象。其余方法針對授權數據表進行管理,授權數據表參考 XACML 模型進行設計,記錄了訪問主體、目標資源、訪問類型和有效時間段。


權限管理在區域醫療中的應用

下面以醫療文檔共享系統和居民主索引系統為例,說明區域醫療中安全策略的應用場景。


表 1. 區域醫療安全策略
應用 動作 策略
文檔共享系統 Query EHRQueryPolicy
Retrieve EHRRetrievePolicy
Submit EHRSubmitPolicy
居民主索引系統 Register EMPIBasicPolicy
Update EMPIBasicPolicy
Retrieve EMPIBasicPolicy, EMPIRetrievePolicy
Query EMPIQueryPolicy

1. 查詢文檔

  • 安全需求:在查詢醫療文檔時,如果是緊急環境,就允許訪問;如果病人查詢自己的文檔,則允許訪問;如果某人已經得到病人的授權,則允許訪問。
  • TSPM 模型:請求屬性包括請求用戶 ID、當前病人 ID、緊急標識,請求類型是查詢;PIP 需要在數據庫中查詢該病人的授權用戶;PDP 執行規則依次是,檢查緊急標識,判斷請求用戶和當前病人是否一致,檢查請求用戶是否屬于授權用戶和當前時間處于授權有效期。

2. 獲取文檔

  • 安全需求:在獲取醫療文檔時,如果是緊急環境則允許;如果病人獲取自己的文檔則允許;如果某人已經得到該文檔的獲取授權則允許;如果某人已經得到病人的授權則允許。
  • TSPM 模型:請求屬性包括請求用戶 ID、當前病人 ID、文檔 ID、緊急標識,請求類型是獲取;PIP 需要在數據庫中查詢該病人的授權用戶,以及查詢該文檔的授權用戶;PDP 執行規則依次是,檢查緊急標識,判斷請求用戶和當前病人是否一致,檢查請求用戶是否屬于文檔的授權用戶,檢查請求用戶是否屬于病人的授權用戶,并且保證當前時間處于授權有效期。

3. 提交文檔

  • 安全需求:在提交醫療文檔時,如果用戶角色屬于醫生,則允許。
  • TSPM 模型:請求屬性包括請求用戶 ID,請求類型是提交;PIP 在 LDAP 中查詢用戶的角色;PDP 判斷用戶角色是否是“醫生”。

4. 操作居民信息

  • 安全需求:在注冊、更新、獲取、查詢居民信息時,如果操作人員是主管部門的工作人員則允許操作。
  • TSPM 模型:請求屬性包括用戶 ID,請求類型可能是注冊、更新、獲取、查詢,PIP 在 LDAP 中查詢用戶的角色;PDP 判斷用戶角色是否是主管工作人員。

圖 4 舉例說明了策略和權限管理服務的應用場景。EHR Viewer 為病人和醫生提供瀏覽、查看醫療文檔的功能。根據要求,該系統應該遵循以下策略,病人可以查看自己的文檔,醫生只有在經過授權,或者緊急狀況下才可以訪問病人的文檔。下圖中醫生 doctor_b 的工作臺中展示了病人張三的文檔樹,但由于未獲得授權,對文檔內容的訪問被拒絕。如果增加病人授權,或者勾選緊急情況開關,則該請求允許訪問。作為區域醫療解決方案中的系統之一,EHR Viewer 為了實現安全功能,將策略管理統一交由 TSPM 來完成,運行時與醫療權限管理服務進行交互,并根據授權結果進行后續處理。


圖 4. EHR Viewer 中的權限管理
圖 4. EHR Viewer 中的權限管理

總結

Tivoli Security Policy Manager 為分布式應用提供了統一集中的安全策略執行和管理功能,使得安全作為公共服務,從業務邏輯中分離出來,并且支持安全策略的整個生命周期管理。它實現了 XACML 框架,Policy Manager 作為 PAP,定義和分發 XACML 表達的安全策略;Authorization Service 作為 PDP,根據實際請求執行策略;數據源如數據庫或 LDAP 服務器作為 PIP,為策略執行提供依據;對應用暴露的安全服務作為 PEP,接收訪問請求并返回授權結果。在區域醫療應用場景中,基于 TSPM 開發授權管理服務,便于系統中授權策略的靈活配置和集中管理,從而為整個區域環境下的系統集成提供了有利的安全保障。


系列文章總結

隨著中國新醫改的推進,醫療信息化建設逐漸成為 IT 市場的熱點之一。為了實現醫改目標——建立以人為本的醫療服務體系,需要發展區域衛生信息化,建立電子健康檔案,整合醫療衛生信息資源。IBM 提出了“智慧的醫療”,將電子健康檔案作為區域醫療信息化建設的信息載體,基于 SOA 架構實現醫院、社區、公共衛生等信息資源的整合和共享,從而實現以人為中心的醫療體系。本系列文章由 IBM 醫療解決方案實驗室,結合醫療行業的實際需求,基于 IBM 的核心產品,針對區域醫療中的重點問題——醫療文檔共享、居民主數據管理、公共服務總線以及安全問題,總結出一系列解決方案和開發方法。開篇文章首先介紹了區域醫療的問題和挑戰,以及電子健康檔案的概念,隨后給出方案基于的醫療行業標準,最后重點介紹整個解決方案的體系結構和主要內容。接下來的文章分別介紹各主要問題的業務背景,標準相關內容,具體解決方案,開發概述和場景應用。通過該系列文章,希望能使讀者了解醫療行業背景,理解如何采用 SOA 技術解決區域醫療的重點問題,從而熟悉我們的參考解決方案。


參考資料

學習

獲得產品和技術

  • WebSphere 下載中心,您可以獲得最新的 WebSphere 產品的試用版和免費版,讓您可以提前免費體驗相關產品的強大功能。

討論

作者簡介

閆哲:IBM 中國軟件研發實驗室 SOA 設計中心高級軟件工程師,2007 年加入 IBM,參與過 SOA 策略管理、Web 服務元數據集成、醫療解決方案等項目,感興趣的領域包括 SOA、數據集成、工作流、J2EE 開發等,

李傳鋒:IBM 集成技術交付(Integrated Technology Delivery,ITD)工程師,擁有 10 年的軟件開發、設計、集成、交付和支持經驗,領域涵蓋電信 BOSS 系統、ITIL 管理軟件、SOA 軟件集成、J2EE、Web 2.0 等。

尹瑞:IBM 中國開發實驗室 SOA 設計中心的高級軟件工程師,曾參與過國內外多個 SOA 客戶項目的實施,目前正從事于醫療衛生行業解決方案的開發

 本文由用戶 netloser 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!