|
新的需求
昨天發現開發的安全中心已不能夠滿足外部系統對其的安全訪問需求,基本情況是這樣的,當前公司需要開發一個反饋中心中,有一個快速反饋的功能,其中有一個需求是能夠將快速反饋的通知已郵件的形式發送到相關處理人那里通知他們說,新的反饋信息來了,你們快點來處理啊。
以前設計的安全模型是以下方式:
使用部分為一個用戶有一個或多個安全角色,一個安全角色包括一組活動授權,每一個活動授權包括一組授權限制。
而定義部分是一個業務活動包括一組活動限制。
這種方式在處理安全授權的問題的過程是,首先獲取活動授權是否支持活動,在查詢活動的限制,并且將結果返回給調用者,而這其中需要處理兩個問題。
用戶授權的檢查:當一個用戶包括多個安全角色時需要將這些安全角色中的授權信息進行合并,這里使用拒絕優先的原則,所以只要有授權并且不是拒絕授權,就表示包括授權,而如果沒有授權或其中一個授權為拒絕就表示授權失敗。這里在處理合并處理起來比較簡單。
授權限制:當一個用戶包括多個安全角色時,還需要將授權約束進行合并,并且這里還需要考慮合并的策略。如:審核金額的限制,數值大的合并數值小的金額,而如果這是屬于一定的領域實例,那么這里的合并就是將主鍵按一定規則進行相加。這里在處理時我將這一合并定義為一個合并的策略接口,通過實現不同的接口來完成這個操作,基本上解決了這個問題。
當前模型的問題
但當出現了前面的需求時,我發現我就要完蛋了,根本就沒有什么方式能夠獲取到處理相關反饋的人。這里在處理反饋信息時,會根據反饋類別和反饋的國家進行限制,如:質量問題,中國,日本的就由技術部的張三處理;業務問題,中國,日本的就由業務部的李四處理。通過上而的模型對于這一需求我想真的是完蛋了。
并且經過后期的實踐我發現多個業務活動都需要相同的活動限制。如:業務部的李四處理與中國,日本相關的業務問題。這里有兩個業務活動,提交定單和查詢客戶這兩個業務之中,李四都只能夠處理與中國,日本相關的內容。如果采用以上模型那么就必須在兩個地方進行相應的處理,而如果這里相關的業務有10個那么當李四重新分配管理法國和德國的時候就必須設置10次。
而且當前公司在處理銷售時基本上是這種一個人處理一些國家的方式,這樣如果將這些信息全部設置在角色之中那么定然會讓角色信息出現爆炸式增長。
模型的改進
為了實現前面提出的安全需求同時解決當前模型中的問題,這里我單獨的將活動授權提取出來為“數據規則”,同時將業務活動對活動限制設置為“關聯關系”。將根據授權中對授權限制的設置移動到用戶之下,既用戶數據限制,通過這種方式的修改后的安全模型如下:
通過這種方式當用戶需要一個活動授權時,先查詢該用戶的活動授權情況,如果允許再通過業務活動與數據約束的相關性,獲取到相關的數據約束的值。同時這個模型也減少了對于數據約束的合并的問題。
還需要解決的問題
同時如果需要獲取相關的用戶,這里還需要考慮到數據的過濾問題,只返回與其相知道的用戶,這個問題我這里還沒有想好。
以上模型基本實現功能權限和數據權限的約束,具體應用還需要我將整個安全中心按新的模型修改完成后。
這里的模型是在實際應用之中減去不必要的內容后形成的安全核心內容。
希望如果大家有什么好的意見請多賜教,歡迎大家的批評指正。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。