Author: angela
Date: Tue Jun 14 09:30:50 2016
New Revision: 1748366

URL: http://svn.apache.org/viewvc?rev=1748366&view=rev
Log:
minor improvement: add index-def-management to the call-privilege mapping and 
separate transient, workspace and repository operations

Modified:
    
jackrabbit/oak/trunk/oak-doc/src/site/markdown/security/privilege/mappingtoprivileges.md

Modified: 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/security/privilege/mappingtoprivileges.md
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/security/privilege/mappingtoprivileges.md?rev=1748366&r1=1748365&r2=1748366&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/security/privilege/mappingtoprivileges.md
 (original)
+++ 
jackrabbit/oak/trunk/oak-doc/src/site/markdown/security/privilege/mappingtoprivileges.md
 Tue Jun 14 09:30:50 2016
@@ -19,7 +19,9 @@
 The following table allows to identify which API calls require which type of
 privilege(s)
 
-#### Read
+#### Transient Operations
+
+##### Read
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -58,7 +60,7 @@ privilege(s)
 | `Session.exportSystemView`                   | `jcr:read`                    
 |
 | `Session.exportDocumentView`                 | `jcr:read`                    
 |
 
-#### Writing Properties
+##### Writing Properties
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -69,7 +71,7 @@ privilege(s)
 | `Node.setProperty(String, null)`             | `rep:removeProperties`        
 |
 | `JackrabbitSession.removeItem` (item is a property) | `rep:removeProperties` 
 |
 
-#### Writing Nodes
+##### Writing Nodes
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -82,52 +84,33 @@ privilege(s)
 | `Node.removeMixin`                           | `jcr:nodeTypeManagement`      
 |
 | `Node.orderBefore`                           | `jcr:addChildNodes` and 
`jcr:removeChildNodes` (on parent) |
 
-#### Move, Copy and Import
+##### Writing Index Definition
 
-| API Call                                     | Privilege(s)                  
 |
-|----------------------------------------------|--------------------------------|
-| `Session.move`                               | `jcr:removeChildNodes` 
(source parent) and `jcr:addChildNodes` (target parent) |
-| `Workspace.move`                             | `jcr:removeChildNodes` 
(source parent) and `jcr:addChildNodes` (target parent) |
-| `Workspace.copy`                             | same privileges as if items 
would be created using regular API calls |
-| `Session.importXml`                          | same privileges as if items 
would be created using regular API calls |
-| `Workspace.importXml`                        | same privileges as if items 
would be created using regular API calls |
+While covered by regular JCR API write operations the target items require a
+dedicated privilege despite the fact that the item definitions are not 
protected
+(see Oak JIRA for corresponding discussions).
 
