2

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

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

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

如何通过脚本自动创建/修改节点权限 - 并以仅允许管理员应用权限更改的方式执行此操作?

4

3 回答 3

3

此工具可让您以集中方式管理权限,也可以在部署时自动安装: https ://github.com/Netcentric/accesscontroltool

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

于 2015-09-16T16:54:22.520 回答
2

我找到了一种我以前没有考虑过的替代方法:使用 Day CQ ACL 设置服务。它在http://dev.day.com/docs/en/cq/5-5/developing/security_model_changes.html中提到。

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

(“允许”|“拒绝”)“;” (特权|“继承”)“;” 主要的 ”;” 小路

  1. 第一部分选择“允许”或“拒绝”。
  2. 接下来输入以下权限之一或将其设置为从祖先那里继承权限。
  3. 然后输入单个用户/组。
  4. 最后输入一个应用权限的路径。

当您重新启动 CQ 时,使用它将替换存储库中的权限集。这些可以使用此处此处概述的过程编写脚本。

权限可以是:
jcr:read
rep:write
jcr:all
crx:replicate
imp: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:write
rep:privilegeManagement

于 2013-06-03T15:56:23.513 回答
0

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

您是否有理由在激活文件夹时不只是复制权限?在被复制的安全文件夹下应该有一个 rep:policy 节点。

于 2013-05-30T18:13:33.307 回答