启用对CRX存储库的访问涉及几个主题:
基本元素有:
User AccountsCRX根据用户帐户中的详细信息,通过识别和验证用户(由该人或其他应用程序)来验证访问权限。
在CRX中,每个用户帐户都是工作区中的节点。 CRX用户帐户具有以下属性:
它代表CRX的一个用户。
它包含用户名和密码。
适用于该工作区。
它不能有子用户。 对于分层访问权限,您应使用组。
您可以指定用户帐户的访问权限。
但是,为简化管理,我们建议(在大多数情况下)您为组帐户分配访问权限。 为每个用户分配访问权限会很快变得非常难以管理(仅存在一两个实例时,某些系统用户除外)。
组帐 户组帐户是用户和/或其他组的集合。当分配给组的访问权限发生更改时,这些更改会自动应用于该组中的所有用户,这些更改用于简化管理。 用户不必属于任何组,但通常属于多个组。
在CRX中,组具有以下属性:
它表示一组具有共同访问权限的用户。 例如,作者或开发人员。
适用于该工作区。
它可以有成员;这些组可以是单个用户或其他用户组。
可通过成员关系实现分层分组。 不能将组直接放在存储库中的另一个组下。
您可以为所有用户组成员定义访问权限。
访 问权限CRX使用访问权限控制对存储库特定区域的访问。
为此,请为存储库中的资源(节点或路径)分配权限,以允许或拒绝访问。 由于可以分配各种权限,因此必须评估这些权限以确定哪个组合适用于当前请求。
CRX允许您配置用户帐户和用户组帐户的访问权限。 评估的基本原则也适用于这两种情况。
CRX实现由JSR-283](https://docs.adobe.com/content/docs/en/spec/jcr/2.0/16_Access_Control_Management.html)定义的[访问控制。
CRX存储库的标准安装被配置为使用基于资源的访问控制列表。 这是JSR-283访问控制的一个可能实现,以及Jackrabbit提供的一个实现。
CRX在评估访问权限时使用两个关键概念:
principal是具有访问权限的实体。 承担者包括:
用户帐户。
组帐户
如果用户帐户属于一个或多个用户组,则该用户帐户也与这些用户组主体中的每个用户关联。
使用主题表示请求源。
它用于合并适用于该请求的访问权限。 这些选项取自:
用户主体
直接分配给用户帐户的权限。
与该用户关联的所有用户组主体
分配给用户所属的任何组的所有权限。
然后,结果用于允许或拒绝对所请求资源的访问。
在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是冗余的。
根据多个组主体的顺序(在层次结构中和在单个访问控制列表中)评估多个组主体的访问权限。
下表列表了一些建议和最佳做法:
推荐... | 原因... |
使用组 | 避免按用户分配访问权限。 原因有几:
|
积极 | 始终使用“允许”语句指定组主体的访问权限(尽可能)。 避免使用Deny语句。 组主体按顺序评估,在层次中和在单个访问控制列表中按顺序评估。 |
保持简单 | 在配置新安装时投入一些时间和思考将得到很好的回报。 应用清晰的结构将简化持续的维护和管理,确保您的当前同事和/或未来继任者都能轻松了解正在实施的内容。 |
测试 | 使用测试安装来练习并确保您了解不同用户和组之间的关系。 |
默认用户/用户组 | 始终在安装后立即更新默认用户和用户组,以帮助防止出现任何安全问题。 |
标准对话框用于用户管理。
您必须登录到相应的工作区,然后您可以从以下两者访问对话框:
属性
用
户IDS帐户的短名称,在访问CRX时使用。
主体
名称帐户的全文名称。
Password
使用此帐户访问CRX时需要。
ntlmhash
为每个新帐户自动分配并在密码更改时更新。
您可以通过定义名称、类型和值添加新属性。 单击“保存”(绿色勾号),作为每个新属性。
组成 员资格此组件显示帐户所属的所有组。“继承”列指示因其他用户组的成员资格而继承的成员资格。
单击GroupID(如果可用)将打开该组的组管理。
模 拟者借助模拟功能,用户可以代表其他用户工作。
这意味着用户帐户可以指定其他帐户(用户或组),这些帐户可以与其帐户一起操作。 换言之,如果允许用户-B模拟用户-A,则用户-B可以使用用户-A的完整帐户详细信息(包括ID、名称和访问权限)执行操作。
这允许模拟者帐户完成任务,就像他们使用的是模拟的帐户一样;例如,在缺勤期间或共享过多负荷的短期情况。
如果某个帐户假冒他人,则很难查看。 日志文件不包含有关在事件上发生模拟的事实的信息。 因此,如果用户- B是模拟用户- A所有事件看起来就像是由用户- A个人执行。
打开用户管理对话框。
单击创建用户。
然后,您可以输入属性:
单击“保存”(绿色勾号)。
对话框将展开,这样您可以:
在安装中注册新用户时,有时会出现性能损失,这些用户同时具有以下两种功能:
使用用户管理对话框打开所有帐户的列表视图。
在树结构中导航。
单击所需的帐户以打开进行编辑。
进行更改,然后单击该条目的“保存”(绿色勾号)。
单击关闭以完成,或单击列表…返回所有用户帐户的列表。
使用用户管理对话框打开所有帐户的列表视图。
在树结构中导航。
选择所需的帐户,然后单击删除用户;帐户将立即删除。
此操作将从存储库中删除此主体的节点。
访问权限条目不会被删除。 这保证了历史的完整性。
可以为新帐户或现有帐户定义属性:
可以使用垃圾桶符号删除现有属性。
除密码外,属性无法编辑,必须删除并重新创建。
Password是一个特殊属性,可通过单击Change Password链接来更改该属性。
您还可以从CRX Explorer的Security菜单将密码更改为您自己的用户帐户。
您可以为新帐户或现有帐户定义模拟器:
打开相应帐户的用户管理对话框。
指定允许模拟该帐户的帐户。
您可以使用浏览……来选择现有帐户。
单击“保存”(绿色勾号)作为新属性。
标准对话框用于组管理。
您必须登录到相应的工作区,然后您可以从以下两者访问对话框:
属性
组
IDS组帐户的短名称。
主体
名称组帐户的全文名称。
您可以通过定义名称、类型和值添加新属性。 单击“保存”(绿色勾号),作为每个新属性。
成
员您可以添加用户或其他用户组作为此组的成员。
组成 员资格此组件显示当前组帐户所属的所有组。“继承”列指示因其他用户组的成员资格而继承的成员资格。
单击GroupID将打开该组的对话框。
成 员列出属于当前组的所有帐户(用户和/或组)。
Inherited列指示由于另一个组的成员关系而继承的成员关系。
当向任何资产文件夹上的用户分配了“所有者”、“编辑者”或“查看者”角色时,系统会创建一个新组。 组名称的格式为mac-default-<foldername>
,适用于定义角色的每个文件夹。
打开组管理对话框。
单击创建组。
然后,您可以输入属性:
单击“保存”(绿色勾号)。
对话框将展开,这样您可以:
使用组管理对话框打开所有帐户的列表视图。
在树结构中导航。
单击所需的帐户以打开进行编辑。
进行更改,然后单击该条目的“保存”(绿色勾号)。
单击关闭以完成,或单击列表…返回所有组帐户的列表。
使用组管理对话框打开所有帐户的列表视图。
在树结构中导航。
选择所需的帐户,然后单击删除组;帐户将立即删除。
此操作将从存储库中删除此主体的节点。
访问权限条目不会被删除。 这保证了历史的完整性。
您可以为新帐户或现有帐户定义属性:
可以使用垃圾桶符号删除现有属性。
您可以向当前组添加成员:
打开相应帐户的组管理对话框。
可以任选其一:
单击“保存”(绿色勾号)作为新属性。
或删除具有垃圾桶符号的现有成员。
使用CRXDE Lite的访问控制选项卡,您可以定义访问控制策略并分配相关权限。
例如,对于当前路径,在左窗格中选择所需的资源,在右下窗格中选择访问控制选项卡:
这些策略按以下方式进行分类:
适用的访问控制
策略可以应用这些策略。
这些策略可用于创建本地策略。 选择并添加适用的策略后,该策略将变为本地策略。
本地访问控制
策略这些是您已应用的访问控制策略。然后,您可以更新、订购或删除它们。
本地策略将覆盖从父级继承的所有策略。
有效的访问控制
策略这些访问控制策略现在适用于任何访问请求。它们显示从本地策略和从父级继承的任何策略派生的聚合策略。
可以为以下对象选择策略:
当前
路径如上例中,请在存储库中选择一个资源。将显示此“当前路径”的策略。
存储
库选择存储库级别访问控制。例如,在
jcr:namespaceManagement
权限,仅与存储库相关,而与节点无关。
Principal
在存储库中注册的主体。
您可以键入Principal名称,或单击字段右侧的图标以打开选择主体对话框。
这允许您搜索用户或组。从生成的列表中选择所需的主体,然后单击确定将值带回上一个对话框。
为简化管理,我们建议您为组帐户而非单个用户帐户分配访问权限。
管理几个组比管理许多用户帐户更容易。
在添加访问控制项时,可以选择以下权限(有关完整详细信息,请参阅安全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导入方法的任何调用,其中显式指定了新节点的混音或主类型。 |
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 |
注册新权限。 |
您还可以注册新权限:
在工具栏中,选择工具,然后选择权限以显示当前注册的权限。
使用注册权限图标(+)打开对话框并定义新权限:
单击确定进行保存。该权限现在可供选择。
选择您的资源并打开访问控制选项卡。
要添加新的本地访问控制策略,请单击适用访问控制策略列表右侧的+图标:
新条目显示在本地访问控制策略:下
单击+图标以添加新条目:
当前需要一种解决方法来指定空字符串。
为此,您需要使用“”。
定义访问控制策略,然后单击确定进行保存。 您的新政策将:
CRX将验证您的选择;对于给定的主体,在给定节点上存在1个拒绝和1个允许进入。 实现始终清除冗余条目,并确保允许和拒绝条目中未列出相同的权限。
列表中的顺序指示应用策略的顺序。
在本地访问控制策略的表中,选择所需的条目并将其拖动到表中的新位置。
Local和有效访问控制策略的表中将显示这些更改。
在本地访问控制策略的表中,单击条目右侧的红色图标(-)。
将从Local和有效访问控制策略的表中删除该条目。
从CRXDE Lite工具栏中选择工具,然后选择测试访问控制…。
将在右上窗格中打开新对话框。 选择要测试的路径和/或主体。
单击测试查看选择结果: