1"use strict";(globalThis.webpackChunkopsworker_docs=globalThis.webpackChunkopsworker_docs||[]).push([[244],{6790(e,s,n){n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"configuration/users/roles","title":"User Roles","description":"OpsWorker role-based access control: Admin vs. ReadOnly permissions for clusters, alert rules, integrations, users, workspaces, and investigations.","source":"@site/docs/configuration/users/roles.md","sourceDirName":"configuration/users","slug":"/configuration/users/roles","permalink":"/docs/configuration/users/roles","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"description":"OpsWorker role-based access control: Admin vs. ReadOnly permissions for clusters, alert rules, integrations, users, workspaces, and investigations."},"sidebar":"docs","previous":{"title":"Invite Users","permalink":"/docs/configuration/users/invite"},"next":{"title":"Workspace Assignment","permalink":"/docs/configuration/users/workspaces"}}');var i=n(4848),t=n(8453);const l={description:"OpsWorker role-based access control: Admin vs. ReadOnly permissions for clusters, alert rules, integrations, users, workspaces, and investigations."},d="User Roles",o={},a=[{value:"Overview",id:"overview",level:2},{value:"Permissions",id:"permissions",level:2},{value:"Role Descriptions",id:"role-descriptions",level:2},{value:"Admin",id:"admin",level:3},{value:"ReadOnly",id:"readonly",level:3},{value:"Changing Roles",id:"changing-roles",level:2},{value:"Next Steps",id:"next-steps",level:2}];function c(e){const s={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"user-roles",children:"User Roles"})}),"\n",(0,i.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,i.jsxs)(s.p,{children:["OpsWorker uses role-based access control with two roles: ",(0,i.jsx)(s.strong,{children:"Admin"})," and ",(0,i.jsx)(s.strong,{children:"ReadOnly"}),' (shown in the UI as "ReadOnly"). A user has one role within the organization.']}),"\n",(0,i.jsx)(s.h2,{id:"permissions",children:"Permissions"}),"\n",(0,i.jsxs)(s.table,{children:[(0,i.jsx)(s.thead,{children:(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.th,{children:"Capability"}),(0,i.jsx)(s.th,{children:"Admin"}),(0,i.jsx)(s.th,{children:"ReadOnly"})]})}),(0,i.jsxs)(s.tbody,{children:[(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"View investigations, dashboards, and insights"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"Yes"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Use AI Chat"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"Yes"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Provide investigation feedback"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"Yes"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Create and rename clusters"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"Yes"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Delete a cluster (only while status is PENDING)"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Create, update, delete alert rules"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Create, update, delete integrations"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Configure Slack namespace routing"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Invite or delete users"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Change a user's role"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Move a user to a different workspace"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Create, rename, delete workspaces"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]}),(0,i.jsxs)(s.tr,{children:[(0,i.jsx)(s.td,{children:"Rename the organization"}),(0,i.jsx)(s.td,{children:"Yes"}),(0,i.jsx)(s.td,{children:"No"})]})]})]}),"\n",(0,i.jsx)(s.p,{children:"A user cannot change their own role or move their own workspace, regardless of role."}),"\n",(0,i.jsx)(s.h2,{id:"role-descriptions",children:"Role Descriptions"}),"\n",(0,i.jsx)(s.h3,{id:"admin",children:"Admin"}),"\n",(0,i.jsx)(s.p,{children:"Full access, including configuration and management:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Create, rename, and delete workspaces; move users between workspaces"}
1),"\n",(0,i.jsx)(s.li,{children:"Create and rename clusters; delete a cluster while it is still PENDING"}),"\n",(0,i.jsx)(s.li,{children:"Create, update, and delete alert rules and integrations"}),"\n",(0,i.jsx)(s.li,{children:"Configure Slack namespace routing"}),"\n",(0,i.jsx)(s.li,{children:"Invite and delete users, and change user roles"}),"\n",(0,i.jsx)(s.li,{children:"Rename the organization"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Recommended for: team leads, SRE managers, and platform engineers who manage the OpsWorker setup."}),"\n",(0,i.jsx)(s.h3,{id:"readonly",children:"ReadOnly"}),"\n",(0,i.jsx)(s.p,{children:"Read access across the organization, plus the ability to create and rename clusters:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"View investigation results and details"}),"\n",(0,i.jsx)(s.li,{children:"Use AI Chat to query clusters"}),"\n",(0,i.jsx)(s.li,{children:"Provide feedback on investigations"}),"\n",(0,i.jsx)(s.li,{children:"View operational insights and alert data"}),"\n",(0,i.jsx)(s.li,{children:"Create and rename clusters"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Recommended for: on-call engineers, developers, and team members who use OpsWorker for daily operations."}),"\n",(0,i.jsx)(s.h2,{id:"changing-roles",children:"Changing Roles"}),"\n",(0,i.jsx)(s.p,{children:"Only an Admin can change another user's role:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["Go to ",(0,i.jsx)(s.strong,{children:"Account Settings -> User Management"})]}),"\n",(0,i.jsx)(s.li,{children:"Find the user"}),"\n",(0,i.jsx)(s.li,{children:"Change their role"}),"\n",(0,i.jsx)(s.li,{children:"Save"}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.a,{href:"/docs/configuration/users/invite",children:"Invite Users"})," - Add team members"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.a,{href:"/docs/configuration/users/workspaces",children:"Workspace Assignment"})," - Control access scope"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8453(e,s,n){n.d(s,{R:()=>l,x:()=>d});var r=n(6540);const i={},t=r.createContext(i);function l(e){const s=r.useContext(t);return r.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.