許可權控制的思考

2021-06-07 03:18:28 字數 1827 閱讀 8815

凡是多使用者的應用系統往往都有許可權訪問控制的要求。許可權訪問控制的本質是」who「對"which"進行"what"操作的布林表示式。如果你通過獨自深刻的思索或者參考別人的文章,充分而又深刻的認識到這一點,那麼,恭喜你,你已經把握到了問題的本質,對許可權訪問控制的認識已經入門了,但也僅僅是入門了而已。當你基於這個本質,開始設計現實中的許可權訪問控制模組時,你會發現,果然,理想很美好,現實太骨感,你成功地陷入了乙個泥潭,但值得高興的是,泥潭中已經有了許多同志,吾道不孤呀。

設計是針對過去、現在和未來的一種思考,過去、現在容易把握,未來卻難以掌控。我們設計出來的模型應該可以應付一定範圍內的場景變化。即任它場景如何變化,我們的設計模型卻巍然不動,頗有點」他強由他強,明月照大江;他橫由他橫,清風拂山崗「的境界。針對許可權訪問控制的設計模型卻一次次地在現實場景中被擊垮,讓我們來重走這一歷程。

開始,你可能想象設計乙個介面,讓系統管理員顯示指定」who「對"which"進行"what"操作的許可(這裡的」who"代表著角色或者崗位,否則你會面臨著某某離職、某某又上崗,需要重新授權等麻煩事)。是的,你已經成功地解決了許可權控制的問題,解決的方式是你將問題拋給了系統管理員。想象乙個企業級的文件系統,1000個使用者、10萬個檔案、5種功能操作(文件發現、文件屬性讀、文件屬性寫、文件內容讀、文件內容寫),那麼有多少個顯示的授權要求呢?5億個授權,這是人能做的事情嗎?只有神了吧。

模型擊垮了,於是通過我們認真思索、思索、再思索,終於發現,原來"which"具有層次化組織屬性,當我們顯示授權某個使用者對公司文件的某種操作許可時,往往也隱式地指定了該使用者對公司下屬部門文件同樣的操作許可。通過「which」的層次化組織屬性和隱式的繼承屬性,我們成功地解決了授權量膨脹問題。在最極端的情況下,我們只需顯示指定每個使用者對公司文件的顯示授權即可,此時顯示授權量只有5000個了,雖然還是有點多,但基本上屬於人級的操作範圍了。但再想想,真的嗎?真的是只要能進入大門,就可以到處溜達,到處看看了嗎?如果這樣,那我們是不是可以進入財務室,開啟保險櫃,看看裡面有多少現款,想想都是多麼激動人心的事啊。哦,原來資源還有自身的安全屬性,不是隱式繼承單獨可以解決的,你可以到閱覽室看看,但財務室依然是非請勿入的。

於是,我們的許可權設計引入了文件本身的安全屬性,文件的許可權控制由附加在文件上的顯示授權資訊、文件所在目錄路徑的隱式授權繼承資訊、文件自身的安全屬性資訊三方依次作用的共同結果。附加在文件上的顯示授權資訊許可權控制級別最高。當顯示授權資訊存在時,即按照該顯示授權資訊控制文件的訪問許可權;當顯示授權資訊不存在時,則由後兩者共同作用來決定文件的訪問屬性,只有文件所在目錄路徑的隱式授權許可存在,且當文件本身的安全屬性為public時才可以訪問該文件。這樣,財務室的文件預設屬性是private,而其他一般部門的文件屬性預設為public。具有隱式授權資訊的使用者可以訪問其它部門的文件,而不能訪問財務室的文件。

然而,還有兩個需要考慮的問題,乙個是本部門人員對本部門文件的隱式訪問問題,另乙個是財務總監、公司經理等對部門文件的隱式訪問問題。前乙個問題我們可以引入文件自身的"protected"安全屬性,即同部門的使用者可以隱式訪問本部門的具有"public"或"protected"安全屬性的文件,其他部門的使用者僅能隱式訪問本部門的具有"public"安全屬性的文件。後乙個問題我們通過引入文件自身的"friend"安全屬性予以解決,即授權財務總監對財務室的文件為"friend",這樣財務總監可以檢視財務室的所有非"private"文件。

問題好像都解決了,現在讓我們看看文件搜尋,假如使用者根據一定的關鍵字搜尋文件,此時需要針對10萬文件中的每個文件,分別進行顯示、隱式的安全判斷,處理工程量非常大,效能不可接受。最終我們發現,即便使用了文件的隱式繼承授權資訊以及文件自身的安全屬性,需要處理的授權許可資訊依然太大。於是我們反思,哦,是我們對文件系統許可權控制的which控制力度太細,如果你想針對撒哈拉沙漠的每一粒沙都帶上一把鎖,鎖的成本就遠超沙的成本。退一步,我們僅對文件目錄進行許可權控制。

vue後台管理系統許可權控制思考與實踐

最近在開發管理系統時遇到了任何管理系統都會有的需求 許可權控制,之前也遇到過這種需求,但是架構不完善導致的各種問題使得後期維護非常麻煩,這一次的方案解決了之前的種種問題,現做一次記錄,當然這個架構後期可能會有坑,不過得一步一步的嘗試才能發現並解決問題。因為是單頁面應用,路由交給前端來控制,對於一些需...

elk許可權控制 Kibana訪問許可權控制

elk平台搭建完成後,由於kibana的服務也是暴露在外網,且預設是沒有訪問限制的 外部所有人都可以訪問到 這明顯不是我們想要的,所以我們需要利用nginx接管所有kibana請求,通過nginx配置將kibana的訪問加上許可權控制,簡單常見的方式可以使用如下三種方式 方案一 利用nginx使用者...

proftpd的許可權控制

proftpd以完美的許可權控制著稱.所以這個教程的目的是讓大家理解proftpd的許可權設定的過程 拿我的music ftp來舉例子了.在 usr local music這個目錄中的許可權設定 denygroup pubfxp 上面的內容限制pubfxp這個組刪除目錄 rmd 刪除檔案 del 和...