使用者、群組和存取權管理

上次更新: 2023-09-21
  • 主題:
  • Security
    檢視有關此主題的更多資訊

啟用CRX存放庫的存取權涉及幾個主題:

基本元素包括:

使用者帳戶 - CRX會根據使用者帳戶中保留的詳細資訊,識別及驗證使用者(由該人員或其他應用程式),以驗證存取權。

在CRX中,每個使用者帳戶都是工作區中的節點。 CRX使用者帳戶具有下列屬性:

  • 它代表CRX的一名使用者。

  • 它包含使用者名稱和密碼。

  • 適用於該工作區。

  • 它不能有子使用者。 若要使用階層式存取許可權,您應該使用群組。

  • 您可以指定使用者帳戶的存取許可權。

    不過,為了簡化管理,Adobe建議(大多數情況下)您指派存取權給群組帳戶。 為每個個別使用者指派存取許可權會迅速變得難以管理(只有一或兩個執行個體存在時,某些系統使用者是例外)。

群組帳戶 — 群組帳戶是使用者和/或其他群組的集合。 當指派給群組的存取許可權變更自動套用至該群組的所有使用者時,這些可用來簡化管理。 使用者不必屬於任何群組,但通常屬於數個群組。

在CRX中,群組具有以下屬性:

  • 它代表一組具有共同存取許可權的使用者。 例如,作者或開發人員。
  • 適用於該工作區。
  • 它可以有成員;這些成員可以是個別使用者或其他群組。
  • 使用成員關係可以實現階層式分組。 您不能將群組直接放在存放庫中另一個群組的下方。
  • 您可以定義所有群組成員的存取許可權。

存取許可權 - CRX使用存取權來控制對存放庫特定區域的存取。

若要這麼做,請將許可權指派給允許或拒絕存取存放庫中的資源(節點或路徑)。 由於可以指派各種許可權,因此必須評估這些許可權,以判斷哪個組合適用於目前的請求。

CRX可讓您設定使用者和群組帳戶的存取權。 然後會將相同的基本評估原則套用至兩者。

存取許可權評估方式

注意

CRX實作 JSR-283定義的存取控制.

CRX存放庫的標準安裝設定為使用以資源為基礎的存取控制清單。 這是JSR-283存取控制的一個可能實作,也是Jackrabbit提供的實作之一。

主體和主體

CRX在評估存取權時使用兩個關鍵概念:

  • A 主體 是一個具有存取許可權的實體。 主要專案包括:

    • 使用者帳戶

    • 群組帳戶

      如果使用者帳戶屬於一或多個群組,它也會與每個群組主參與者相關聯。

  • A 主旨 用於代表要求的來源。

    它可用來合併適用於該請求的存取權。 這些擷取自:

    • 使用者主體

      您直接指派給使用者帳戶的許可權。

    • 與該使用者相關聯的所有群組主體

      所有許可權都會指派給使用者所屬的任何群組。

    然後會使用結果來允許或拒絕存取要求的資源。

編譯主體的存取權清單

在CRX中,主題取決於:

  • 使用者主體
  • 與該使用者相關聯的所有群組主體

適用於主體的存取權清單由以下內容建構:

  • 您直接指派給使用者帳戶的許可權
  • 加上指派給使用者所屬任何群組的所有權利

chlimage_1-56

注意
  • CRX在編譯清單時不會將任何使用者階層列入考量。
  • CRX只有在您將群組加入為另一個群組成員時,才會使用群組階層。 群組許可權沒有自動繼承。
  • 您指定群組的順序不會影響存取權。

解決請求和存取許可權

CRX處理要求時,會將來自主體的存取要求與存放庫節點上的存取控制清單做比較:

所以,如果Linda要求更新 /features 節點(在下列存放庫結構中):

chlimage_1-57

優先順序

CRX中的存取權評估如下:

  • 使用者主參與者一律優先於群組主參與者,不論:

    • 它們在存取控制清單中的順序
    • 其在節點階層中的位置
  • 對於指定的主體,指定節點上最多有一個「拒絕」和「允許」專案。 實作一律會清除多餘的專案,並確保允許和拒絕專案中未列出相同的許可權。

注意

