啟用對CRX存放庫的存取涉及多個主題:
基本元素包括:
User AccountsCRX根據使用者帳戶中保有的詳細資訊,識別並驗證使用者(由個人或其他應用程式),以驗證存取權。
在CRX中,每個使用者帳戶都是工作區中的節點。 CRX使用者帳戶具有下列屬性:
它代表CRX的一個使用者。
它包含用戶名和密碼。
適用於該工作區。
不能有子用戶。 對於分層訪問權限,您應使用組。
您可以指定使用者帳戶的存取權限。
不過,為簡化管理,我們建議您(在大多數情況下)將存取權指派給群組帳戶。 為每個個別使用者指派存取權限變得很難管理(只有一或兩個例項時,某些系統使用者會遇到例外)。
組帳 戶組帳戶是用戶和/或其他組的集合。當指派給群組的存取權限變更會自動套用至該群組中的所有使用者時,這些變更可用來簡化管理。 使用者不必屬於任何群組,但通常屬於數個群組。
在CRX中,群組具有下列屬性:
它代表一組具有共同存取權限的使用者。 例如,作者或開發人員。
適用於該工作區。
它可以有成員;可以是個別使用者或其他群組。
通過成員關係可以實現分層分組。 不能將組直接放在儲存庫中其他組的下方。
您可以定義所有群組成員的存取權限。
存 取權限CRX使用存取權限來控制存放庫特定區域的存取。
要執行此操作,請將權限指派給允許或拒絕存取儲存庫中的資源(節點或路徑)。 由於可以指派各種權限,因此必須評估這些權限,以判斷哪個組合適用於目前的請求。
CRX可讓您設定使用者和群組帳戶的存取權限。 評估的基本原則隨後適用於這兩者。
CRX實現了JSR-283🔗定義的訪問控制。
CRX存放庫的標準安裝設定為使用資源型存取控制清單。 此為JSR-283存取控制的可能實作,以及Jackrabbit隨附的其中一項實作。
評估存取權限時,CRX使用兩個重要概念:
principal是具有訪問權限的實體。 承擔者包括:
使用者帳戶。
群組帳戶
如果用戶帳戶屬於一個或多個組,則它也與這些組主體中的每個相關聯。
subject用於表示請求的源。
它可用來合併適用於該請求的存取權限。 這些來自:
用戶主體
您直接指派給使用者帳戶的權限。
與該用戶關聯的所有組主體
指派給使用者所屬任何群組的所有權利。
然後,結果將用於允許或拒絕對所請求資源的訪問。
在CRX中,主體取決於:
適用於主題的訪問權限清單由以下內容構成:
CRX處理請求時,會比較來自主旨的存取請求與存放庫節點上的存取控制清單:
因此,如果Linda請求更新以下儲存庫結構中的/features
節點:
CRX中的存取權限評估如下:
用戶主體始終優先於組主體,而不考慮:
對於給定主體,給定節點上存在(最多)1個拒絕和1個允許條目。 實施一律會清除多餘的項目,並確保允許和拒絕項目中不會列出相同的權限。
此評估過程適用於標準CRX安裝的基於資源的訪問控制。
舉兩個用戶aUser
是組aGroup
成員的示例:
+ parentNode
+ acl
+ ace: aUser - deny - write
+ childNode
+ acl
+ ace: aGroup - allow - write
+ grandChildNode
在上述情況中:
aUser
未授予對的寫權限 grandChildNode
。 + parentNode
+ acl
+ ace: aUser - deny - write
+ childNode
+ acl
+ ace: aGroup - allow - write
+ ace: aUser - deny - write
+ grandChildNode
在此情況下:
aUser
未授予對的寫權限 grandChildNode
。
aUser
的第二個ACE是冗餘的。
系統會根據多個組主體的順序(在層次結構內和在單個訪問控制清單內)評估其訪問權限。
下表列出一些建議和最佳實務:
建議…… | 原因... |
使用群組 | 避免按用戶分配訪問權限。 原因有幾:
|
積極 | 始終使用Allow語句指定組主體的訪問權限(盡可能)。 避免使用Deny語句。 按順序評估組主體,包括在層次結構內和在單個訪問控制清單內的順序。 |
保持簡單 | 在配置新安裝時花一些時間和時間進行思考將得到很好的回報。 應用清晰的結構將簡化持續的維護和管理,確保您的當前同事和/或未來的繼任者都能輕鬆了解正在實施的內容。 |
測試 | 使用測試安裝來實踐並確保您了解各種使用者和群組之間的關係。 |
預設使用者/群組 | 安裝後請一律立即更新預設使用者和群組,以避免發生任何安全問題。 |
標準對話框用於用戶管理。
您必須登入適當的工作區,然後您就可以從這兩個位置存取對話方塊:
屬性
帳戶的UserIDShort名稱,用於存取CRX。
主
體名稱帳戶的全文名稱。
使用此帳戶存取CRX時需要密碼。
ntlmhash自動為每個新帳戶分配,並在更改密碼時更新。
您可以定義名稱、類型和值,以新增屬性。 按一下每個新屬性的「儲存」(綠色勾號)。
組成 員資格此顯示帳戶所屬的所有組。「繼承」列指示由於其他組的成員身份而繼承的成員身份。
按一下GroupID(如果可用)將開啟該組的組管理。
模擬使用者透過模擬功能,使用者可以代表其他使用者運作。
這表示使用者帳戶可以指定其他帳戶(使用者或群組),以便使用其帳戶運作。 換句話說,如果允許使用者B模擬使用者A,則使用者B可使用使用者A的完整帳戶詳細資訊(包括ID、名稱和存取權限)執行動作。
這可讓模擬者帳戶完成工作,就像使用其模擬的帳戶一樣;例如,在缺勤期間或在短期內共用過多負荷。
如果帳戶模擬另一個帳戶,就很難看到。 日誌檔案不包含有關事件上發生了模擬的事實的資訊。 因此,如果使用者B模擬使用者A,則所有事件看起來都像是由使用者A個人執行。
開啟User Administration對話框。
按一下「建立用戶」。
然後,您可以輸入「屬性」:
按一下「保存」(綠色勾號)。
對話方塊將會展開,以便您能:
在安裝中註冊新用戶時,有時會出現效能下降的情況,因為安裝中同時有大量的用戶:
使用User Administration對話框開啟所有帳戶的清單視圖。
瀏覽樹結構。
按一下要開啟以進行編輯的必要帳戶。
進行更改,然後按一下該條目的「保存」(綠色勾號)。
按一下關閉以完成,或按一下清單……以返回所有用戶帳戶的清單。
使用User Administration對話框開啟所有帳戶的清單視圖。
瀏覽樹結構。
選擇所需帳戶,然後按一下刪除用戶;帳戶將立即刪除。
這會從儲存庫中刪除此主體的節點。
未移除存取權限項目。 這確保了歷史的完整性。
您可以為新帳戶或現有帳戶定義屬性:
可以使用垃圾桶符號刪除現有屬性。
除了「密碼」之外,無法編輯屬性,必須刪除並重新建立屬性。
Password是一種特殊屬性,可通過按一下Change Password連結進行更改。
您也可以從CRX Explorer的Security功能表變更自己使用者帳戶的密碼。
您可以為新帳戶或現有帳戶定義「模擬」:
開啟相應帳戶的用戶管理對話框。
指定要允許模擬該帳戶的帳戶。
您可以使用Browse…來選取現有帳戶。
按一下新屬性的「保存」(綠色勾號)。
標準對話框用於組管理。
您必須登入適當的工作區,然後您就可以從這兩個位置存取對話方塊:
屬性
群組帳戶的GroupIDShort名稱。
主
體名稱組帳戶的全文名稱。
您可以定義名稱、類型和值,以新增屬性。 按一下每個新屬性的「儲存」(綠色勾號)。
成員您可以添加用戶或其他組作為此組的成員。
組成 員資格(Group Membership)這顯示當前組帳戶所屬的所有組。「繼承」列指示由於其他組的成員身份而繼承的成員身份。
按一下GroupID會開啟該群組的對話方塊。
成員列出屬於當前組的所有帳戶(用戶和/或組)。
Inherited列指示由於其他組的成員身份而繼承的成員身份。
將「擁有者」、「編輯者」或「檢視者」角色指派給任何資產資料夾上的使用者時,系統就會建立新群組。 對於定義角色的每個資料夾,組名的格式為mac-default-<foldername>
。
開啟組管理對話框。
按一下「建立組」。
然後,您可以輸入「屬性」:
按一下「保存」(綠色勾號)。
對話方塊將會展開,以便您能:
使用組管理對話框開啟所有帳戶的清單視圖。
瀏覽樹結構。
按一下要開啟以進行編輯的必要帳戶。
進行更改,然後按一下該條目的「保存」(綠色勾號)。
按一下關閉以完成,或按一下清單……以返回所有組帳戶的清單。
使用組管理對話框開啟所有帳戶的清單視圖。
瀏覽樹結構。
選擇所需帳戶,然後按一下「刪除組」;帳戶將立即刪除。
這會從儲存庫中刪除此主體的節點。
未移除存取權限項目。 這確保了歷史的完整性。
您可以為新帳戶或現有帳戶定義屬性:
可以使用垃圾桶符號刪除現有屬性。
您可以將成員添加到當前組:
開啟相應帳戶的組管理對話框。
其中之一:
按一下新屬性的「保存」(綠色勾號)。
或刪除具有垃圾桶符號的現有成員。
使用CRXDE Lite的訪問控制頁簽,您可以定義訪問控制策略並分配相關權限。
例如,對於當前路徑,請在左窗格中選擇所需資源,在右下窗格中選擇「訪問控制」頁簽:
這些策略按以下方式分類:
適用的訪問控
制策略可以應用這些策略。
這些是可用於建立本地策略的策略。 一旦選擇並添加適用的策略,它就會成為本地策略。
本地訪問控
制策略這些是您已應用的訪問控制策略。然後,您就可以更新、訂購或移除這些項目。
本地策略將覆蓋從父項繼承的任何策略。
有效的訪
問控制策略這些是現在對任何訪問請求生效的訪問控制策略。它們顯示從本地策略和從父項繼承的任何策略派生的聚合策略。
可以為以下項選擇策略:
目
前路徑如上例,在存放庫內選取資源。將顯示此「當前路徑」的策略。
儲存庫選擇儲存庫級別的訪問控制。例如,當設定
jcr:namespaceManagement
權限,僅與儲存庫相關,而不與節點相關。
Principal(主體)在儲存庫中註冊的主體。
您可以鍵入主體名稱,或按一下欄位右側的表徵圖以開啟選擇主體對話框。
這可讓您搜尋使用者或群組。 從結果清單中選擇所需的主體,然後按一下OK將值帶回上一個對話框。
為簡化管理,建議您將存取權指派給群組帳戶,而非個別使用者帳戶。
管理幾個群組(而非許多使用者帳戶)比較容易。
添加訪問控制項時,可選擇以下權限(有關完整詳細資訊,請參閱安全API):
權限名稱 | 它控制…… |
---|---|
jcr:read |
檢索節點並讀取其屬性及其值。 |
rep:write |
這是jcr:write和jcr:nodeTypeManagement的Jackrabbit特定匯總權限。 |
jcr:all |
這是包含所有其他預先定義權限的匯總權限。 |
進階 | |
crx:replicate |
執行節點複製。 |
jcr:addChildNodes |
建立節點的子節點。 |
jcr:lifecycleManagement |
在節點上執行生命週期操作。 |
jcr:lockManagement |
鎖定和解鎖節點;刷新鎖。 |
jcr:modifyAccessControl |
修改節點的訪問控制策略。 |
jcr:modifyProperties |
建立、修改和刪除節點的屬性。 |
jcr:namespaceManagement |
註冊、註銷和修改命名空間定義。 |
jcr:nodeTypeDefinitionManagement |
將節點類型定義導入儲存庫。 |
jcr:nodeTypeManagement |
添加和刪除混合節點類型並更改節點的主節點類型。 這也包括對Node.addNode和XML導入方法的任何調用,其中顯式指定了新節點的mixin或主要類型。 |
jcr:readAccessControl |
閱讀節點的訪問控制策略。 |
jcr:removeChildNodes |
移除節點的子節點。 |
jcr:removeNode |
移除節點。 |
jcr:retentionManagement |
對節點執行保留管理操作。 |
jcr:versionManagement |
對節點執行版本設定操作。 |
jcr:workspaceManagement |
透過JCR API建立和刪除工作區。 |
jcr:write |
這是一個聚合權限,包含: - jcr:modifyProperties - jcr:addChildNodes - jcr:removeNode - jcr:removeChildNodes |
rep:privilegeManagement |
註冊新權限。 |
您也可以註冊新權限:
從工具欄中,選擇工具,然後選擇權限以顯示當前註冊的權限。
使用註冊權限表徵圖(+)開啟對話框並定義新權限:
按一下OK以儲存。 該權限現在可供選擇。
選擇您的資源並開啟Access Control頁簽。
要添加新的本地訪問控制策略,請按一下適用訪問控制策略清單右側的+表徵圖:
新條目出現在本地訪問控制策略:下
按一下+圖示以新增項目:
目前需要因應措施來指定空字串。
為此,您需要使用「」。
定義訪問控制策略,然後按一下OK以保存。 您的新政策將:
CRX將驗證您的選擇;對於給定的主體,給定節點上存在(最多)1個拒絕和1個允許進入。 實施一律會清除多餘的項目,並確保允許和拒絕項目中不會列出相同的權限。
清單中的順序指示應用策略的順序。
在本地訪問控制策略的表中,選擇所需條目,並將其拖動到表中的新位置。
Local和有效訪問控制策略的表中將顯示更改。
在本地訪問控制策略的表中,按一下條目右側的紅色表徵圖(-)。
該條目將從Local和有效訪問控制策略的表中刪除。
從CRXDE Lite工具欄中,選擇工具,然後選擇測試訪問控制……。
右上方窗格中會開啟新的對話方塊。 選擇要測試的路徑和/或主體。
按一下Test以查看您的選擇結果: