關偉文



關鍵詞:數據權限;分級授權;角色控制;訪問控制
1引言
在信息系統的運維中,權限管理是必不可少的。為了達到對權限細粒度的控制,同時兼顧未來權限的可拓展性,便于在信息系統運維過程中對權限的控制以達到對數據的精確地控制,從而避免因權限控制缺失或者操作不當引發的風險問題和系統安全性問題,提出分級數據權限設計方案。
權限管理是所有系統都會涉及的一個重要組成部分,主要目的是對不同的人訪問資源進行權限的控制。權限可分為功能權限和數據權限。功能權限用于控制用戶菜單、界面、操作等權限。數據權限用于控制用戶可視的數據范圍。功能權限與數據權限需要分開配置.充分解耦。
功能權限主要從用戶可以操作的范圍來實現,目前行業較為認可的一種解決方案是基于RBAC的權限控制模型。數據權限更多的是從安全性角度思考,如何控制用戶可視的數據范圍,如何靈活把控數據范圍,成了權限管理的一道難題。基于“組織架構+RBAC”的權限控制模型的設計方案,以分級授權的形式,可以準確控制行級別的數據,可以很好地解決相應的問題。
2數據權限設計
功能權限是各個信息系統必不可少的一個模塊,但數據權限并不是每個業務系統都要求的,具體要看實際的業務需求。假設所有的信息都是公開透明的,數據權限控制也就變得多余??墒?,當前世界錯綜復雜,每個人的身份也不盡相同,不可能每個人可視的數據范圍是相同的。所以,數據權限控制也就成為信息系統不可或缺的一部分。
數據權限以功能權限為基礎,不同的用戶,瀏覽同一個頁面顯示的數據是不同的,即用戶可以查看并處理哪些數據。出于靈活性、可拓展性、可維護性,本系統方案擬采用多級數據切割方案,具體如下。
一級數據規則(默認),也稱全局數據規則,它以組織架構為核心。組織架構一般為樹狀結構,每一個部門對應于樹上的一個節點,每個節點可綁定任意用戶。基于以組織架構為基礎的模型劃分的數據,可以實現上級瀏覽下級數據,但下級不能瀏覽上級數據。
父結點可以管理所有子結點的數據,結點只能管理自己所在結點的數據。如圖1所示,一級機構用戶可以管理二級機構1下的用戶b、用戶c數據以及二級機構2下的用戶d的數據,用戶b僅可以管理二級機構1下用戶的數據。
二級數據規則。需引入功能權限的【角色】,可以給角色配置預先定義的數據規則,從而實現跨部門的數據訪問以及同一部門下的數據切割。這類數據規則統稱為基于角色數據范圍,有如下三個范圍:全局級;部門級;個人級。
角色表(Role):存儲角色信息,即權限組。如表1所列。
角色數據范圍表(RoleDataRange):存儲角色數據范圍。如表3所列。
基于角色數據范圍,可以讓系統數據權限配置更加靈活,也彌補了一級數據規則的不足。通過這種方式配置的權限,屬于此角色的所有用戶都將獲得相應的數據權限?;诮巧臄祿巹t,可以解決絕大多數的數據權限問題。但是,它的配置是基于現有的范圍,不能自定義數據規則。
三級數據規則,是二級數據規則的一個補充,可實現自定義數據規則。二級數據規則的實現是基于角色的,而三級數據規則的實現是基于用戶的,換言之,三級數據規則是粒度更細的數據權限控制。系統管理員可以根據具體的業務邏輯,給任意用戶添加任意的數據規則。
用戶數據范圍表(UserDataRange):存儲用戶數據范圍。如表4所列。
如圖2所示,用戶d是特殊人員,有權限訪問二級機構1下所有的數據,但是并沒有權限訪問他的上級數據。顯然,現有的數據規則并不能滿足此類需求。此時需要使用三級數據規則,這類數據規則統稱為基于用戶的數據范圍。針對特殊人員d,可以單獨賦予其訪問二級機構1的權限,即可解決此類問題。
若業務系統規模較為龐大,不建議數據權限與角色進行深度捆綁。由于角色和用戶以及角色和功能權限是多對多的關系,若把數據權限強加進來進行綁定,業務系統就會變得繁雜、瑣碎,難以區分權限之間的界限。特別是在后期維護中,很難做到準確控制權限的范圍,造成權限的溢出。為了解決這一現象,只要把數據權限從角色中抽離出來,使角色與功能權限單獨捆綁,使用戶組與數據權限單獨捆綁,通過用戶組的形式,可以實現一對多的用戶管理,通過上述的二級數據權限設計方案,進而控制多個用戶的數據權限。通過上述的三級數據權限設計方案,即可達到對用戶更加細粒度、更加個性化的權限控制??偠灾?,功能權限的控制具有通用性,在市場上也有較為成熟的方案。但是數據權限的控制,一般而言,都是需要定制化開發,針對不同的業務系統,數據權限的概念是不一樣的,很多業務系統根本就不需要數據權限,數據權限的增加無疑會加大業務系統的建設難度,但數據權限也是不可缺少的。讀者可根據以上數據權限設計方案,結合業務系統的實際情況,自行設計出滿足業務系統的數據權限。但是,在設計過程中需要把握一個原則,確定用戶與角色捆綁還是與用戶組捆綁,進而設計出相應的數據權限。
通過以上三級數據權限的設計,可以實現對數據橫向控制,即控制用戶可以查看同一張表不同行的數據。行級別的數據權限控制基本上可以滿足絕大多數業務系統的需求。但是,有的業務系統信息比較敏感,如財務收費系統、人事管理系統等。不同身份的人,看到同一張表的數據是不一樣的。如財務總監可以看到工資總額,一般人員是看不到這個字段的。針對這種級別的數據權限控制,顯然以上的數據權限設計方案可能不太適用,為了實現對數據的縱向控制,對此提出了字段授權的設計理念,讀者可根據實際情況自行設計。
3字段授權
同屬一個角色或者用戶組的用戶,所擁有的數據權限是一致的,不同角色或用戶組用戶所看到的數據是不一致的。這里所指的數據,指的是數據表中的“行”數據。然而,在實際場景中,不同角色或用戶組的用戶,對于同一張表,即使所擁有的權限一致,看到的內容可能有所不同。針對敏感信息,不能直接暴露給非授權用戶。三級數據權限可以做到橫向切割數據,而字段授權可實現縱向切割數據。換言之,字段授權切割的對象對應于數據的數據,即數據表里的字段。
字段授權可采用基于角色進行授權,也可采用基于用戶組或者用戶進行授權。一般而言,從數據庫獲取而來的數據,需要與授權字段相匹配,進而過濾非授權字段,從而切割數據的數據。具體如圖3所示。
4結束語
基于“組織架構+RBAC”的權限控制模型的設計方案,以分級授權的形式解決傳統信息系統難以解決的問題。通過個人、角色、部門、權限等對象的組合達到對數據權限細粒度的控制,從而實現對數據的“行”控制。在此基礎上,提出了基于字段授權的理念,以實現對數據的控制,進而實現對數據的“列”控制。通過對數據“行”及“列”的訪問控制,可以滿足大多數信息系統對于數據權限控制的要求。實驗表明,分級數據權限設計方案在信息系統的應用中是可行、合理、高效的。