如何自动应用JCR节点的权限



对于我工作的CQ5环境,我们有一个发布者服务器群。这些服务器上的一些内容是受限制的,因此只有属于特定组的用户才能看到这些内容。我想为要保护的文件夹(节点)的权限设置编写脚本,这样我就不必使用Content Explorer的访问控制编辑器手动重复应用安全性的步骤(此Adobe文档有通过访问控制编辑器手动执行的说明)。该场景是,有时要创建新文件夹来保存安全页面,并且我们希望在激活这些文件夹中的任何内容之前对这些文件夹应用权限。

由于环境中有多个发布者,因此打开Content Explorer并设置每个发布者的权限是一项重复、手动且容易出错的工作。我希望能够自动化这一点,这样我就可以通过脚本——也许是通过curl命令或其他一些可以自动化的机制(也许是一个包?)向所有服务器推出权限。

我找到了Sling jackrabbit-accessmanager包,它似乎可以促进这一点的自动化,但它似乎打开了一个安全漏洞。如果我把这个包放在我的发布者上,似乎我将提供一个REST接口,让任何人修改权限并授予对应该受到保护的文件夹/节点的访问权限,或者在应该没有安全限制的节点上添加安全限制。

如何通过脚本自动创建/修改节点权限——并且以一种只允许管理员应用权限更改的方式来实现?

这个工具可以让你集中管理权限,它们也可以在部署时自动安装:https://github.com/Netcentric/accesscontroltool

对于应用于新文件夹的权限,解决方案是在其父文件夹上正确设置权限。CQ/AEM将自动对所有子节点应用相同的权限,除非另一个规则破坏了继承。

我发现了一个我以前没有考虑过的选择:使用Day CQ ACL设置服务。

AclSetupService允许为单个路径或给定用户/组添加权限。这将在每次重新启动CQ时应用,以保证CQ内的某个权限状态。例如,"allow;inherit;everyone;/"阻止所有人访问CQ(即强制所有用户先登录)。正如在AclSetupService的描述中所指出的,每个条目需要以下模式:

("allow" | "deny")";"(privileges | "inherit")";" principal ";" path

  1. 为第一部分选择"允许"或"拒绝"。
  2. 下一步输入下面的一个特权或将其设置为从祖先继承权限。
  3. 然后输入单个用户/组
  4. 最后输入一个单独的路径来应用权限

使用此选项将在重新启动CQ时替换存储库中的权限集。可以使用这里和这里列出的流程编写脚本。

权限可以是:
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:写
推销员:privilegeManagement

如果您想在发布实例上使用Sling jackrabbit-accessmanager包,这是可能的。您需要确保位于发布实例前面的调度程序不允许权限请求(/. modifyace)。(. deleteace .等),并且发布实例只能从网络内部直接访问。拒绝调度程序中的所有请求并指定允许的请求是标准做法。

当文件夹被激活时,是否有原因不复制权限?在被复制的安全文件夹下面应该有一个rep:policy节点

相关内容

最新更新