劉 暢,喻 瀟,王 捷,徐江珮,田 里
(1.國網湖北省電力公司電力科學研究院,湖北 武漢 430077;2.國網湖北省電力公司十堰供電公司,湖北 十堰 442000)
現今,信息化已朝著電子化、互聯網化、移動化方向快速發展。隨著業務的多元化,組織機構與信息系統環境變得龐大復雜,企業在數據安全、流程風控和效率等方面都面臨嚴峻挑戰。組織中有日益增長的內部人員、外包人員和外部客戶等不同維度的人員,以及不同人員所被賦予的崗位職責與權限,這些用戶與權限與組織流程的運營效率和風險密切相關。大量數據顯示,多數安全風險實際是來自組織的內部人員,以及由于缺失規范的內部控制體系導致相關聯外部人員違規操作,從而直接威脅到組織經營安全。只有清晰、合理地權責劃分,才可能為風險控制體系奠定堅實的基礎。身份管理平臺是科學進行職責權限分工的必要工具,是完善組織內部控制系統的重要手段。組織需要合理劃分每個人員的崗位職責和權限的安全邊界,確保合適的人、在合適的崗位,有適當的職責與訪問權限。
身份管理的概念來源于西方。早在2002年,美國政府對SOX的立法增加了對身份管理與訪問控制(Identity and Access Management)技術的需求。于是從2004開始,第一批身份管理產品相繼誕生,它們來自大家耳熟能詳的廠商:IBM、CA、Oracle、BMC等。
經過若干版本的迭代和與用戶需求實踐的積累,2011年IDaaS概念被提出,即“身份即服務”。Okta,Onelogin,Centrify等一批新型的廠商開始在互聯網上提供身份基礎服務。時至今日,身份管理的覆蓋范圍擴展到了各種應用系統;管理的對象延伸到對實體身份的管理,實體不僅包括人、組織,也包括各種物理對象、虛擬對象等等;管理的重心也從原來簡單的帳戶管理轉向授權管理和審計等方面。根據注明咨詢機構Gartner在2017年6月發布的統計報告,全球市場中占主要地位的仍是Okta、Oracle、微軟、IBM和CA等大型廠商。

圖1 身份管理行業魔力四象限Fig.1 Identity management industry magic Quadrant
回顧中國國內,身份管理概念的引入大概是在“十一五”期間,即2006-2010年。國內的大型企業接團紛紛開始建設自己的身份管理體系。國家電網的“SG186”工程、中國石化集團的統一身份認證項目即是其中的典型代表。此時,國外企業的產品通過直銷或者代理的方式進入了國內市場,同時也將身份管理的理念灌輸給國內的企業客戶。
隨后,國內也出現了專注于身份管理技術的高新企業。其中的典型代表有國內軟件行業的先行者中科軟股份有限公司、技術專注而經驗豐富的竹云科技有限公司等等。這些企業已經完成了身份管理解決方案的國產化,并且在業內也已經有了一定的成功案例,技術比較成熟。
身份管理平臺現已成為信息化的基礎平臺之一。通常情況下,身份管理平臺從人力資源系統等權威用戶數據源處獲取基礎身份信息,并建立身份主數據,集中維護身份屬性,供應給應用系統。
若將身份管理平臺的邏輯架構進行抽象地概括,核心可以抽象為業務層和數據層。用戶可以通過瀏覽器訪問其用戶接口,進行自助訪問;管理員通過瀏覽器進行平臺管理。應用系統則通過各種接入方式實現與身份管理的供應和回收接口對接。

