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
-
... ... @@ -1,533 +1,0 @@ 1 -{{velocity}} 2 -#set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 -{{html clean="false"}} 4 - 5 - <section class="resource-header" aria-labelledby="hero-title"> 6 - <div class="container"> 7 - <div class="text-center"> 8 - <div class="hero-kicker"> 9 - <i class="fa fa-search" aria-hidden="true"></i> 10 - XWiki access-rights review 11 - </div> 12 - </div> 13 - 14 - <h1 id="hero-title">A first-pass XWiki access-rights audit before changing permissions</h1> 15 - 16 - <p class="resource-summary"> 17 - A practical way to identify local rights, old groups, sensitive permissions and unclear access exceptions 18 - before they become a security or maintenance problem. 19 - </p> 20 - </div> 21 - </section> 22 - 23 - <section class="resource-page"> 24 - <div class="container"> 25 - <div class="resource-layout"> 26 - 27 - <aside class="resource-sidebar" aria-label="Page summary"> 28 - <h4>In this guide</h4> 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> 38 - <li><a href="#review-checklist">Checklist</a></li> 39 - <li><a href="#access-review-faq">FAQ</a></li> 40 - </ul> 41 - </aside> 42 - 43 - <article class="resource-content"> 44 - 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 - Many XWiki permission issues are not visible from the homepage. Users can log in, pages can be edited, 52 - search can work correctly, and the wiki may still contain access rules that nobody fully understands anymore. 53 - </p> 54 - 55 - <p> 56 - This usually happens slowly. A team needs access, a page is restricted, a group is created, an exception is 57 - added, an external user is invited, and after a few years the access model becomes difficult to explain. 58 - </p> 59 - 60 - <div class="resource-note"> 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. 64 - </p> 65 - </div> 66 - 67 - <h2 id="starting-point">Where to start in a real XWiki instance</h2> 68 - 69 - <p> 70 - The first signs of a messy access model are usually simple: many groups with unclear names, rights assigned 71 - directly to users, restricted pages without an owner, old project spaces and powerful rights granted to people 72 - who no longer administer the platform. 73 - </p> 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 - <div class="resource-note"> 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?” 86 - </p> 87 - </div> 88 - 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>. 92 - </p> 93 - 94 - <h2 id="first-pass-audit">A practical first-pass audit</h2> 95 - 96 - <p> 97 - A first-pass audit should be safe and observational. Before changing anything in production, collect enough 98 - information to understand the current model and the areas that need attention. 99 - </p> 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> 109 - 110 - <h2 id="access-model">1. Start with access areas, not individual pages</h2> 111 - 112 - <p> 113 - Before reviewing individual permissions, clarify what the wiki should look like from an access perspective. 114 - Otherwise, the review becomes a list of isolated technical checks without a clear target. 115 - </p> 116 - 117 - <p> 118 - A simple access map is often enough. Separate the wiki into clear areas such as open internal knowledge, 119 - team spaces, restricted projects, confidential documents, technical administration pages and external 120 - collaboration areas. 121 - </p> 122 - 123 - <table class="table table-bordered table-striped"> 124 - <thead> 125 - <tr> 126 - <th>Area type</th> 127 - <th>Typical access</th> 128 - <th>First review question</th> 129 - </tr> 130 - </thead> 131 - <tbody> 132 - <tr> 133 - <td>Open internal knowledge</td> 134 - <td>Most authenticated users can view, selected users can edit</td> 135 - <td>Is this content really safe for broad internal access?</td> 136 - </tr> 137 - <tr> 138 - <td>Team or project spaces</td> 139 - <td>Team members can edit, others may only view</td> 140 - <td>Are the groups still aligned with the current team?</td> 141 - </tr> 142 - <tr> 143 - <td>Restricted projects</td> 144 - <td>Only selected groups can view or edit</td> 145 - <td>Is access granted through groups or individual users?</td> 146 - </tr> 147 - <tr> 148 - <td>Confidential documents</td> 149 - <td>Small controlled group</td> 150 - <td>Who owns the restriction and when was it last reviewed?</td> 151 - </tr> 152 - <tr> 153 - <td>Technical administration pages</td> 154 - <td>Trusted administrators only</td> 155 - <td>Are admin, script and programming rights limited?</td> 156 - </tr> 157 - </tbody> 158 - </table> 159 - 160 - <h2 id="review-groups">2. Review groups before reviewing pages</h2> 161 - 162 - <p> 163 - In most XWiki instances, groups should be the foundation of the permission model. Rights assigned directly to 164 - individual users are harder to maintain because people change roles, leave the organization or move between teams. 165 - </p> 166 - 167 - <p> 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. 171 - </p> 172 - 173 - <table class="table table-bordered table-striped"> 174 - <thead> 175 - <tr> 176 - <th>Group signal</th> 177 - <th>What it may indicate</th> 178 - <th>First action</th> 179 - </tr> 180 - </thead> 181 - <tbody> 182 - <tr> 183 - <td>Old project groups</td> 184 - <td>A project ended but access may still be active</td> 185 - <td>Confirm whether the group is still needed</td> 186 - </tr> 187 - <tr> 188 - <td>Inactive users</td> 189 - <td>Former employees or old accounts may still have access</td> 190 - <td>Remove from groups or deactivate according to policy</td> 191 - </tr> 192 - <tr> 193 - <td>Unclear group names</td> 194 - <td>Nobody can easily explain what the group controls</td> 195 - <td>Document, rename or consolidate</td> 196 - </tr> 197 - <tr> 198 - <td>Overloaded groups</td> 199 - <td>One group controls too many unrelated areas</td> 200 - <td>Split into clearer role-based or area-based groups</td> 201 - </tr> 202 - <tr> 203 - <td>Admin groups</td> 204 - <td>Powerful rights may be granted too broadly</td> 205 - <td>Review membership separately</td> 206 - </tr> 207 - </tbody> 208 - </table> 209 - 210 - <h2 id="find-local-rights">3. Identify pages with local access rights</h2> 211 - 212 - <p> 213 - Local page-level rights are often where surprises appear. They are useful when a page or page hierarchy needs 214 - special access rules, but they can become difficult to manage when they are added repeatedly without documentation. 215 - </p> 216 - 217 - <p> 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 of 220 - pages where local rights may exist. 221 - </p> 222 -{{/html}} 223 -{{/velocity}} 224 - 225 -{{code language="velocity"}} 226 -#set ($query = "from doc.object(XWiki.XWikiRights) rights order by doc.fullName asc") 227 -#set ($pages = $services.query.xwql($query).execute()) 228 - 229 -#if ($pages.isEmpty()) 230 - No pages with local XWiki rights were found. 231 -#else 232 - |= Page |= Review note 233 - #foreach ($page in $pages) 234 - | [[$page]] | Local rights configured 235 - #end 236 -#end 237 -{{/code}} 238 - 239 -{{velocity}} 240 -{{html clean="false"}} 241 - <h2 id="interpret-results">4. How to interpret the result</h2> 242 - 243 - <p> 244 - The result should be treated as a review queue, not as a final answer. Each page should be checked in context: 245 - why local rights were added, who is affected, whether the rights apply only to one page or to a hierarchy, and 246 - whether the exception is still needed. 247 - </p> 248 - 249 - <div class="resource-note"> 250 - <p> 251 - <strong>What this snippet helps you find:</strong> pages where local rights may override the expected inherited 252 - model, old restricted areas, project spaces with special access rules and confidential pages that should have 253 - a clear owner. 254 - </p> 255 - </div> 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 - <div class="resource-inline-cta"> 271 - <p> 272 - <strong>Not sure where local rights are hidden?</strong> 273 - A focused access-rights review can help identify local exceptions, inherited permissions, old groups and 274 - sensitive rights that should be cleaned up or documented. 275 - </p> 276 - <a class="btn btn-default" href="$xwiki.getURL('contact.WebHome')">Request an access review</a> 277 - </div> 278 - 279 - <h2 id="sensitive-rights">5. Review sensitive rights separately</h2> 280 - 281 - <p> 282 - Not all rights have the same impact. View, comment and edit rights affect content collaboration. Administration, 283 - script and programming rights can have a broader technical and security impact and should be reviewed separately. 284 - </p> 285 - 286 - <p> 287 - A user with powerful rights may be able to change configuration, execute advanced scripts, affect other users or 288 - influence how content is rendered. These rights should be granted intentionally, limited to trusted users and 289 - documented as part of the administration model. 290 - </p> 291 - 292 - <table class="table table-bordered table-striped"> 293 - <thead> 294 - <tr> 295 - <th>Right type</th> 296 - <th>Why it matters</th> 297 - <th>Review approach</th> 298 - </tr> 299 - </thead> 300 - <tbody> 301 - <tr> 302 - <td>Admin</td> 303 - <td>Can control important wiki configuration and rights</td> 304 - <td>Keep limited and review membership regularly</td> 305 - </tr> 306 - <tr> 307 - <td>Script</td> 308 - <td>Can allow advanced scripting behavior depending on context</td> 309 - <td>Grant only to users who understand the technical impact</td> 310 - </tr> 311 - <tr> 312 - <td>Programming</td> 313 - <td>Can be highly sensitive and should be reserved for trusted technical administrators</td> 314 - <td>Review separately from normal editing permissions</td> 315 - </tr> 316 - <tr> 317 - <td>Edit</td> 318 - <td>Allows content changes and may affect business processes</td> 319 - <td>Assign through groups and validate restricted areas</td> 320 - </tr> 321 - <tr> 322 - <td>View</td> 323 - <td>Controls access to content and confidential information</td> 324 - <td>Review public, internal and restricted areas carefully</td> 325 - </tr> 326 - </tbody> 327 - </table> 328 - 329 - <h2 id="common-findings">Common findings during a first review</h2> 330 - 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 - An access-rights review should not end with a few manual changes. The result should be documented so that the 351 - next administrator understands what was found, what was changed and what still needs attention. 352 - </p> 353 - 354 - <p> 355 - A simple review register is enough for a first pass. The goal is to record the affected area, the current access 356 - model, the concern, the owner and the recommended action. 357 - </p> 358 - 359 - <table class="table table-bordered table-striped"> 360 - <thead> 361 - <tr> 362 - <th>Area or page</th> 363 - <th>Current access</th> 364 - <th>Risk or concern</th> 365 - <th>Recommended action</th> 366 - <th>Owner</th> 367 - <th>Review date</th> 368 - </tr> 369 - </thead> 370 - <tbody> 371 - <tr> 372 - <td>Example.ProjectSpace</td> 373 - <td>Old project group can still view</td> 374 - <td>Project ended, access may no longer be needed</td> 375 - <td>Confirm owner and remove group if obsolete</td> 376 - <td>Project owner</td> 377 - <td>YYYY-MM-DD</td> 378 - </tr> 379 - <tr> 380 - <td>Example.ConfidentialDocs</td> 381 - <td>Individual users have direct rights</td> 382 - <td>Difficult to maintain when roles change</td> 383 - <td>Move access to a dedicated group</td> 384 - <td>Content owner</td> 385 - <td>YYYY-MM-DD</td> 386 - </tr> 387 - </tbody> 388 - </table> 389 - 390 - <h2 id="review-checklist">XWiki access-rights first-pass checklist</h2> 391 - 392 - <p> 393 - A practical review should combine technical checks with governance questions. The following checklist can be 394 - used before changing permissions in production. 395 - </p> 396 - 397 - <ul class="resource-checklist"> 398 - <li>Identify public, internal, restricted and administrative areas.</li> 399 - <li>List active groups and clarify what each group is used for.</li> 400 - <li>Review old groups, inactive users and temporary access.</li> 401 - <li>Identify pages with local XWiki rights objects.</li> 402 - <li>Review page-level exceptions and inherited permissions.</li> 403 - <li>Check whether rights are assigned to groups rather than individual users.</li> 404 - <li>Review admin, script and programming rights separately.</li> 405 - <li>Check authentication and group synchronization if LDAP, SSO, OIDC or SAML is used.</li> 406 - <li>Document findings, owners, risks and recommended actions.</li> 407 - <li>Only then decide what should be cleaned up, simplified or reviewed with the business owner.</li> 408 - </ul> 409 - 410 - <h2 id="access-review-faq">XWiki access-rights review FAQ</h2> 411 - 412 - <details class="resource-faq-item" open> 413 - <summary>Is listing pages with local rights enough for an access audit?</summary> 414 - <p> 415 - No. It is only a starting point. A complete review should also consider inherited permissions, group 416 - membership, wiki-level rights, explicit allow or deny rules, sensitive rights and the business reason behind 417 - each restricted area. 418 - </p> 419 - </details> 420 - 421 - <details class="resource-faq-item"> 422 - <summary>Should XWiki rights be assigned directly to users?</summary> 423 - <p> 424 - In most cases, rights should be assigned through groups. Direct user rights can be useful in rare situations, 425 - but they are harder to maintain and should be reviewed carefully. 426 - </p> 427 - </details> 428 - 429 - <details class="resource-faq-item"> 430 - <summary>What is the most common access-rights problem in XWiki?</summary> 431 - <p> 432 - A common issue is the accumulation of undocumented exceptions: old groups, page-level rights, inherited 433 - permissions and direct user rights that were correct at the time but are no longer clearly understood. 434 - </p> 435 - </details> 436 - 437 - <details class="resource-faq-item"> 438 - <summary>Should access rights be reviewed before an XWiki upgrade?</summary> 439 - <p> 440 - Yes. Upgrades are a good moment to review permissions, especially for business-critical instances. The review 441 - can reveal old groups, sensitive rights, custom scripts and restricted areas that should be validated during 442 - the upgrade process. 443 - </p> 444 - </details> 445 - 446 - <details class="resource-faq-item"> 447 - <summary>Does SSO replace an access-rights review?</summary> 448 - <p> 449 - No. SSO helps authenticate users, but XWiki authorization still depends on groups, rights, inheritance and 450 - page-level exceptions. Authentication and access control should be reviewed together. 451 - </p> 452 - </details> 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> 467 - </div> 468 - 469 - <div class="resource-cta"> 470 - <h3>Need help reviewing XWiki access rights?</h3> 471 - <p> 472 - If your XWiki instance has grown over time, uses many groups, contains restricted areas or depends on LDAP, 473 - SSO, OIDC or SAML, an access-rights review can help identify unclear permissions and define a safer model. 474 - </p> 475 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an access-rights review</a> 476 - </div> 477 - 478 - </article> 479 - </div> 480 - </div> 481 - </section> 482 - 483 - <script type="application/ld+json"> 484 - { 485 - "@context": "https://schema.org", 486 - "@type": "FAQPage", 487 - "mainEntity": [ 488 - { 489 - "@type": "Question", 490 - "name": "Is listing pages with local rights enough for an access audit?", 491 - "acceptedAnswer": { 492 - "@type": "Answer", 493 - "text": "No. It is only a starting point. A complete review should also consider inherited permissions, group membership, wiki-level rights, explicit allow or deny rules, sensitive rights and the business reason behind each restricted area." 494 - } 495 - }, 496 - { 497 - "@type": "Question", 498 - "name": "Should XWiki rights be assigned directly to users?", 499 - "acceptedAnswer": { 500 - "@type": "Answer", 501 - "text": "In most cases, rights should be assigned through groups. Direct user rights can be useful in rare situations, but they are harder to maintain and should be reviewed carefully." 502 - } 503 - }, 504 - { 505 - "@type": "Question", 506 - "name": "What is the most common access-rights problem in XWiki?", 507 - "acceptedAnswer": { 508 - "@type": "Answer", 509 - "text": "A common issue is the accumulation of undocumented exceptions: old groups, page-level rights, inherited permissions and direct user rights that were correct at the time but are no longer clearly understood." 510 - } 511 - }, 512 - { 513 - "@type": "Question", 514 - "name": "Should access rights be reviewed before an XWiki upgrade?", 515 - "acceptedAnswer": { 516 - "@type": "Answer", 517 - "text": "Yes. Upgrades are a good moment to review permissions, especially for business-critical instances. The review can reveal old groups, sensitive rights, custom scripts and restricted areas that should be validated during the upgrade process." 518 - } 519 - }, 520 - { 521 - "@type": "Question", 522 - "name": "Does SSO replace an access-rights review?", 523 - "acceptedAnswer": { 524 - "@type": "Answer", 525 - "text": "No. SSO helps authenticate users, but XWiki authorization still depends on groups, rights, inheritance and page-level exceptions. Authentication and access control should be reviewed together." 526 - } 527 - } 528 - ] 529 - } 530 - </script> 531 - 532 -{{/html}} 533 -{{/velocity}}