[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"cms-page:governance":3,"icon:alert-triangle":203,"icon:arrows-exchange":214,"icon:chart-bar":221,"icon:clipboard-check":234,"icon:file-text":244,"icon:flag":260,"icon:forms":267,"icon:gauge":286,"icon:message-report":299,"icon:microscope":309,"icon:notebook":331,"icon:refresh":341,"icon:route":348,"icon:school":358,"icon:signature":365,"icon:truck":369,"icon:user-shield":379},{"slug":4,"seo":5,"sections":8},"\u002Fgovernance",{"title":6,"description":7},"Governance & Administration — QAbility Quality Management","Role, module, action and scope, checked in the database on every request. Roles held directly or through groups, and a ledger of every permission change.",[9,25,117,150,174,197],{"type":10,"id":11,"eyebrow":12,"title":13,"highlight":14,"blurb":15,"actions":16,"image":23},"hero","top","Governance & Administration","One model decides who can do what.","It is consulted on every request.","Roles, a permission matrix, scope and group membership, read inside the database on each request rather than baked into a session at sign-in. Change what someone may do and their next request already knows.",[17,20],{"label":18,"href":19},"Book a demo","\u002Fcontact",{"label":21,"href":22},"See pricing","\u002Fpricing",{"src":24},"product.cap.permissions",{"type":26,"name":27,"id":28,"eyebrow":29,"title":30,"blurb":31,"data":32},"signature","accessEquation","model","The model","Every permission is four answers.","Who holds it, over what, to do what, and how far it reaches. Every authorization question anywhere in the product resolves back to this.",{"terms":33,"result":50,"ringsLabel":53,"rings":54,"ringsNote":71,"membershipLabel":72,"paths":73,"check":87,"ledgerLabel":90,"ledgerCaption":91,"events":92,"fields":97,"ledgerRule":115},[34,38,42,46],{"symbol":35,"question":36,"detail":37},"Role","Who holds it","A named bundle of grants, held by people directly or through a group. Switch it off and it stops granting; the assignments stay.",{"symbol":39,"question":40,"detail":41},"Module","Over what","A capability of the product, from document control to a record type you built yourself.",{"symbol":43,"question":44,"detail":45},"Action","To do what","Read, create, update, approve, close, manage access and more. Only an action the module supports can be granted on it.",{"symbol":47,"question":48,"detail":49},"Scope","How far","Own, Department, Site or Company-wide. A field on the grant, never encoded in a permission name.",{"label":51,"detail":52},"One grant","Across all of a person’s roles, the widest grant for an action is the one that counts.","Scope, drawn as it nests",[55,59,63,67],{"label":56,"reaches":57,"checks":58},"Company-wide","Every record in the company.","the company boundary alone",{"label":60,"reaches":61,"checks":62},"Site","Records at any site assigned to the person: a primary site plus any number of additional ones.","the record’s site",{"label":64,"reaches":65,"checks":66},"Department","Records in the person’s department.","the record’s department",{"label":68,"reaches":69,"checks":70},"Own","Records the person owns.","the record’s owner","The narrow tiers exist only where the record carries the column. The roles matrix offers Own, Department or Site on a module only when its records have an owner, a department or a site to check. Everywhere else, mostly reference data, it offers Company-wide alone rather than a narrower choice that would quietly deny.","Two ways to hold a role, one check",[74,81],{"label":75,"chain":76,"detail":78,"gate":79,"enforcedBy":80},"Direct",[35,77],"Person","Assigned from the role, or from the person’s own record.","Needs the right to manage permissions. Being able to edit users is not enough.","db",{"label":82,"chain":83,"detail":85,"gate":86,"enforcedBy":80},"Via a group",[35,84,77],"Group","Grant a role to a group and every current and future member holds it. Nothing is copied onto the person; the membership is followed at the moment of the check.","Granting a role to a group needs the same right. Being able to edit the group is not enough.",{"label":88,"detail":89,"enforcedBy":80},"The check","Both paths are read live, by the server and by row-level security in the database. Only active roles count, and nothing is cached at sign-in, so a change applies on the person’s next request.","The permission ledger","Append-only",[93,94,95,96],"Grant","Scope change","Revoke","Make admin",[98,100,103,106,109,112],{"label":35,"detail":99},"The role whose grants changed.",{"label":101,"detail":102},"Module and action","What the grant covers.",{"label":104,"detail":105},"Scope before and after","Both ends of the change.",{"label":107,"detail":108},"Changed by","The person who made it.",{"label":110,"detail":111},"From","The network address of the request.",{"label":113,"detail":114},"When","The moment it was written.",{"text":116,"enforcedBy":80},"Written by the same database function that makes the change, in the same transaction. Editing or deleting a row afterwards is refused, including for the administrator who made it.",{"type":118,"id":119,"eyebrow":120,"title":121,"lead":122,"media":123,"caption":124,"framed":125,"callouts":126},"annotatedShot","annotated","Placement is an input","Sites and departments decide what a scope reaches","A person’s site and department are not profile decoration. They are the values the Site and Department tiers check a record against.","product.cap.multi-site","Settings › Users · User record",true,[127,132,135,140,145],{"label":128,"text":129,"x":130,"y":131},"Primary site","Where the person sits. A Site-scoped grant reaches records at this site.",12,54,{"label":64,"text":133,"x":134,"y":131},"The value a Department-scoped grant checks a record’s department against.",42.5,{"label":136,"text":137,"x":138,"y":139},"Additional sites","Any number more. A role with Site scope reaches records at every one of them, as the line beneath the field says.",9,91,{"label":141,"text":142,"x":143,"y":144},"Role assignments","Roles held directly. A role that arrives through a group shows on the person’s effective permissions, with the group named.",81,84,{"label":146,"text":147,"x":148,"y":149},"Company ownership","An owner bypasses roles and permissions entirely. Keep owner accounts few and named.",71.5,57,{"type":151,"id":151,"eyebrow":152,"title":153,"rules":154},"ledger","The rules, and who enforces them","What an access change won’t get past",[155,158,161,164,167,170],{"rule":156,"detail":157,"enforcedBy":80},"Managing permissions is its own right","Changing the matrix, assigning a role to a person or granting one to a group needs the right to manage permissions, or company ownership. Being allowed to administer users or groups is not enough.",{"rule":159,"detail":160,"enforcedBy":80},"One door into the matrix","The app’s database role can read the matrix but not write it. Every change goes through one function that checks that right, refuses another company’s roles, and refuses an action the module does not support.",{"rule":162,"detail":163,"enforcedBy":80},"The ledger is append-only","A trigger refuses every update and every delete on the permission ledger, whoever asks.",{"rule":165,"detail":166,"enforcedBy":80},"A switched-off role grants nothing","The check reads active roles only, so deactivating a role removes its grants on the next request. Every assignment stays in place for when it is switched back on.",{"rule":168,"detail":169,"enforcedBy":80},"A locked role stays as it is","Renaming, deactivating or deleting a locked role is refused by a trigger, and saving its permissions is refused by the server until someone unlocks it.",{"rule":171,"detail":172,"enforcedBy":173},"Narrow scope only where it takes effect","The matrix offers Own, Department and Site only on modules whose records carry that column, so no one stores a grant that would silently deny.","server",{"type":175,"id":175,"eyebrow":176,"title":177,"items":178},"faq","Straight answers","The questions a security reviewer asks first",[179,182,185,188,191,194],{"q":180,"a":181},"Do you support SSO, SAML or SCIM?","Not SCIM, and we would rather you read that here than find it in a questionnaire: there is no directory provisioning, so people, roles and group membership are administered inside QAbility. For SAML single sign-on, ask us about availability for your tenant before you plan around it. Multi-factor authentication, the sign-in policy and session controls sit at the identity layer rather than this one; the security page covers them.",{"q":183,"a":184},"If I change someone’s permissions, when does it take effect?","On their next request. Roles, grants and group membership are checked live, by the server and by row-level security in the database, with no decision cached at sign-in, so nothing has to expire and nobody has to sign out. The same holds for removing a role from someone, switching the role off, or taking them out of a group whose roles they relied on.",{"q":186,"a":187},"Can I prove who changed what someone was able to do?","Yes. Every change made in the roles matrix records the event, the role, the module and action, the scope before and after, who made it, from which address and when, in a ledger that refuses edits and deletes. A role’s access history merges those changes with who was assigned the role, directly or through a group. Two limits, stated plainly: grants the system writes at setup, such as a new company’s starting roles and the first grants on a module you build, are not ledger events; and no access change is electronically signed, because there is no signature subject for a role or a membership.",{"q":189,"a":190},"Can I see where a person’s permission comes from?","Yes. The effective-permissions view on a person lists each grant with the role it comes from, and when the role arrives through a group, it names the group. That is the question an access review actually asks, answered without reading two tables side by side.",{"q":192,"a":193},"Do the four scope tiers apply everywhere in the product?","No, and the matrix does not pretend they do. Own, Department and Site work wherever the module’s records carry an owner, a department or a site. Modules without that column, mostly reference data and record types you build yourself, offer Company-wide alone. Company-wide always applies; the narrow tiers appear only where they take effect.",{"q":195,"a":196},"Can an administrator grant more than they hold themselves?","Yes. Anyone with the right to manage permissions can grant any action at any scope the module offers; there is no check that limits them to their own reach, and no second approver on a permission change. Treat that right as the most sensitive one in the product, give it to few people, and review the ledger.",{"type":198,"id":199,"eyebrow":200,"title":201,"action":202},"ctaPanel","cta","Access you can evidence","Watch a permission change take effect, and land in a ledger nobody can edit.",{"label":18,"href":19},[204,208,211],[205,206],"path",{"d":207},"M12 9v4",[205,209],{"d":210},"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0",[205,212],{"d":213},"M12 16h.01",[215,218],[205,216],{"d":217},"M7 10h14l-4 -4",[205,219],{"d":220},"M17 14h-14l4 4",[222,225,228,231],[205,223],{"d":224},"M3 13a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -6",[205,226],{"d":227},"M15 9a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -10",[205,229],{"d":230},"M9 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -14",[205,232],{"d":233},"M4 20h14",[235,238,241],[205,236],{"d":237},"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2",[205,239],{"d":240},"M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2",[205,242],{"d":243},"M9 14l2 2l4 -4",[245,248,251,254,257],[205,246],{"d":247},"M14 3v4a1 1 0 0 0 1 1h4",[205,249],{"d":250},"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2",[205,252],{"d":253},"M9 9l1 0",[205,255],{"d":256},"M9 13l6 0",[205,258],{"d":259},"M9 17l6 0",[261,264],[205,262],{"d":263},"M5 5a5 5 0 0 1 7 0a5 5 0 0 0 7 0v9a5 5 0 0 1 -7 0a5 5 0 0 0 -7 0v-9",[205,265],{"d":266},"M5 21v-7",[268,271,274,277,280,283],[205,269],{"d":270},"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3",[205,272],{"d":273},"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3",[205,275],{"d":276},"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7",[205,278],{"d":279},"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1",[205,281],{"d":282},"M17 12h.01",[205,284],{"d":285},"M13 12h.01",[287,290,293,296],[205,288],{"d":289},"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",[205,291],{"d":292},"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",[205,294],{"d":295},"M13.41 10.59l2.59 -2.59",[205,297],{"d":298},"M7 12a5 5 0 0 1 5 -5",[300,303,306],[205,301],{"d":302},"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12",[205,304],{"d":305},"M12 8v3",[205,307],{"d":308},"M12 14v.01",[310,313,316,319,322,325,328],[205,311],{"d":312},"M5 21h14",[205,314],{"d":315},"M6 18h2",[205,317],{"d":318},"M7 18v3",[205,320],{"d":321},"M9 11l3 3l6 -6l-3 -3l-6 6",[205,323],{"d":324},"M10.5 12.5l-1.5 1.5",[205,326],{"d":327},"M17 3l3 3",[205,329],{"d":330},"M12 21a6 6 0 0 0 3.715 -10.712",[332,335,338],[205,333],{"d":334},"M6 4h11a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-11a1 1 0 0 1 -1 -1v-14a1 1 0 0 1 1 -1m3 0v18",[205,336],{"d":337},"M13 8l2 0",[205,339],{"d":340},"M13 12l2 0",[342,345],[205,343],{"d":344},"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",[205,346],{"d":347},"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",[349,352,355],[205,350],{"d":351},"M3 19a2 2 0 1 0 4 0a2 2 0 0 0 -4 0",[205,353],{"d":354},"M19 7a2 2 0 1 0 0 -4a2 2 0 0 0 0 4",[205,356],{"d":357},"M11 19h5.5a3.5 3.5 0 0 0 0 -7h-8a3.5 3.5 0 0 1 0 -7h4.5",[359,362],[205,360],{"d":361},"M22 9l-10 -4l-10 4l10 4l10 -4v6",[205,363],{"d":364},"M6 10.6v5.4a6 3 0 0 0 12 0v-5.4",[366],[205,367],{"d":368},"M3 17c3.333 -3.333 5 -6 5 -8c0 -3 -1 -3 -2 -3s-2.032 1.085 -2 3c.034 2.048 1.658 4.877 2.5 6c1.5 2 2.5 2.5 3.5 1l2 -3c.333 2.667 1.333 4 3 4c.53 0 2.639 -2 3 -2c.517 0 1.517 .667 3 2",[370,373,376],[205,371],{"d":372},"M5 17a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",[205,374],{"d":375},"M15 17a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",[205,377],{"d":378},"M5 17h-2v-11a1 1 0 0 1 1 -1h9v12m-4 0h6m4 0h2v-6h-8m0 -5h5l3 5",[380,383,386],[205,381],{"d":382},"M6 21v-2a4 4 0 0 1 4 -4h2",[205,384],{"d":385},"M22 16c0 4 -2.5 6 -3.5 6s-3.5 -2 -3.5 -6c1 0 2.5 -.5 3.5 -1.5c1 1 2.5 1.5 3.5 1.5",[205,387],{"d":388},"M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0",241564436]