[
https://issues.apache.org/jira/browse/OAK-3627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15008527#comment-15008527
]
angela commented on OAK-3627:
-----------------------------
[~kwin], the Oak way of defining access control entries for non-existing nodes
is by the means of restrictions which reflect the following part of JSR 283
(section 16.3.5 Scope of a Policy):
{quote}
When an access control policy takes effect, it may affect the accessibility
characteristics not only of the node to which it is bound but also of nodes
elsewhere in the workspace.
[...]
One common case is a policy that affects both its bound node and the subgraph
below that node. However, any such deepness attribute is internal to the policy
and, like any other internal characteristic of a policy, opaque to the JCR API
except insofar as it is part of the human-readable name and description. Note
also that, strictly speaking, a policy is not required to affect even its bound
node, though such an implementation would be uncommon.
{quote}
as well as section 16.6.2 Permissions
{quote}
In repositories that do support access control management, the permissions
encompass the restrictions imposed by privileges, but also include any
additional policy-internal refinements with effects too fine-grained to be
exposed through privilege discovery. A common case may be to provide
finer-grained access restrictions to individual properties or child nodes of
the node to which the policy applies.
{quote}
for example: if you wish to grant a given principal access to the tree defined
by a non-existing node at _/a/b/c_, you could create an access control entry
for that principal at _/a_ and using {{rep:glob}} with a value {{/b/c}} to
limit the effect of this ACE to _/a/b/c_ (and not to _/a_ as it would be the
case without additionally narrowing down the effect).
as an additional node: the reason for the rather experimental secondary access
control model in Jackrabbit 2.x was the wish to have a access control
management which closer reflects the way how permissions are evaluated. it
turned out however that using this for access control management poses
considerable problems when it comes to properly securing it (see version
storage for a very similar issue). that's why we ended up merging the 2
approaches in the default Oak authorization implementation and making the
per-principal view what it actually was intended for: the system internal view
used for the evaluation which essentially is hidden from regular sessions (see
doc for exceptions).
so, what ever we come up with in the future to allow for creation of policies
for non-existing nodes which effectively means writing directly to the
permission store, requires careful evaluation and considerations of the attack
vectors and vulnerabilities that may be associated with it.
> Allow to set ACLs on not-yet existing nodes
> -------------------------------------------
>
> Key: OAK-3627
> URL: https://issues.apache.org/jira/browse/OAK-3627
> Project: Jackrabbit Oak
> Issue Type: New Feature
> Components: core
> Reporter: Konrad Windszus
>
> With Jackrabbit 2 it was possible to set ACLs for nodes which do not exist
> yet through Principal-based ACLs
> (http://wiki.apache.org/jackrabbit/AccessControl#Principal-based_ACLs).
> With Oak this is no longer possible as the principal based ACEs are not
> supported
> (https://jackrabbit.apache.org/oak/docs/security/accesscontrol/differences.html).
> Since there are valid use cases for setting ACEs prior to creating the
> according nodes it would be good, if Oak would support this as well.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)