此評估程式適用於標準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.
  • 第二個ACE aUser 為備援。

系統會根據多群組主體的順序,在階層內和單一存取控制清單中,評估來自多群組主體的存取權。

最佳做法

下表列出一些建議和最佳實務:

建議…… 原因...
使用群組

避免依個別使用者指派存取許可權。 原因有幾個:

  • 您擁有的使用者比群組多,因此群組可簡化結構。
  • 群組有助於提供所有帳戶的概觀。
  • 使用群組可簡化繼承作業。
  • 使用者來了又走。 群組是長期的。
正面

請一律使用Allow陳述式來指定群組主體的存取許可權(儘可能使用)。 避免使用Deny陳述式。

群組主體會以順序評估,包括階層內的和單一存取控制清單內的順序。

保持簡單

在設定新安裝時投入一些時間和思考,是很好的回報。

套用清晰的結構可簡化持續的維護和管理,確保您目前的同事和/或未來的後續人員都能輕鬆瞭解正在實作的內容。

測試 使用測試安裝來練習並確保您瞭解各種使用者和群組之間的關係。
預設使用者/群組 務必在安裝後立即更新「預設使用者與群組」,以防止任何安全性問題。

使用者管理

標準對話方塊用於 使用者管理.

您必須登入適當的工作區,才能從以下兩個位置存取對話方塊:

  • 使用者管理 CRX主要主控台上的連結
  • 安全性 CRX Explorer的功能表

chlimage_1-58

屬性

  • 使用者ID

    存取CRX時會使用帳戶的簡短名稱。

  • 主體名稱

    帳戶的全文名稱。

  • 密碼

    使用此帳戶存取CRX時需要。

  • ntlmhash

    自動指派給每個新帳戶,並在密碼變更時更新。

  • 您可以定義名稱、型別和值,以新增屬性。 按一下每個新屬性的「儲存」(綠色勾號符號)。

群組會籍

這會顯示帳戶所屬的所有群組。 「已繼承」欄表示由於另一個群組的成員資格而繼承的成員資格。

按一下GroupID (可用時)開啟 群組管理 代表該群組。

Impersonator

透過模擬功能,使用者可以代表其他使用者工作。

這表示使用者帳戶可以指定可以與其帳戶一起操作的其他帳戶(使用者或群組)。 換言之,如果允許使用者B模擬使用者A,則使用者B可以使用使用者A的完整帳戶詳細資訊(包括ID、名稱和存取許可權)來採取行動。

這可讓模擬者帳戶完成工作,就好像他們正使用自己所模擬的帳戶一樣;例如,在缺勤期間,或是在短期共用過多負載。

如果帳戶模擬其他帳戶,就很難檢視。 記錄檔不會保留事件上已發生模擬的資訊。 因此,如果使用者B模擬使用者A,所有事件看起來都像是使用者A個人執行的。

建立使用者帳戶

  1. 開啟 使用者管理 對話方塊。

  2. 按一下 建立使用者.

  3. 然後,您可以輸入「屬性」:

    • 使用者ID 用作帳戶名稱。
    • 密碼 登入時需要。
    • 主體名稱 以提供完整的文字名稱。
    • 中繼路徑 可用來形成樹狀結構。
  4. 按一下「儲存」(綠色勾號符號)。

  5. 此對話方塊會展開,以便您執行下列動作:

    1. 設定 屬性.
    2. 另請參閱 群組成員資格.
    3. 定義 模擬者.
注意

在同時擁有大量下列專案的安裝中註冊新使用者時,有時會導致效能損失:

  • 個使用者
  • 有許多成員的群組

更新使用者帳戶

  1. 使用 使用者管理 對話方塊中,開啟所有帳號的清單檢視。
  2. 瀏覽樹狀結構。
  3. 按一下所需的帳戶,以便您可以開啟帳戶進行編輯。
  4. 進行變更,然後按一下該專案的「儲存」(綠色勾號符號)。
  5. 按一下 關閉 完成,或 清單…… 以返回所有使用者帳戶的清單。

移除使用者帳戶

  1. 使用 使用者管理 對話方塊中,開啟所有帳號的清單檢視。
  2. 瀏覽樹狀結構。
  3. 選取所需的帳戶,然後按一下 移除使用者;會立即刪除帳戶。