圖2 身份管理平臺基礎架構Fig.2 Identity Management Platform Infrastructure
經過身份管理項目中的一系列工作,權威的身份數據經過一定流程輸入到身份管理平臺中,通過業務層和數據層之后,被整理成易于應用系統取用的數據,通過身份管理平臺的供應接口傳輸到應用系統中。這些數據通常包括用戶(自然人)的基本身份數據、用戶在組織中的角色數據、用戶在特定應用系統中的特殊屬性數據等。例如,用戶的姓名、身份證號碼、手機號碼、電子郵件地址、用戶工作單位、用戶崗位名稱、用戶的權限等級等。
應用系統是指在信息化建設中,為了實現業務或職能的自動化、信息化,而建立的各種信息系統。例如,人力資源系統(簡稱HR系統)、協同辦公系統(簡稱OA系統)、企業資源規劃系統(簡稱ERP系統)等等。
應用系統接入身份管理平臺主要是實現集中的身份信息的管理。從信息系統的整體規劃來看,身份管理平臺是基礎服務平臺,置于業務系統等應用系統的下層,為上層應用系統提供身份信息。從底層來看,身份管理平臺中的身份主數據,包含了各個應用系統運行所需的電子身份信息,例如賬號、用戶基礎屬性(姓名、性別、年齡、部門等等),用戶基礎權限(用戶組、崗位、角色等等),以及其他個別應用系統所需的特殊字段。接入的主要目標,是實現這些數據在身份管理平臺和應用系統之間的流動。
接入的過程往往是比較困難的。這是由于應用系統的類型和數量都是非常大的。以中石化集團為例,其業務系統總數達到6000多個;其中,既有上世紀80年代建設的C/S架構業務系統、主流的B/S架構業務系統,也有最近上線的云架構應用系統。這些系統由不同的供應商提供,采用不同的技術架構,使用不同的基礎信息平臺。
經過業內專家若干年的經驗積累,通常會使用“連接器方式”和“私有協議/SDK方式”將應用系統接入身份管理平臺。
連接器是身份管理平臺為了連接各目標系統的數據存儲庫而編寫的程序。連接器在得到身份管理平臺的指示后,主動與應用系統的數據庫對接,實現身份管理平臺操作目標應用系統數據的功能。
幾乎所有的應用系統都可以抽象地看做是對數據做處理的信息系統。身份信息也是以數據的形態存儲在應用系統中。因此,在應對眾多復雜多樣的應用系統時,直接操作數據來實現身份管理平臺接入的方式是非常直接的,也是廣泛可行的一個連接器必須實現兩類接口,Configuration和Connector。其中Configuration接口負責定義接口的基本屬性,例如連接器的URL、標識信息、加密信息等。Connector類的接口則負責實現數據的增刪改查等具體功能。

圖3 連接器接入方式邏輯示意圖Fig.3 Connector access diagram logic diagram
(1)配置(Configuration)接口
配置接口中包含了連接器連接目標系統并實現操作的一些參數。除此之外還可以實現Validate()來驗證參數的正確性。每一個連接參數使用Anno?tation(Java)or attribute(.NET)的方式來實現,它有這樣一些元屬性:
以下代碼用以實現一個無狀態的接口配置邏輯:



表1 配置接口元屬性表Tab.1 Configure interface element attribute table

表2 連接器接口元屬性表Tab.2 Connector interface element attribute table
Message文件是用來填寫接口中使用到的一些參數。例如helpm1essageKey、displayMessageKey等調用的參數。可對Message的配置將Connector的顯示信息進行國際化操作。默認的Message文件和Con?nector在同一個包中,可以使用messageCatalogPaths來指定。


通常一個連接器都要實現若干的基礎接口,例如創建接口、刪除接口、禁用接口、修改接口、查詢接口等。有的連接器還需要根據應用系統的特殊情況設置特殊的接口,例如Scheme接口等。本文將討論典型接口的實現邏輯。
創建接口在目標系統中創建對象,并返回對象的UID屬性。如果創建的操作部分成功,Connector回滾當前的操作并拋出異常。如果不能回滾,則Connector可以拋出RetryableException。創建的實現邏輯如下:

類似的,Connector通過ObjectClass和UID在目標應用系統中刪除一個對象的實現如下:


通過ObjectClass和UID來確定一個對象,然后更新對應對象的屬性。


以上典型接口的邏輯剖析可以從底層的角度展示一個連接器在實現目標應用系統接入時的接入方法。其他典型接口與上文中接口實現邏輯類似,在此不做贅述。連接器方式這種直接操作目標應用系統數據庫的方式適合用來應對一些陳舊的應用系統。
例如,在某早期建設的應用系統中,使用IBM的DB2數據庫作為后端數據存儲。其應用系統采用早期的技術部署于IBM的小型機上。此應用系統的用戶管理模塊,會維護數據庫中的一張用戶表,從而實現對賬號的增刪改查。此時,要將該系統接入到身份管理平臺中,也就意味著用戶的增刪改查應該由身份管理平臺統一負責。管理員不再登錄到該應用系統,而是直接在身份管理平臺中進行用戶的增刪改查。
在此案例中,身份管理平臺將通過連接器發起數據變更的操作,主動將變更同步到應用系統的數據庫用戶表中。具體實現中,連接器調用IBM提供的ODBC,通過DB2的接口來進行用戶表中數據項的增刪改查。這種方式的實現非常簡單直接,以判斷用戶類別是內部員工還是外包人員的代碼為例:

