对于我工作的CQ5环境,我们有一个发布服务器群。这些服务器上的某些内容受到限制,因此只有属于某些组的用户才能看到该内容。我想编写要保护的文件夹(节点)的权限设置脚本,这样我就不必使用Content Explorer的访问控制编辑器手动重复应用安全性的步骤(This Adobe documentation已经通过访问控制编辑器手动执行此操作的说明。方案是有时会创建新文件夹来保存安全页面,我们希望在将任何内容激活到这些文件夹之前对文件夹应用权限。
由于环境有多个发布者,因此打开Content Explorer并为每个发布者设置权限是重复的,手动的,并且容易出错的工作。我想能够实现自动化,这样我就可以通过脚本推出对所有服务器的权限 - 可能通过curl命令或其他可以自动化的机制(可能是一个包?)。
我发现Sling jackrabbit-accessmanager bundle似乎有助于实现自动化,但似乎它打开了一个安全漏洞。如果我把这个捆绑包放在我的发布者身上,似乎我会提供一个REST接口,让任何人都可以修改权限并授予对应该受到保护的文件夹/节点的访问权限,或者在应该没有的节点上添加安全限制。
如何通过脚本自动创建/修改节点权限 - 并且这样做只允许管理员应用权限更改?
答案 0 :(得分:3)
此工具允许您以集中方式管理权限,也可以在部署时自动安装: https://github.com/Netcentric/accesscontroltool
关于应用于新文件夹的权限,解决方案是在其父文件夹上正确设置权限。 CQ / AEM将自动对所有孩子应用相同的权限,除非另一个规则破坏继承。
答案 1 :(得分:2)
我找到了一个我以前没有考虑过的替代方案:使用Day CQ ACL设置服务。它在http://dev.day.com/docs/en/cq/5-5/developing/security_model_changes.html提到。
AclSetupService允许用户为单个路径或给定用户/组添加权限。这将应用于CQ的每次重启以保证CQ内的某个许可状态。例如,“允许;继承;每个人; /”阻止每个人访问CQ(即它强制所有用户首先登录)。如AclSetupService的描述中所述,每个条目都需要以下模式:
(“允许”|“拒绝”)“;” (privileges |“inherit”)“;”校长“;”路径
使用它将在重新启动CQ时替换存储库中的权限集。这些可以使用概述here和here的流程编写脚本。
特权可以是:
JCR:读
代表:写
JCR:所有
CRX:复制
小鬼:的setComplete
JCR:addChildNodes
JCR:lifecycleManagement
JCR:lockManagement
JCR:modifyAccessControl
JCR:modifyProperties
JCR:namespaceManagement
JCR:nodeTypeDefinitionManagement
JCR:nodeTypeManagement
JCR:readAccessControl
JCR:removeChildNodes
JCR:
的removeNode
JCR:retentionManagement
JCR:versionManagement
JCR:workspaceManagement
JCR:写
rep:privilegeManagement
答案 2 :(得分:0)
如果您想在发布实例上使用Sling jackrabbit-accessmanager包,则可以。您可能希望确保位于发布实例前面的调度程序不允许权限请求(/.modifyAce。,。deleteEce。等),并且只能从网络内部直接访问发布实例。标准做法是拒绝调度员中的所有请求并指定允许的内容。
是否有理由您不仅仅在激活文件夹时复制权限?
应该在安全文件夹下面有一个rep:policy节点。