Changes for page How to start an XWiki access-rights review
Last modified by Agnease on 2026/06/08 18:37
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -11,10 +11,10 @@ 11 11 </div> 12 12 </div> 13 13 14 - <h1 id="hero-title"> Afirst-passXWiki access-rightsaudit beforechanging permissions</h1>14 + <h1 id="hero-title">How to start an XWiki access-rights review</h1> 15 15 16 16 <p class="resource-summary"> 17 - A practical wayto identify local rights, old groups, sensitive permissions and unclear access exceptions17 + A practical first step for identifying local rights, old groups, sensitive permissions and unclear access exceptions 18 18 before they become a security or maintenance problem. 19 19 </p> 20 20 </div> ... ... @@ -27,14 +27,12 @@ 27 27 <aside class="resource-sidebar" aria-label="Page summary"> 28 28 <h4>In this guide</h4> 29 29 <ul> 30 - <li><a href="#starting-point">Where to start</a></li> 31 - <li><a href="#first-pass-audit">First-pass audit</a></li> 32 - <li><a href="#access-model">Access areas</a></li> 33 - <li><a href="#review-groups">Groups and users</a></li> 34 - <li><a href="#find-local-rights">Local rights snippet</a></li> 35 - <li><a href="#interpret-results">How to interpret results</a></li> 36 - <li><a href="#common-findings">Common findings</a></li> 37 - <li><a href="#document-findings">Review register</a></li> 30 + <li><a href="#why-review">Why review access rights</a></li> 31 + <li><a href="#access-model">Start with the model</a></li> 32 + <li><a href="#review-groups">Review groups</a></li> 33 + <li><a href="#find-local-rights">Find local rights</a></li> 34 + <li><a href="#sensitive-rights">Sensitive rights</a></li> 35 + <li><a href="#document-findings">Document findings</a></li> 38 38 <li><a href="#review-checklist">Checklist</a></li> 39 39 <li><a href="#access-review-faq">FAQ</a></li> 40 40 </ul> ... ... @@ -43,11 +43,6 @@ 43 43 <article class="resource-content"> 44 44 45 45 <p> 46 - When I review an existing XWiki instance, I do not start by changing permissions. I first try to understand 47 - where access rules have accumulated over time. 48 - </p> 49 - 50 - <p> 51 51 Many XWiki permission issues are not visible from the homepage. Users can log in, pages can be edited, 52 52 search can work correctly, and the wiki may still contain access rules that nobody fully understands anymore. 53 53 </p> ... ... @@ -59,63 +59,53 @@ 59 59 60 60 <div class="resource-note"> 61 61 <p> 62 - <strong>In practice:</strong> the first review should not try to rebuild the whole permission model. 63 - It should identify risky areas, unclear exceptions, old groups and sensitive rights that need a closer look. 55 + <strong>In practice:</strong> an XWiki access-rights review should start by understanding the intended 56 + access model, then checking groups, local page rights, inherited permissions, powerful rights, inactive users 57 + and undocumented exceptions. 64 64 </p> 65 65 </div> 66 66 67 - <h2 id="starting-point">Where to start in a real XWiki instance</h2> 68 - 69 69 <p> 70 - Thefirstsignsofamessyaccessmodelareusually simple:manygroupswithunclearnames, rights assigned71 - directlyto users,restrictedpageswithoutanowner,oldprojectspaces andpowerfulrights grantedtopeople72 - whonolonger administertheplatform.62 + An XWiki access-rights review is a structured check of how users and groups receive permissions across the wiki. 63 + It helps administrators understand who can access what, why access was granted, which permissions are inherited, 64 + and where local exceptions may create risk or confusion. 73 73 </p> 74 74 75 - <p> 76 - At this stage, the goal is not to decide whether every permission is correct. The goal is to build a map: 77 - which areas are sensitive, where local rights exist, which groups matter, and which findings should be reviewed 78 - before the next upgrade, migration or authentication change. 79 - </p> 80 - 81 81 <div class="resource-note"> 82 82 <p> 83 - <strong>The main point:</strong> a useful access-rights review should answer more than “can this user access 84 - this page?” It should also answer “why do they have access, which group grants it, who owns the area and when 85 - should this be reviewed again?” 69 + <strong>The main point:</strong> the goal is not only to find permission problems. The goal is to make the 70 + access model easier to explain, maintain and review over time. 86 86 </p> 87 87 </div> 88 88 74 + <h2 id="why-review">Why an access-rights review matters</h2> 75 + 89 89 <p> 90 - For a broader view of security-related checks, see 91 - <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a>. 77 + XWiki is often used for internal knowledge, project documentation, procedures, HR content, customer information, 78 + technical documentation, controlled documents or business-critical workflows. When the content becomes important, 79 + the access model becomes important too. 92 92 </p> 93 93 94 - <h2 id="first-pass-audit">A practical first-pass audit</h2> 82 + <p> 83 + A permission setup can be technically valid and still be difficult to govern. For example, rights may be assigned 84 + to individual users instead of groups, old project groups may still have access, or page-level exceptions may 85 + override the expected inherited model. 86 + </p> 95 95 96 96 <p> 97 - A first-passauditshouldbesafeandobservational. Beforechanging anything in production,collectenough98 - informationtounderstand thecurrentmodelandtheareasthatneed attention.89 + For a broader view of security-related checks, see 90 + <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a>. 99 99 </p> 100 100 101 - <ul class="resource-checklist"> 102 - <li>Do not change permissions before understanding why they exist.</li> 103 - <li>Identify the main areas of the wiki: open, internal, restricted, confidential and administrative.</li> 104 - <li>List the groups that seem to control access to these areas.</li> 105 - <li>Look for direct user rights and local page-level exceptions.</li> 106 - <li>Review admin, script and programming rights separately from normal edit rights.</li> 107 - <li>Document what is unclear instead of guessing.</li> 108 - </ul> 93 + <h2 id="access-model">1. Start with the access model, not with the UI</h2> 109 109 110 - <h2 id="access-model">1. Start with access areas, not individual pages</h2> 111 - 112 112 <p> 113 - Before reviewingindividualpermissions, clarify what the wiki should look like from an access perspective.114 - Otherwise,thereview becomes a list of isolated technical checks without a clear target.96 + Before changing permissions, clarify what the wiki should look like from an access perspective. Otherwise, 97 + the review becomes a list of isolated technical checks without a clear target. 115 115 </p> 116 116 117 117 <p> 118 - A simple accessmapis often enough. Separate the wiki into clear areas such as open internal knowledge,101 + A simple model is often enough. Separate the wiki into clear areas such as open internal knowledge, 119 119 team spaces, restricted projects, confidential documents, technical administration pages and external 120 120 collaboration areas. 121 121 </p> ... ... @@ -125,7 +125,7 @@ 125 125 <tr> 126 126 <th>Area type</th> 127 127 <th>Typical access</th> 128 - <th> First review question</th>111 + <th>Review question</th> 129 129 </tr> 130 130 </thead> 131 131 <tbody> ... ... @@ -166,43 +166,42 @@ 166 166 167 167 <p> 168 168 Start by reviewing which groups exist, what they are used for and whether their members still match the intended 169 - access model. Group names often tell part of the story: old project names, temporary access groups and unclear 170 - role names are good signals that the access model needs cleanup. 152 + access model. 171 171 </p> 172 172 173 173 <table class="table table-bordered table-striped"> 174 174 <thead> 175 175 <tr> 176 - <th>Group signal</th>177 - <th>What itmay indicate</th>178 - <th> Firstaction</th>158 + <th>Group review item</th> 159 + <th>What to check</th> 160 + <th>Possible action</th> 179 179 </tr> 180 180 </thead> 181 181 <tbody> 182 182 <tr> 183 183 <td>Old project groups</td> 184 - <td> A projectendedbutaccessmay stillbeactive</td>185 - <td> Confirmwhetherthe groupisstillneeded</td>166 + <td>Groups created for projects that ended</td> 167 + <td>Remove access, archive the group or document why it remains active</td> 186 186 </tr> 187 187 <tr> 188 188 <td>Inactive users</td> 189 - <td> Formeremployees oroldaccountsmay still have access</td>190 - <td>Remove from groups or deactivate according to policy</td> 171 + <td>Users who no longer need access</td> 172 + <td>Remove from groups or deactivate accounts according to policy</td> 191 191 </tr> 192 192 <tr> 193 193 <td>Unclear group names</td> 194 - <td> Nobody can easilyexplainwhat thegroupcontrols</td>195 - <td> Document,renameor consolidate</td>176 + <td>Groups whose purpose is not obvious</td> 177 + <td>Rename, document or consolidate</td> 196 196 </tr> 197 197 <tr> 198 198 <td>Overloaded groups</td> 199 - <td> One groupcontrolstoo many unrelated areas</td>181 + <td>Groups used for too many unrelated areas</td> 200 200 <td>Split into clearer role-based or area-based groups</td> 201 201 </tr> 202 202 <tr> 203 203 <td>Admin groups</td> 204 - <td> Powerful rightsmay be granted too broadly</td>205 - <td>Review membership separately</td> 186 + <td>Groups with powerful rights</td> 187 + <td>Review membership separately and keep it limited</td> 206 206 </tr> 207 207 </tbody> 208 208 </table> ... ... @@ -216,13 +216,13 @@ 216 216 217 217 <p> 218 218 The following Velocity snippet can help you start the review by listing pages that contain local 219 - <code>XWiki.XWikiRights</code> objects. It is not a complete audit .It gives you a practical first list of220 - pa ges where local rights may exist.201 + <code>XWiki.XWikiRights</code> objects. It is not a complete audit, but it gives you a practical first list of 202 + places where local rights may exist. 221 221 </p> 222 222 {{/html}} 223 223 {{/velocity}} 224 224 225 -{{code language="velocity"}}207 +{{code}} 226 226 #set ($query = "from doc.object(XWiki.XWikiRights) rights order by doc.fullName asc") 227 227 #set ($pages = $services.query.xwql($query).execute()) 228 228 ... ... @@ -229,9 +229,9 @@ 229 229 #if ($pages.isEmpty()) 230 230 No pages with local XWiki rights were found. 231 231 #else 232 - |= Page |= Reviewnote214 + |= Page |= Local rights found 233 233 #foreach ($page in $pages) 234 - | [[$page]] | Local rights configured216 + | [[$page]] | yes 235 235 #end 236 236 #end 237 237 {{/code}} ... ... @@ -238,35 +238,20 @@ 238 238 239 239 {{velocity}} 240 240 {{html clean="false"}} 241 - <h2 id="interpret-results">4. How to interpret the result</h2> 242 - 243 243 <p> 244 - The result shouldbe treatedasareview queue,notas a final answer. Each page should bechecked in context:245 - whylocalrightswere added, who is affected, whethertherights apply only toonepage or to a hierarchy, and246 - whether the exception is still needed.224 + Use the result as a starting point. Each page should be reviewed in context: why local rights were added, which 225 + users or groups are affected, whether rights apply only to that page or to a hierarchy, and whether the exception 226 + is still needed. 247 247 </p> 248 248 249 249 <div class="resource-note"> 250 250 <p> 251 - <strong> What this snippet helps you find:</strong> pages wherelocal rightsmayoverridetheexpectedinherited252 - model, oldrestrictedareas,project spaceswith specialaccessrules andconfidential pagesthatshould have253 - a clear owner.231 + <strong>Important:</strong> a list of pages with local rights does not tell the full story. You still need to 232 + interpret inherited permissions, groups, explicit allow or deny rules, wiki-level rights and sensitive rights 233 + such as admin, script or programming. 254 254 </p> 255 255 </div> 256 256 257 - <div class="resource-note"> 258 - <p> 259 - <strong>What this snippet does not tell you:</strong> whether the rights are correct, whether the groups are 260 - still valid, whether the users inside those groups still need access, or whether inherited permissions already 261 - grant access from a parent page. 262 - </p> 263 - </div> 264 - 265 - <p> 266 - A page appearing in this list is not automatically a problem. It simply means that the page deserves a closer 267 - look during the first-pass review. 268 - </p> 269 - 270 270 <div class="resource-inline-cta"> 271 271 <p> 272 272 <strong>Not sure where local rights are hidden?</strong> ... ... @@ -273,10 +273,10 @@ 273 273 A focused access-rights review can help identify local exceptions, inherited permissions, old groups and 274 274 sensitive rights that should be cleaned up or documented. 275 275 </p> 276 - <a class="btn btn- default" href="$xwiki.getURL('contact.WebHome')">Request an access review</a>243 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an access review</a> 277 277 </div> 278 278 279 - <h2 id="sensitive-rights"> 5.Reviewsensitive rightsseparately</h2>246 + <h2 id="sensitive-rights">4. Pay special attention to sensitive rights</h2> 280 280 281 281 <p> 282 282 Not all rights have the same impact. View, comment and edit rights affect content collaboration. Administration, ... ... @@ -326,34 +326,16 @@ 326 326 </tbody> 327 327 </table> 328 328 329 - <h2 id=" common-findings">Common findingsduring a first review</h2>296 + <h2 id="document-findings">5. Document the findings</h2> 330 330 331 331 <p> 332 - A first-pass review often reveals patterns that are not obvious from normal daily use. These findings do not 333 - always mean that the instance is unsafe, but they usually deserve clarification. 334 - </p> 335 - 336 - <ul class="resource-checklist"> 337 - <li>Pages restricted years ago for a project that no longer exists.</li> 338 - <li>Groups created for temporary access that still grant view or edit rights.</li> 339 - <li>Direct user rights added because creating a proper group felt too heavy at the time.</li> 340 - <li>Admin or script rights granted to users who no longer maintain the platform.</li> 341 - <li>Restricted spaces without a clear business owner.</li> 342 - <li>External users still present in groups after the collaboration ended.</li> 343 - <li>Local page rights added to solve an urgent issue, but never reviewed again.</li> 344 - <li>Group synchronization from LDAP, SSO, OIDC or SAML that no longer matches the expected wiki access model.</li> 345 - </ul> 346 - 347 - <h2 id="document-findings">6. Document findings before changing permissions</h2> 348 - 349 - <p> 350 350 An access-rights review should not end with a few manual changes. The result should be documented so that the 351 351 next administrator understands what was found, what was changed and what still needs attention. 352 352 </p> 353 353 354 354 <p> 355 - A simple review register isenoughfor a first pass. The goal is to record the affected area, the current access356 - model, the concern, the owner and the recommended action.304 + A simple review register can be enough. The goal is to record the affected area, the current access model, the 305 + risk, the owner and the recommended action. 357 357 </p> 358 358 359 359 <table class="table table-bordered table-striped"> ... ... @@ -387,11 +387,11 @@ 387 387 </tbody> 388 388 </table> 389 389 390 - <h2 id="review-checklist">XWiki access-rights first-passchecklist</h2>339 + <h2 id="review-checklist">XWiki access-rights review checklist</h2> 391 391 392 392 <p> 393 393 A practical review should combine technical checks with governance questions. The following checklist can be 394 - used before changing permissions in production. 343 + used as a starting point before changing permissions in production. 395 395 </p> 396 396 397 397 <ul class="resource-checklist"> ... ... @@ -404,7 +404,7 @@ 404 404 <li>Review admin, script and programming rights separately.</li> 405 405 <li>Check authentication and group synchronization if LDAP, SSO, OIDC or SAML is used.</li> 406 406 <li>Document findings, owners, risks and recommended actions.</li> 407 - <li> Only thendecide what should becleanedup, simplified orreviewedwiththebusinessowner.</li>356 + <li>Schedule a periodic access-rights review.</li> 408 408 </ul> 409 409 410 410 <h2 id="access-review-faq">XWiki access-rights review FAQ</h2> ... ... @@ -451,19 +451,14 @@ 451 451 </p> 452 452 </details> 453 453 454 - <div class="resource-note related-resources"> 455 - <p><strong>Related resources:</strong></p> 456 - <ul> 457 - <li> 458 - <a href="$xwiki.getURL('resources.xwiki-access-rights-governance')">Why XWiki access rights need a clear governance model</a> 459 - </li> 460 - <li> 461 - <a href="$xwiki.getURL('resources.xwiki-security-review')">What an XWiki security review should actually include</a> 462 - </li> 463 - <li> 464 - <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Why regular XWiki upgrades matter</a> 465 - </li> 466 - </ul> 403 + <div class="resource-note"> 404 + <p> 405 + Related resources: 406 + <a href="$xwiki.getURL('resources.xwiki-access-rights-governance')">why XWiki access rights need a clear governance model</a>, 407 + <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a> 408 + and 409 + <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">why regular XWiki upgrades matter</a>. 410 + </p> 467 467 </div> 468 468 469 469 <div class="resource-cta">