連接器方式在身份管理平臺的接入項目中非常常見,它可以通過簡單的方法來實現應用系統的接入。因此,能夠在很多復雜的應用系統環境中使用。但是,由于是針對數據層的直接接入,如果操作不慎,可能造成應用系統錯誤,致使業務停滯。而且,連接器的編寫必須根據應用系統的實際情況來完成,不同的應用系統往往不能通用。因而,在身份管理項目中往往要花費很多精力在連接器的開發和測試上,支出的代價可謂比較可觀。
因此,連接器方式雖然簡單高效,卻不是一個值得推薦和廣泛使用的接入方式。在近些年的項目場景中,往往只是使用這種方式處理那些年代久遠且無法改造的應用系統和已經成熟的標準商業套件。
私有協議方式(又稱為SDK方式),將身份管理平臺中的身份數據,以標準的規范格式提供給應用系統,實現應用系統的身份管理接入。

圖4 私有協議/SDK接入方式邏輯示意圖Fig.4 Private protocol/SDK access diagram
與連接器不同的是,這種方式不再主動去操作應用系統的數據,而是提供這些數據,等待應用系統來取用。這種變化,將主動權交還給應用系統,保障應用系統中的數據只會通過應用系統自身進行修改。而且,身份管理平臺通過提供標準的數據服務接口,也降低了自身系統的復雜程度,并且為新建應用系統提供了統一的接入標準。進一步推進了企業的信息系統標準化進程。采用私有協議/SDK方式進行集成時,無需編寫連接器,但要求應用系統進行改造。身份管理平臺則只需完成對應的配置,即可與應用系統完成接入。
通常情況下,為了方便應用系統端進行改造,身份管理平臺會提供封裝完畢的抽象類,它一般包括如下方法:
(1) Create(objectCode, attributes),return Key(String)
應用系統實現這個方法,完成應用系統端的目標對象的創建。應用系統要返回賬號的Key,身份管理平臺會把這個Key保存在系統中,以后的更新、刪除等操作,就可以用這個Key作為關鍵字。如果失敗,要有Exception拋出,Exception中有失敗的原因描述。
(2) Update(objectCode,key,attributes,action),re?turn Key(String)
Action可以有(Update、Enable、Disable、Lock、Un?lock)。應用系統實現這個方法,完成應用系統端的目標對象更新,并返回Key值。如果失敗要有Ex?ception拋出,Exceptin中有失敗的原因。身份管理平臺對賬號的啟用、禁用等操作,在客戶端中被調用的也是Update,只是傳的action不同。
(3)Delete(objectClassName,Key)
應用系統實現這個方法,完成應用系統端的目標對象刪除。如果失敗,要有Exception拋出,Excep?tion中有失敗的原因。
(4)Search(objectCode,filter,returnAttrsNameList,pageNumber,pageSize)
根據傳入的returnAttrsNameList,組裝對象。將組織好的目標對象列表返回。應用系統根據傳入的Filter和Page查詢目標對象。查詢的時候,根據依賴關系情況進行返回:
·有層級關系的目標對象(比如TORG),要先返回父節點,再返回子節點;
·有Manager的目標對象(TACC),要先返回Manager。
以一個Java開發的B/S架構的WEB應用系統為例。為了能以私有協議/SDK的方式接入身份管理平臺,首先要將上述抽象類以Servlet方式嵌入到應用系統中。應用系統管理員修改web.xml文件,以便在應用系統啟動時可以同時啟用該身份管理Servlet。
以身份管理平臺提供的抽象類為基礎,應用系統的改造工作就相對簡易了。思路大體分為3部分:配置文件、屬性映射、完成操作。
其中,配置文件用于連接身份管理平臺,其中一般包含連接用的URL、身份標識信息以及加密隧道等配置。Main函數需要有訪問該配置文件的權限。例如,以下代碼從D盤根目錄下讀取了配置文件“im-integration.fps.properties”,并從身份管理平臺取一次數據。