注意

這會將這個主體的節點從存放庫中移除。

不會移除存取許可權專案。 這可確保歷史完整性。

定義屬性

您可以定義 屬性 對於新帳戶或現有帳戶:

  1. 開啟 使用者管理 適當帳戶的對話方塊。
  2. 定義 屬性 名稱。
  3. 選取 型別 下拉式清單中的。
  4. 定義 .
  5. 按一下新屬性的「儲存」(Save) (綠色的按一下符號)。

現有屬性可使用垃圾桶符號刪除。

除了密碼之外,屬性無法編輯,必須刪除並重新建立。

變更密碼

密碼 是一個特殊屬性,按一下 變更密碼 連結。

您也可以將密碼變更為您自己的使用者帳戶,從 安全性 CRX Explorer中的功能表。

定義模擬者

您可以為新帳戶或現有帳戶定義「模擬者」:

  1. 開啟 使用者管理 適當帳戶的對話方塊。

  2. 指定要允許模擬該帳戶的帳戶。

    您可以使用「瀏覽……」來選取現有帳戶。

  3. 按一下新屬性的「儲存」(綠色勾號符號)。

群組管理

標準對話方塊用於 群組管理.

您必須登入適當的工作區,才能從以下兩個位置存取對話方塊:

  • 群組管理 CRX主要主控台上的連結
  • 安全性 CRX Explorer的功能表

chlimage_1-8

屬性

  • 群組識別碼

    群組帳戶的簡短名稱。

  • 主體名稱

    群組帳戶的全文名稱。

  • 您可以定義名稱、型別和值,以新增屬性。 按一下每個新屬性的「儲存」(綠色勾號符號)。

  • 成員

    您可以將使用者或其他群組新增為此群組的成員。

群組會籍

這會顯示目前群組帳戶所屬的所有群組。 「已繼承」欄表示由於另一個群組的成員資格而繼承的成員資格。

按一下GroupID可開啟該群組的對話方塊。

成員

列出屬於目前群組成員的所有帳戶(使用者和/或群組)。

已繼承 欄表示因為另一個群組的成員資格而繼承的成員資格。

注意

當所有者、編輯者或檢視者角色指派給任何資產資料夾的使用者時,就會建立新群組。 群組名稱的格式為 mac-default-<foldername> 針對每個已定義角色的資料夾。

建立群組帳戶

  1. 開啟 群組管理 對話方塊。

  2. 按一下 建立群組.

  3. 然後,您可以輸入「屬性」:

    • 主體名稱 以提供完整的文字名稱。
    • 中繼路徑 可用來形成樹狀結構。
  4. 按一下「儲存」(綠色勾號符號)。

  5. 此對話方塊會展開,您可以:

    1. 設定 屬性.
    2. 另請參閱 群組成員資格.
    3. 管理 成員.

更新群組帳戶

  1. 使用 群組管理 對話方塊中,開啟所有帳號的清單檢視。
  2. 瀏覽樹狀結構。
  3. 按一下所需的帳戶,以便您可以開啟帳戶進行編輯。
  4. 進行變更,然後按一下該專案的「儲存」(綠色勾號符號)。
  5. 按一下 關閉 完成,或 清單…… 以返回所有群組帳戶的清單。

移除群組帳戶

  1. 使用 群組管理 對話方塊中,開啟所有帳號的清單檢視。
  2. 瀏覽樹狀結構。
  3. 選取所需的帳戶,然後按一下 移除群組;會立即刪除帳戶。
注意

這會將這個主體的節點從存放庫中移除。

不會移除存取許可權專案。 這可確保歷史完整性。

定義屬性

您可以為新帳戶或現有帳戶定義屬性:

  1. 開啟 群組管理 適當帳戶的對話方塊。
  2. 定義 屬性 名稱。
  3. 選取 型別 下拉式清單中的。
  4. 定義 .
  5. 按一下新屬性的「儲存」(綠色勾號符號)。

現有屬性可使用垃圾桶符號刪除。

成員

