Shiro Review 許可權管理基礎知識

2021-09-22 21:54:07 字數 2725 閱讀 4912

只要是有使用者參與的系統一般都會有許可權管理,許可權管理實現對使用者的訪問控制,按照安全規則或者安全策略控制使用者可以訪問而且只能訪問自己被授權的資源。

許可權管理包括使用者認證和授權兩部分。

使用者去訪問系統,系統要驗證使用者身份的合法性。比較常見的認證方法:1,使用者名稱密碼方式;2,指紋識別,比如我們上班打卡;3,基於證書方式;

當系統驗證了使用者身份的合法性,使用者方可訪問系統的資源。

許可權管理是基於資源的,當我們去訪問資源的時候,先判斷這個資源是否允許匿名訪問,比如我們訪問乙個登入頁,發現這個登入頁面可以匿名訪問,則我們訪問過程被放行,進入使用者身份認證。

*subiect:主體,可以起理解為使用者,但也可能是程式,都要去訪問系統的資源,所以,系統需要對subject進行認證。

*principal:身份資訊,通常是唯一的,乙個主體還有多個身份資訊,但是都有乙個主身份資訊(primary principal)。

*credential:憑證資訊,可以是密碼,證書,指紋。

使用者認證通過之後,系統對使用者訪問資源進行控制,使用者具有訪問資源的許可權才可以被授權訪問資源。

使用者認證通過之後,在使用者訪問資源之前,首先要判斷使用者是否具有訪問這一資源的許可權,如果有的話才可以繼續訪問。其實在許可權控制之前,還有一項要做的額外工作就是為使用者分配許可權,相當於使用者許可權的乙個初始化的過程。

授權的過程可以理解為:who 對what進行了how

who:即subject,subject在認證通過後對系統進行訪問控制。

what:資源(resource),subject必須具備資源的訪問許可權才可以訪問該資源,比如,使用者購物時候要刪除商品,但是使用者是沒有刪除商品資訊這個許可權的,訪問被拒絕。

ps:資源分為資源型別和資源例項,比如,商品資訊,和商品id為96e79218965eb72c92a549dd5a330112的商品。

how:許可權/許可(permission),針對資源的許可權或許可,subject具有permission訪問資源,如何訪問操作需要定義permission,如,使用者新增,商品刪除。

主體(賬號、密碼)

資源(資源名稱,訪問位址)

許可權(許可權名稱、資源id)

角色(角色名稱)

角色和許可權關係(角色id、許可權id)

主體和角色關係(主體id、角色id)

通常在開發中,將資源跟許可權合併為一張表:

資源(資源名稱、訪問位址)

許可權(許可權名稱、資源id)

合併為:

許可權(許可權名稱、資源名稱、資源訪問位址)

在授權流程中,如果要使授權流程正常走下去,在這之前,要初始化我們的許可權資料,即分配許可權。使用者需要分配相應的許可權才可訪問相應的資源。

許可權是對於資源的操作許可。通常給使用者分配資源許可權需要將許可權資訊持久化,比如儲存在關聯式資料庫中。把使用者資訊、許可權管理、使用者分配的許可權資訊寫到資料庫(許可權資料模型)

授權控制分為兩種:基於角色的訪問控制和基於資源的訪問控制。

基於角色的訪問控制: 比如,在系統中,我們將角色劃分為:管理員,一般使用者,匿名使用者。通過配置使用者在系統中的角色,來劃分使用者可以訪問的資源。

缺點:擴充套件性維護性不強。

基於資源的訪問控制:資源在系統中是不變的,比如資源有:類中的方法,頁面中的按鈕。一般建議使用這種方式實現訪問控制。

粗粒度許可權管理,對資源型別的許可權管理。資源型別比如:選單、url連線、使用者新增頁面、使用者資訊、類方法、頁面中按鈕。。

粗粒度許可權管理比如:超級管理員可以訪問戶新增頁面、使用者資訊等全部頁面。

部門管理員可以訪問使用者資訊頁面包括 頁面中所有按鈕。

細粒度許可權管理,對資源例項的許可權管理。資源例項就資源型別的具體化,比如:使用者id為001的修改連線,1110班的使用者資訊、行政部的員工。實際上,  細粒度許可權管理就是資料級別的許可權管理。

2,如何實現粗粒度的許可權管理和細粒度的關係管理

粗粒度許可權管理比較容易將許可權管理的**抽取出來在系統架構級別統一處理。比如:通過springmvc的***實現授權。

對細粒度許可權管理在資料級別是沒有共性可言,針對細粒度許可權管理就是系統業務邏輯的一部分,如果在業務層去處理相對比較簡單,如果將細粒度許可權管理統一在系統架構級別去抽取,比較困難,即使抽取的功能可能也存在擴充套件不強。

建議細粒度許可權管理在業務層去控制。

1,基於ulr攔截:通過***攔截到url,然後進行使用者認證,使用者授權,通過這兩部驗證之後,使用者才可以訪問資源。

2,通過類似shiro這類許可權框架實現。

許可權管理 chattr許可權

1 chattr 許可權 對包括root在內的所有使用者都起作用 新增chattr許可權 chattr i abc 檢視chattr許可權 lsattr abc 取消chattr許可權 chattr i abc i 針對檔案 則完全不能修改該檔案,針對目錄 只能修改目錄下檔案的資料,但不允許建立和刪...

許可權管理 ACL許可權

acl許可權簡介 當要給乙個使用者與檔案屬主 屬組 其他人許可權都不相同的時候使用,也就是說,這個使用者對於這個檔案不屬於三種身份的任何一種,是屬於第四種身份,那麼我們就需要使用acl許可權去給他賦予單獨的許可權。檢視分割槽acl許可權是否開啟 dumpe2fs h dev sda3 dumpe2f...

許可權及許可權管理

許可權管理 u 檔案的屬主,g 屬組,o 其他使用者 r 檔案 cat less more檢視內容 目錄 可使用ls命令,但不能切換進此目錄,也不能使用ls l命令 w x 檔案 可執行 目錄 使用cd ls l命令 chown 改變檔案屬主 只有管理員可以使用此命令 chown jack file...