-#### Version Management
+All items located within a path that contains `oak:index` will be considered 
part
+of the special index definition.
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
-| `VersionManager.isCheckedOut`                | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:isCheckedOut` |
-| `VersionManager.getVersionHistory`           | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:versionHistory` |
-| `VersionManager.getBaseVersion`              | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:baseVersion` |
-| `VersionManager.checkin`                     | `jcr:versionManagement` on 
versionable node |
-| `VersionManager.checkout`                    | `jcr:versionManagement` on 
versionable node |
-| `VersionManager.checkpoint`                  | `jcr:versionManagement` on 
versionable node |
-| `VersionManager.restore`                     | _TODO_                        
 |
-| `VersionManager.restoreByLabel`              | _TODO_                        
 |
-| `VersionManager.merge`                       | _TODO_                        
 |
-| `VersionManager.cancelMerge`                 | _TODO_                        
 |
-| `VersionManager.doneMerge`                   | _TODO_                        
 |
-| `VersionManager.createConfiguration`         | _TODO_                        
 |
-| `VersionManager.setActivity`                 | _TODO_                        
 |
-| `VersionManager.createActivity`              | _TODO_                        
 |
-| `VersionManager.removeActivity`              | _TODO_                        
 |
-| `VersionHistory.*` (read)                    | `rep:readNodes` on 
versionable node |
-| `VersionHistory.removeVersion`               | `jcr:versionManagement` on 
versionable node |
-| `Version.*` (read)                           | `rep:readNodes` on 
versionable node |
-
-NOTE: since Oak 1.0 read/write access to version storage is defined by 
accessibility of the versionable node and _not_ to the version store items.
+| `Node.addNode(String, String)`               | 
`rep:indexDefinitionManagement`|
+| `Node.addNode(String)`                       | 
`rep:indexDefinitionManagement`|
+| `Node.orderBefore`                           | 
`rep:indexDefinitionManagement`|
+| `Node.setProperty`                           | 
`rep:indexDefinitionManagement`|
+| `Property.setValue`                          | 
`rep:indexDefinitionManagement`|
+| `Item.remove` (i.e. Node and Property)       | 
`rep:indexDefinitionManagement`|
+| `JackrabbitSession.removeItem`               | 
`rep:indexDefinitionManagement`|
 
-#### Lock Management
+##### Move and Import
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
-| `LockManager.getLock` = `Node.getLock`       | `jcr:read`                    
 |
-| `LockManager.isLocked` = `Node.isLocked`     | `jcr:read`                    
 |
-| `LockManager.holdsLock` = `Node.holdsLock`   | `jcr:read`                    
 |
-| `LockManager.lock` = `Node.lock`             | `jcr:lockManagement`          
 |
-| `LockManager.unlock` = `Node.unlock`         | `jcr:lockManagement`          
 |
+| `Session.move`                               | `jcr:removeChildNodes` 
(source parent) and `jcr:addChildNodes` (target parent) |
+| `Session.importXml`                          | same privileges as if items 
would be created using regular API calls |
 
-#### Access Control Management
+##### Access Control Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -138,7 +121,7 @@ NOTE: since Oak 1.0 read/write access to
 | `AccessControlManager.removePolicy`          | `jcr:modifyAccessControl`     
 |
 | `PrivilegeManager.registerPrivilege`         | `rep:privilegeManagent` at 
'null' path |
 
-#### User Management
+##### User Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -176,13 +159,13 @@ NOTE: since Oak 1.0 read/write access to
 | `Authorizable.setProperty` (with relPath     | `rep:addProperties` and/or 
`rep:alterProperties`, `jcr:addChildNodes` |
 | `Authorizable.removeProperty`                | `rep:removeProperties`        
 |
 
-#### LifeCycle Management
+##### LifeCycle Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
 | `Node.followLifecycleTransition`             | `jcr:lifecycleManagement`     
 |
 
-#### Retention Management
+##### Retention Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -193,7 +176,56 @@ NOTE: since Oak 1.0 read/write access to
 | `RetentionManager.setRetentionPolicy`        | `jcr:retentionManagement`     
 |
 | `RetentionManager.removeRetentionPolicy`     | `jcr:retentionManagement`     
 |
 
-#### Namespace Management
+#### Workspace Operations
+
+##### Move, Copy and Import
+
+| API Call                                     | Privilege(s)                  
 |
+|----------------------------------------------|--------------------------------|
+| `Workspace.move`                             | `jcr:removeChildNodes` 
(source parent) and `jcr:addChildNodes` (target parent) |
+| `Workspace.copy`                             | same privileges as if items 
would be created using regular API calls |
+| `Workspace.importXml`                        | same privileges as if items 
would be created using regular API calls |
+
+##### Version Management
+
+| API Call                                     | Privilege(s)                  
 |
+|----------------------------------------------|--------------------------------|
+| `VersionManager.isCheckedOut`                | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:isCheckedOut` |
+| `VersionManager.getVersionHistory`           | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:versionHistory` |
+| `VersionManager.getBaseVersion`              | `rep:readNodes` on 
versionable node and `rep:readProperties` on its property `jcr:baseVersion` |
+| `VersionManager.checkin`                     | `jcr:versionManagement` on 
versionable node |
+| `VersionManager.checkout`                    | `jcr:versionManagement` on 
versionable node |
+| `VersionManager.checkpoint`                  | `jcr:versionManagement` on 
versionable node |
+| `VersionManager.restore`                     | _TODO_                        
 |
+| `VersionManager.restoreByLabel`              | _TODO_                        
 |
+| `VersionManager.merge`                       | _TODO_                        
 |
+| `VersionManager.cancelMerge`                 | _TODO_                        
 |
+| `VersionManager.doneMerge`                   | _TODO_                        
 |
+| `VersionManager.createConfiguration`         | _TODO_                        
 |
+| `VersionManager.setActivity`                 | _TODO_                        
 |
+| `VersionManager.createActivity`              | _TODO_                        
 |
+| `VersionManager.removeActivity`              | _TODO_                        
 |
+| `VersionHistory.*` (read)                    | `rep:readNodes` on 
versionable node |
+| `VersionHistory.removeVersion`               | `jcr:versionManagement` on 
versionable node |
+| `Version.*` (read)                           | `rep:readNodes` on 
versionable node |
+
+NOTE: since Oak 1.0 read/write access to version storage is defined by 
accessibility of the versionable node and _not_ to the version store items.
+
+##### Lock Management
+
+| API Call                                     | Privilege(s)                  
 |
+|----------------------------------------------|--------------------------------|
+| `LockManager.getLock` = `Node.getLock`       | `jcr:read`                    
 |
+| `LockManager.isLocked` = `Node.isLocked`     | `jcr:read`                    
 |
+| `LockManager.holdsLock` = `Node.holdsLock`   | `jcr:read`                    
 |
+| `LockManager.lock` = `Node.lock`             | `jcr:lockManagement`          
 |
+| `LockManager.unlock` = `Node.unlock`         | `jcr:lockManagement`          
 |
+
+#### Repository Operations 
+
+Note: privileges for repository operations need to be granted|denied on the 
_null_ path.
+
+##### Namespace Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -204,7 +236,7 @@ NOTE: since Oak 1.0 read/write access to
 | `NamespaceRegistry.registerNamespace`        | `jcr:namespaceManagement`     
 |
 | `NamespaceRegistry.unregisterNamespace`      | `jcr:namespaceManagement`     
 |
 
-#### NodeType Management
+##### NodeType Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -221,7 +253,7 @@ NOTE: since Oak 1.0 read/write access to
 | `NodeTypeManager.unregisterNodeType`         | 
`jcr:nodeTypeDefinitionManagement` |
 | `NodeTypeManager.unregisterNodeTypes`        | 
`jcr:nodeTypeDefinitionManagement` |
 
-#### Privilege Management
+##### Privilege Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|
@@ -229,7 +261,7 @@ NOTE: since Oak 1.0 read/write access to
 | `PrivilegeManager.getPrivilege`              | `jcr:read`                    
 |
 | `PrivilegeManager.registerPrivilege`         | `rep:privilegeManagement`     
 |
 
-#### Workspace Management
+##### Workspace Management
 
 | API Call                                     | Privilege(s)                  
 |
 
|----------------------------------------------|--------------------------------|


Reply via email to