您可以將成員新增至目前群組:

  1. 開啟 群組管理 適當帳戶的對話方塊。

  2. 可以:

    • 輸入所需成員的名稱(使用者或群組帳戶)。
    • 或使用 瀏覽…… 搜尋並選取您要新增的主參與者(使用者或群組帳戶)。
  3. 按一下新屬性的「儲存」(綠色勾號符號)。

或刪除具有垃圾桶符號的現有成員。

存取許可權管理

使用 存取控制 標籤中,您可以定義存取控制原則並指派相關許可權CRXDE Lite。

例如, 目前路徑 在左窗格中選取所需的資源,右下窗格中的「存取控制」標籤為:

crx_accesscontrol_tab

原則會根據下列專案分類:

  • 適用的存取控制原則

    可套用這些原則。

    這些是可建立本機原則的原則。 當您選取並新增適用原則時,它就會變成本機原則。

  • 本機存取控制政策

    這些是您已套用的存取控制原則。 然後,您可以更新、排序或移除這些專案。

    本機原則會覆寫從父項繼承的任何原則。

  • 生效的存取控制政策

    這些存取控制原則現在適用於任何存取請求。 它們會顯示衍生自本機原則以及從父項繼承的任何彙總原則。

原則選擇

可以為以下專案選取原則:

  • 目前路徑

    如上述範例所示,在存放庫中選取資源。 此時會顯示此「目前路徑」的原則。

  • 存放庫

    選取存放庫層級存取控制。 例如,設定 jcr:namespaceManagement 許可權,只與存放庫相關,與節點無關。

  • 主體

    在存放庫中註冊的主體。

    您可以輸入 主體 命名或按一下欄位右側的圖示,以開啟 選取主體 對話方塊。

    這可讓您 搜尋 針對 使用者群組. 從產生的清單中選取所需的主參與者,然後按一下 確定 將值帶回上一個對話方塊。

crx_accesscontrol_selectprincipal

注意

若要簡化管理Adobe,建議您將存取權指派給群組帳戶,而非個別使用者帳戶。

管理幾個群組比管理許多使用者帳戶更容易。

權限

新增存取控制專案時,可以選取下列許可權(請參閱 安全性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 新增和移除mixin節點型別,並變更節點的主要節點型別。 這也包括對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 註冊新的許可權。

註冊新許可權

您也可以註冊新許可權:

  1. 從工具列中選取 工具,然後 許可權 以顯示目前登入的許可權。

    ac_privileges

  2. 使用 登入許可權 圖示(+)以定義許可權:

    ac_privilegeregister

  3. 按一下 確定 以儲存。 此許可權現在可供選取。

新增存取控制專案

  1. 選取您的資源並開啟 存取控制 標籤。

  2. 若要新增 本機存取控制原則,按一下 + 圖示右側 適用的存取控制原則 清單:

    crx_accesscontrol_applicable

  3. 新專案會顯示在下方 本機存取控制原則:

    crx_accesscontrol_newlocal

  4. 按一下 + 圖示來新增專案:

    crx_accesscontrol_addentry

    注意

    目前需要因應措施,才能指定空字串。

    為此,您必須使用 "".

  5. 定義您的存取控制原則並按一下 確定 以儲存。 您的新原則為:

    • 列在 本機存取控制原則
    • 變更會反映在 有效的存取控制原則.

CRX會驗證您的選擇;對於指定的主體,指定節點上最多(一個)存在一個拒絕和一個允許專案。 實作一律會清除多餘的專案,並確保允許和拒絕專案中未列出相同的許可權。

排序本機存取控制原則

清單中的順序表示套用原則的順序。

  1. 在表中 本機存取控制原則,選取所需的專案,並將其拖曳至表格中的新位置。

    crx_accesscontrol_reorder

  2. 變更會顯示在兩個表格中 本機有效的存取控制原則.

移除存取控制原則

  1. 在表中 本機存取控制原則,按一下專案右側的紅色圖示(-)。
  2. 專案會從兩個表格中移除 本機有效的存取控制原則.

測試存取控制原則

  1. 從CRXDE Lite工具列中,選取 工具,然後 測試存取控制…….

  2. 新的對話方塊會在右上角窗格中開啟。 選取 路徑 和/或 主體 要測試的物件。

  3. 按一下 測試 若要檢視選取範圍的結果:

    crx_accesscontrol_test

本頁內容