取到數據之后,需要將數據格式調整為應用系統可以識別的格式,這個過程就是屬性映射。這部分的實現邏輯條理非常清晰,以用戶的常見身份屬性為例,如下代碼實現了屬性的映射。

完成了屬性定義后,就可以根據情況對應用系統的數據進行更新了。仍然使用上文的例子,要更新該用戶的屬性,直接調用應用系統中的用戶信息修改的方法即可。為了清晰,本文以應用直接寫數據庫為例:

應用系統中所需的其他身份數據的下拉與上推過程邏輯與上述用戶屬性的過程類似,在此不再贅述。
私有協議/SDK接入方式在身份項目的實施中可以清晰地定義身份管理平臺和應用系統的界限,使得原本紛繁復雜的接入過程變得條理清晰。身份管理平臺通過提供已經封裝好的抽象類,簡化了應用系統改造的過程,大幅度縮短了改造工程的實施周期。故而,在現今的身份管理項目中,使用這種接入方式可以提高整個項目的實施水平,也方便日后的維護。但是,如果應用系統不能支持改造,這種接入方式是無法實施的。因此,對應用系統的運維團隊的代碼能力要求相對要高一些。
通過剖析這兩種接入方式的實現邏輯,可以得出以下結論:連接器方式和私有協議/SDK方式均能滿足身份管理平臺的接入要求。然而,前者與應用系統關系更緊密,項目中開發工作量相對較大,增加了系統的復雜性,提高了故障定位的難度;后者則采用統一的接口協議,明確了應用系統與身份管理平臺之間的界限,減少了身份管理項目的開發工作量,簡化了信息部門的運維工作。因此,在條件允許的情況下,建議首選私有協議/SDK方式來實現身份管理的接入,連接器方式可以作為一個補充,應對項目中的特殊情況。
身份管理作為信息安全范疇下的一個細分領域,已經得到信息主管單位的重視,并且在各行業的信息化部門中廣泛得以應用。通過本文對身份管理平臺接入方式的梳理和總結,可以讓更多的企業或組織從中受益,提高自身的信息安全水平和內部風險控制水平,以更完善的基礎信息服務來輔助業務的高速發展。
[參考文獻](References)
[1] 薛聰,向繼,高能.身份管理發展趨勢和中國科學院身份管理系統[J].科研信息化技術與應用,2015,6(01):41-49.XUE Cong,XIANG Ji,GAO Neng.The trend of iden?tity management and the identity management sys?tem of Chinese academy of sciences[J].E-science Technology and Application,2015,(01):41-49.
[2] 陳志德,黃欣沂,許力.身份認證安全協議理論與應用.[M].北京:電子工業出版社,2015.CHEN Zhide,HUANG Xinyi,XU Li.Theory and application ofauthentication protocol[M].Beijing:Publishing House of Electronics Industry,2015.
[3] 陳茂隆.云計算平臺下用戶身份管理系統的設計與開發[D].天津:天津大學,2012.CHEN Maolong.Design and implementation of user identity managementsystem in cloud computing center[D].Tianjin:Tianjin University,2012.
[4] 趙琨.身份管理系統與企業信息系統的集成與應用研究[D].上海:上海交通大學,2008.ZHAO Kun.The research of integration and applica?tion of identify management with enterprise’s infor?mation system[D].Shanghai:Shanghai Jiaotong Uni?versity,2008.
[5] 于子元.基于SAML和REST的企業級身份管理系統的研究與實現[D].長春:東北師范大學,2009.YU Ziyuan.The research and implementation of en?terprise identity management system based on SAML and REST[D].Changchun:Northeast Normal University,2009.
[6] 徐元區.基于統一身份管理的企業安全體系架構的設計和實現[D].北京:北京郵電大學,2008.XU Yuanqu.Design and implementation of security system in enterprise it infrustructure based on uni?fied identity authentication[D].Beijing:Beijing Uni?versity Of Posts And Telecommunications,2008.
[7] 李石師.統一身份管理系統的設計與實現[J].中國新技術新產品,2015(15):27.LI Shisi.The design and implementation of a unified identity management system[J].China New Technolo?gies and Products,2015(15):27.