How to control what team members and service accounts can do in your Nuon org.
Every identity in your Nuon org — whether a team member or a service account — must be assigned a role. The role determines what that identity can read and change in the org.Roles are org-scoped: a role assigned in one org grants no access in any other org.
API tokens belong to a service account, and OIDC trust policies are each backed by a dedicated service account. The service account carries the role, so a token or an exchanged token acts as that service account, with exactly the access its role grants. Legacy personal API tokens are deprecated: they act as the team member who created them, with all of that person’s access, and keep working only until they are revoked.
An identity holds one role at a time; assigning a new role replaces the old one.
When an identity attempts something its role does not allow, Nuon returns a message describing the access the action requires and the role you currently hold — for example, “this action requires write access to installs in this organization.” Ask an org admin to assign a role that grants the needed access.
The Runner role is reserved for the machine accounts Nuon provisions for your runners. It is assigned automatically and is never user-selectable.The Stack role is reserved for the machine accounts Nuon provisions for install stacks managed with the Terraform module. It is assigned automatically, is never user-selectable, and — unlike the org-wide roles — grants access scoped to a single install. See Stack service accounts for details.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Nuon documentation","description":"Nuon is the BYOC (bring-your-own-cloud) deployment platform for software vendors. Deploy applications — Terraform, Helm, Kubernetes manifests, container images — into customer AWS, Azure, or GCP accounts with no cross-account IAM. Includes runners, operation roles for least-privilege IAM, drift detection, approval workflows, and policies for compliance.","colors":{"primary":"#256A7F","light":"#4CC9F0","dark":"#256A7F"},"logo":{"light":"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/light.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=5fe6681050ff3486a1e940fe9090d74d","dark":"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/dark.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=14deeb0a1b634839fe931f5f9e96af33","href":"/get-started/introduction"},"favicon":"https://mintcdn.com/nuoninc/swdQeSDXQqHcTs6_/favicon.svg?fit=max\u0026auto=format\u0026n=swdQeSDXQqHcTs6_\u0026q=85\u0026s=a4dbde1cc7d4c38f7c91105d64026679","api":{"openapi":"https://api.nuon.co/oapi/v3"},"background":{"color":{"light":"#FAFAFA"}},"navbar":{"links":[{"icon":"github","href":"https://github.com/nuonco/nuon","label":"GitHub"},{"icon":"slack","href":"https://nuon-byoc.slack.com/join/shared_invite/zt-1q323vw9z-C8ztRP~HfWjZx6AXi50VRA#/shared-invite/email","label":"Slack"}],"primary":{"type":"button","label":"Sign up","href":"https://app.nuon.co/"}},"footer":{"socials":{"website":"https://www.nuon.co","x":"https://twitter.com/nuoninc","linkedin":"https://www.linkedin.com/company/nuonco"}},"seo":{"metatags":{"og:site_name":"Nuon Documentation","og:type":"website","twitter:card":"summary_large_image","twitter:site":"@nuonco"},"indexing":"all"},"fonts":{"family":"Inter"},"integrations":{"posthog":{"apiKey":"phc_1NEQAphH0jxCX7opmp4Iyq2O6mu4tM552kMjJz8uKkl","apiHost":"https://us.i.posthog.com","sessionRecording":true},"plausible":{"domain":"docs.nuon.co"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nuoninc","hasAudioNarration":false,"actualSubdomain":"nuoninc","customDomains":["docs.nuon.co"],"gitSource":{"type":"github","owner":"nuonco","repo":"nuon","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4cbc66a33d8c2668416d5","collectionId":"b658b306-542d-4e77-91fd-6393a0ce2cd9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4cbc66a33d8c2668416d5"},"feedback":{"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4ff82f42218ae737ea620","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Guides","count":136},{"language":"default","tag":"Changelog","count":44},{"language":"default","tag":"Reference","count":35},{"language":"default","tag":"Configuration","count":21},{"language":"default","tag":"Updates and Operations","count":18},{"language":"default","tag":"Concepts","count":15},{"language":"default","tag":"Configuration Types","count":14},{"language":"default","tag":"Getting Started","count":13},{"language":"default","tag":"Components","count":11},{"language":"default","tag":"Stacks","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes nuon-um-pulse{50%{opacity:.3}}:root{--light:#4CC9F0}.prose :where(table):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] table)){display:table}.prose :where(table):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] th)){text-align:left}.nuon-label{text-transform:uppercase;font-weight:600;font-size:.6rem;padding:.01rem .25rem;color:#fff;background-color:var(--light);border-radius:10%}.PylonChat-bubbleFrameContainer{bottom:24px!important;right:24px!important}.PylonChat-chatWindowFrameContainer,.PylonChat-popupMessageContainer{bottom:88px!important;right:24px!important}wistia-player[media-id=tsb1nu547c]:not(:defined){background:center/contain no-repeat url(https://fast.wistia.com/embed/medias/tsb1nu547c/swatch);display:block;filter:blur(5px);padding-top:56.25%}.nuon-try-agent{margin:0 0 1.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);font-size:.875rem;color:var(--try-text)}.nuon-flow,.nuon-mcp-picker,.nuon-try-agent{--try-accent:#256a7f;--try-accent-soft:rgba(37, 106, 127, 0.08);--try-border:rgba(37, 106, 127, 0.28);--try-text:#1f2937;--try-muted:#6b7280;--try-bg:linear-gradient(90deg, rgba(76, 201, 240, 0.10), rgba(37, 106, 127, 0.04) 60%, transparent)}.nuon-flow{font-size:.875rem}.dark .nuon-flow,.dark .nuon-mcp-picker,.dark .nuon-try-agent{--try-accent:#4cc9f0;--try-accent-soft:rgba(76, 201, 240, 0.12);--try-border:rgba(76, 201, 240, 0.3);--try-text:#e5e7eb;--try-muted:#9ca3af;--try-bg:linear-gradient(90deg, rgba(76, 201, 240, 0.10), rgba(76, 201, 240, 0.02) 60%, transparent)}.nuon-try-agent-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .5rem .5rem .75rem}.nuon-try-agent-toggle{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0;background:0 0;border:0;padding:0;text-align:left;color:inherit;cursor:pointer}.nuon-try-agent-badge{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0;padding:.15rem .5rem;border-radius:999px;background:var(--try-accent-soft);color:var(--try-accent);font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.nuon-try-agent-title{min-width:0;line-height:1.3}.nuon-try-agent-chevron{flex-shrink:0;color:var(--try-muted);transition:transform .15s}.nuon-try-agent[data-open=true] .nuon-try-agent-chevron{transform:rotate(180deg)}.nuon-try-agent-actions{display:flex;gap:.375rem;flex-shrink:0}.nuon-try-agent-btn{padding:.3rem .65rem;border:1px solid var(--try-border);border-radius:8px;background:0 0;color:var(--try-text);font-size:.8rem;font-weight:500;line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer}.nuon-try-agent-btn:hover{background:var(--try-accent-soft)}.nuon-try-agent-primary{border-color:var(--try-accent);background:var(--try-accent);color:#fff}.dark .nuon-try-agent-primary{color:#0b1d24}.nuon-try-agent-primary:hover{background:var(--try-accent);opacity:.9}.nuon-try-agent-body{padding:0 .75rem .75rem}.nuon-try-agent-prompt{margin:0 0 .5rem;padding:.625rem .75rem;border-radius:8px;background:var(--try-accent-soft);font-size:.8rem;line-height:1.5;white-space:pre-wrap}.nuon-try-agent-note{margin:0;color:var(--try-muted);font-size:.78rem;line-height:1.5}.nuon-try-agent-note a{display:block;margin-top:.25rem;font-weight:500;color:var(--try-accent);text-decoration:underline}.nuon-try-agent-note code{font-size:.75rem}@media (max-width:640px){.nuon-try-agent-row{flex-wrap:wrap}.nuon-try-agent-actions{width:100%}.nuon-try-agent-btn{flex:1;text-align:center}}.nuon-try-agent+.nuon-try-agent{margin-top:-1.125rem}.nuon-mcp-picker{margin:1rem 0 2rem;padding:.75rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);color:var(--try-text);font-size:.875rem}.nuon-mcp-picker-tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.75rem}.nuon-mcp-picker-tab{padding:.3rem .75rem;border:1px solid transparent;border-radius:999px;background:0 0;color:var(--try-muted);font-size:.8rem;font-weight:500;cursor:pointer}.nuon-mcp-picker-tab:hover{color:var(--try-text)}.nuon-mcp-picker-tab[aria-selected=true]{border-color:var(--try-border);background:var(--try-accent-soft);color:var(--try-accent)}.nuon-mcp-picker-block+.nuon-mcp-picker-block{margin-top:.625rem}.nuon-mcp-picker-caption{margin:0 0 .3rem;color:var(--try-muted);font-size:.78rem}.nuon-mcp-picker-code{position:relative;border-radius:8px;background:#0f1d22}.nuon-mcp-picker-code pre{margin:0;padding:.75rem 5rem .75rem .875rem;white-space:pre-wrap;word-break:break-word;color:#e5e7eb;font-size:.8rem;line-height:1.6}.dark .nuon-mcp-picker-code{background:rgba(0,0,0,.45)}.nuon-mcp-picker-copy{position:absolute;top:.5rem;right:.5rem}.nuon-mcp-picker-foot{margin:.625rem 0 0;font-size:.78rem}.nuon-mcp-picker-foot a{color:var(--try-accent);font-weight:500;text-decoration:none}.nuon-mcp-picker-foot a:hover{text-decoration:underline}.nuon-flow{margin:1.5rem 0 2rem;padding:1rem 1.125rem;border:1px solid var(--try-border);border-radius:12px;background:var(--try-bg);color:var(--try-text)}.nuon-flow-track{margin:0;padding:0;list-style:none}.nuon-flow-step{position:relative;margin:0;padding:0 0 .875rem}.nuon-flow-step:last-child{padding-bottom:0}.nuon-flow-step:not(:last-child)::before{content:\"\";position:absolute;left:.6875rem;top:1.5rem;bottom:0;border-left:1.5px solid var(--try-border)}.nuon-flow-group{display:block;margin:.25rem 0 .5rem 2.25rem;color:var(--try-accent);font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.nuon-flow-step:first-child .nuon-flow-group{margin-top:0}.nuon-flow-row{display:flex;gap:.75rem;align-items:flex-start}.nuon-flow-num{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.375rem;height:1.375rem;border-radius:999px;background:var(--try-accent);color:#fff;font-size:.7rem;font-weight:600}.dark .nuon-flow-num{color:#0b1d24}.nuon-flow-text{display:flex;flex-direction:column;gap:.1rem;min-width:0;padding-top:.1rem;line-height:1.35}.nuon-flow-title{font-size:.9rem;font-weight:600}.nuon-flow-title a{color:inherit;text-decoration:none;border-bottom:1px solid var(--try-border)}.nuon-flow-title a:hover{color:var(--try-accent);border-bottom-color:var(--try-accent)}.nuon-flow-detail,.nuon-flow-loop{color:var(--try-muted);font-size:.82rem}.nuon-flow-loop{display:flex;gap:.5rem;align-items:center;margin:.875rem 0 0;padding-top:.75rem;border-top:1px dashed var(--try-border);font-size:.8rem}.nuon-flow-loop svg{flex-shrink:0;color:var(--try-accent)}.nuon-cmap{--cmap-accent:#256a7f;--cmap-border:rgba(37, 106, 127, 0.28);--cmap-text:#1f2937;--cmap-muted:#6b7280;--cmap-bg:rgba(37, 106, 127, 0.04);--cmap-bg-strong:linear-gradient(160deg, rgba(76, 201, 240, 0.14), rgba(37, 106, 127, 0.06));display:grid;grid-template-columns:repeat(var(--cmap-cols, 2),minmax(0,1fr));gap:.75rem;margin:1.25rem 0 1.75rem;color:var(--cmap-text)}.dark .nuon-cmap{--cmap-accent:#4cc9f0;--cmap-border:rgba(76, 201, 240, 0.3);--cmap-text:#e5e7eb;--cmap-muted:#9ca3af;--cmap-bg:rgba(76, 201, 240, 0.04);--cmap-bg-strong:linear-gradient(160deg, rgba(76, 201, 240, 0.14), rgba(76, 201, 240, 0.04))}.nuon-cmap[data-cols=\"1\"]{--cmap-cols:1}.nuon-cmap[data-cols=\"3\"]{--cmap-cols:3}.nuon-cmap[data-arrows=true]{gap:0}.nuon-cmap-cell{display:flex;align-items:stretch;min-width:0}.nuon-cmap-arrow{display:flex;align-items:center;padding:0 .5rem;color:var(--cmap-accent)}.nuon-cmap-col{flex:1;min-width:0;padding:1rem 1.125rem;border:1px solid var(--cmap-border);border-radius:12px;background:var(--cmap-bg)}.nuon-cmap-col[data-tone=nuon]{background:var(--cmap-bg-strong)}.nuon-cmap-title{font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--cmap-accent)}.nuon-cmap-caption{margin-top:.25rem;font-size:.8125rem;color:var(--cmap-muted)}.nuon-cmap-list{list-style:none;margin:.875rem 0 0;padding:0}.nuon-cmap-list li{padding:.35rem 0;font-size:.9rem;line-height:1.35}.nuon-cmap-list a{font-weight:600;color:var(--cmap-text);text-decoration:none;border-bottom:1px solid var(--cmap-border)}.nuon-cmap-list a:hover{color:var(--cmap-accent);border-bottom-color:var(--cmap-accent)}.nuon-cmap-note{display:block;margin-top:.15rem;font-size:.8125rem;color:var(--cmap-muted)}@media (max-width:720px){.nuon-cmap,.nuon-cmap[data-cols=\"3\"]{grid-template-columns:minmax(0,1fr)}.nuon-cmap-cell{flex-direction:column}.nuon-cmap-arrow{justify-content:center;padding:.35rem 0;transform:rotate(90deg)}}.sidebar-group-header:has(+.sidebar-group a[href^=\"/guides/agents/\"]){display:none}.nuon-tl{--tl-accent:#256a7f;--tl-text:#1f2937;--tl-muted:#6b7280;--tl-setup-bg:rgba(107, 114, 128, 0.1);--tl-install-bg:rgba(37, 106, 127, 0.1);--tl-operate-bg:linear-gradient(90deg, rgba(37, 106, 127, 0.16), rgba(76, 201, 240, 0.22));margin:1.25rem 0 1.75rem;color:var(--tl-text)}.dark .nuon-tl{--tl-accent:#4cc9f0;--tl-text:#e5e7eb;--tl-muted:#9ca3af;--tl-setup-bg:rgba(156, 163, 175, 0.12);--tl-install-bg:rgba(76, 201, 240, 0.08);--tl-operate-bg:linear-gradient(90deg, rgba(76, 201, 240, 0.12), rgba(76, 201, 240, 0.24))}.nuon-tl-bar,.nuon-tl-notes{display:grid;gap:.375rem}.nuon-tl-seg{display:flex;flex-direction:column;gap:.15rem;padding:.75rem .875rem;border-radius:10px;background:var(--tl-setup-bg)}.nuon-tl-seg[data-tone=install]{background:var(--tl-install-bg)}.nuon-tl-seg[data-tone=operate]{background:var(--tl-operate-bg)}.nuon-tl-when{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tl-muted)}.nuon-tl-seg[data-tone=operate] .nuon-tl-when{color:var(--tl-accent)}.nuon-tl-what{font-size:.9rem;font-weight:600;line-height:1.3}.nuon-tl-notes{margin-top:.4rem;font-size:.8rem;line-height:1.4;color:var(--tl-muted)}.nuon-tl-notes span{padding:0 .875rem}@media (max-width:720px){.nuon-tl-bar,.nuon-tl-notes{grid-template-columns:1fr 1fr 1fr!important}}.nuon-flow[data-horizontal=true] .nuon-flow-track{display:flex;align-items:center}.nuon-flow[data-horizontal=true] .nuon-flow-step{flex:1;display:flex;align-items:center;padding:0}.nuon-flow[data-horizontal=true] .nuon-flow-step:last-child{flex:0 0 auto}.nuon-flow[data-horizontal=true] .nuon-flow-step:not(:last-child)::before{content:none}.nuon-flow[data-horizontal=true] .nuon-flow-step:not(:last-child)::after{content:\"\";flex:1;margin:0 .75rem;border-top:1.5px solid var(--try-border)}@media (max-width:720px){.nuon-flow[data-horizontal=true] .nuon-flow-track{flex-direction:column;align-items:flex-start;gap:.75rem}.nuon-flow[data-horizontal=true] .nuon-flow-step:not(:last-child)::after{content:none}}.nuon-infra{--in-accent:#256a7f;--in-border:rgba(37, 106, 127, 0.3);--in-strong:rgba(37, 106, 127, 0.7);--in-text:#1f2937;--in-muted:#6b7280;--in-cp-bg:rgba(107, 114, 128, 0.08);--in-account-bg:rgba(37, 106, 127, 0.04);--in-box-bg:#ffffff;--in-inner-bg:rgba(37, 106, 127, 0.1);margin:1.25rem 0 1.75rem;color:var(--in-text);font-size:.875rem}.dark .nuon-infra{--in-accent:#4cc9f0;--in-border:rgba(76, 201, 240, 0.3);--in-strong:rgba(76, 201, 240, 0.7);--in-text:#e5e7eb;--in-muted:#9ca3af;--in-cp-bg:rgba(156, 163, 175, 0.1);--in-account-bg:rgba(76, 201, 240, 0.04);--in-box-bg:rgba(15, 23, 42, 0.6);--in-inner-bg:rgba(76, 201, 240, 0.12)}.nuon-infra-top{display:grid;grid-template-columns:minmax(0,1fr) 4rem minmax(0,1.4fr);gap:.75rem;padding:0 1rem}.nuon-infra-top-cell{display:flex;flex-direction:column;align-items:center}.nuon-infra-cp{white-space:nowrap;width:fit-content;padding:.5rem 1rem;border:1px dashed var(--in-border);border-radius:10px;background:var(--in-cp-bg);color:var(--in-muted);font-weight:600}.nuon-infra-link{display:flex;flex-direction:column;align-items:center;gap:.15rem}.nuon-infra-line{height:1.25rem;border-left:1.5px dashed var(--in-accent)}.nuon-infra-tag{white-space:nowrap;color:var(--in-accent);font-size:.75rem}.nuon-infra-account{padding:.875rem 1rem 1rem;border:1px solid var(--in-border);border-radius:12px;background:var(--in-account-bg)}.nuon-infra-account-head{margin-bottom:.875rem;text-align:right;color:var(--in-muted);font-weight:600}.nuon-infra-account-head span{margin-left:.4rem;font-weight:400}.nuon-infra-row{--in-runner-top:3.55rem;display:grid;grid-template-columns:minmax(0,1fr) 4rem minmax(0,1.4fr);align-items:stretch;gap:.75rem}.nuon-infra-concept{display:flex;flex-direction:column;gap:.5rem;padding:.875rem 1rem;border:1.5px solid var(--in-strong);border-radius:10px;background:var(--in-box-bg)}.nuon-infra-row>.nuon-infra-concept:first-child{position:relative}.nuon-infra-row>.nuon-infra-concept:first-child::before{content:\"\";position:absolute;left:50%;top:-4.4rem;height:calc(4.4rem + var(--in-runner-top));border-left:1.5px dashed var(--in-accent);z-index:0}.nuon-infra-inner{position:relative;z-index:1;box-sizing:border-box;height:3.25rem;justify-content:center;margin-top:.75rem;background:var(--in-inner-bg);align-items:center}.nuon-infra-name{width:fit-content;font-size:1.05rem;font-weight:700;color:var(--in-text);text-decoration:none;border-bottom:1px solid var(--in-border)}.nuon-infra-comps-title:hover,.nuon-infra-name:hover{color:var(--in-accent)}.nuon-infra-note{color:var(--in-muted);font-size:.8rem}.nuon-infra-components{margin-top:auto;padding:.6rem .7rem;border:1px solid var(--in-border);border-radius:8px;background:var(--in-inner-bg)}.nuon-infra-comps-title{white-space:nowrap;font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--in-accent);text-decoration:none}.nuon-infra-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.5rem}.nuon-infra-eg{flex-basis:100%;font-size:.75rem;font-style:italic;color:var(--in-muted)}.nuon-infra-chip{padding:.15rem .5rem;border:1px dashed var(--in-border);border-radius:6px;font-size:.78rem;color:var(--in-muted)}.nuon-infra-arrow{display:flex;flex-direction:column;justify-content:flex-start;padding-top:calc(var(--in-runner-top) + .35rem);align-items:center;color:var(--in-accent);font-size:.72rem}@media (max-width:720px){.nuon-infra-row{grid-template-columns:minmax(0,1fr)}.nuon-infra-arrow{justify-content:center}.nuon-infra-arrow svg{transform:rotate(90deg)}}.nuon-ab{margin:1rem 0 1.75rem}.nuon-ab-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1rem}.nuon-ab .nuon-infra-concept{gap:.75rem;padding:1rem 1.1rem 1.1rem}.nuon-ab-head{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.nuon-ab-kicker{font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--in-accent);text-decoration:none}.nuon-ab-kicker-muted{color:var(--in-muted)}.nuon-ab-app{font-weight:700;font-size:1rem}.nuon-ab-branch{display:flex;flex-direction:column;gap:.5rem;padding:.65rem .75rem;border:1px solid var(--in-border);border-radius:8px;background:var(--in-inner-bg)}.nuon-ab-branch-name{font-family:var(--font-mono, ui-monospace, monospace);font-size:.8rem}.nuon-ab-group-wrap,.nuon-ab-groups{display:flex;align-items:center;gap:.35rem}.nuon-ab-group{padding:.15rem .5rem;border:1px dashed var(--in-strong);border-radius:6px;background:var(--in-box-bg);font-size:.78rem}.nuon-ab-arrow,.nuon-pd a.nuon-ab-group:hover,.nuon-pd a.nuon-infra-chip:hover{color:var(--in-accent)}@media (max-width:720px){.nuon-ab-row{grid-template-columns:minmax(0,1fr)}}.nuon-pd-row{display:grid;grid-template-columns:minmax(0,1fr) 6.5rem minmax(0,1fr);align-items:stretch;gap:.75rem;position:relative}.nuon-pd-cp{display:flex;align-items:center;gap:.45rem}.nuon-pd-cp span{margin-left:0;color:var(--in-text);font-weight:600}.nuon-pd-link,.nuon-pd-link-label{position:absolute;color:var(--in-muted)}.nuon-pd-link{inset:0;overflow:visible;pointer-events:none;z-index:2}.nuon-pd-link-label{transform:translateY(4px);line-height:1.2;white-space:nowrap;font-size:.7rem}.nuon-pd .nuon-pd-flows{justify-content:flex-end;padding-bottom:6rem}.nuon-pd-flows .nuon-pd-flow-back{display:none}.nuon-pd-zone{display:flex;flex-direction:column;gap:.75rem;min-width:0;padding:.875rem;border-radius:12px}.nuon-pd-yours{border:1px dashed var(--in-border);background:var(--in-cp-bg)}.nuon-pd-theirs{border:1px solid var(--in-border);background:var(--in-account-bg)}.nuon-pd-zlabel{color:var(--in-muted);font-weight:600}.nuon-pd-logo{display:block;height:1.6rem;width:auto;color:var(--in-text)}.nuon-pd-runner{display:flex;align-items:center;gap:.6rem;width:fit-content;margin-top:.4rem;padding:.45rem .8rem .45rem .6rem;border-radius:8px;background:var(--in-text);color:var(--in-box-bg);text-decoration:none;box-shadow:0 0 0 3px var(--in-border)}.dark .nuon-pd-runner{color:#0b1117}.nuon-pd-runner-mark{height:1.35rem;width:auto;flex:none}.nuon-pd-runner-text{display:flex;flex-direction:column;line-height:1.2}.nuon-pd-runner-name{font-weight:700;font-size:.85rem}.nuon-pd-runner-note{font-size:.68rem;opacity:.75}.nuon-pd-zlabel span{margin-left:.3rem;font-weight:400}.nuon-pd .nuon-infra-concept{gap:.6rem}.nuon-pd .nuon-infra-components{margin-top:0}.nuon-pd .nuon-infra-chips{margin-top:.35rem}.nuon-pd-template{flex:1;border-width:2px}.nuon-pd-template-name{margin-top:-.25rem;font-size:1.15rem;font-weight:700}.nuon-pd-template-sub{margin-top:-.5rem;font-size:.82rem;color:var(--in-muted)}.nuon-pd-where{margin-left:auto;font-size:.75rem;font-style:italic;color:var(--in-muted)}.nuon-pd-faded{opacity:.6}.nuon-pd a.nuon-ab-group,.nuon-pd a.nuon-infra-chip{color:var(--in-text);text-decoration:none}.nuon-pd-flow,.nuon-pd-flows{display:flex;flex-direction:column}.nuon-pd-flows{justify-content:center;gap:1.75rem;color:var(--in-accent);font-size:.72rem;text-align:center}.nuon-pd-flow{align-items:center;gap:.15rem}.nuon-pd-flow-back{color:var(--in-muted)}.nuon-pd-flow-back svg{transform:scaleX(-1)}@media (max-width:720px){.nuon-pd-row{grid-template-columns:minmax(0,1fr)}.nuon-pd-flows .nuon-pd-flow-back{display:flex}.nuon-pd .nuon-pd-flows{justify-content:center;padding-bottom:0}.nuon-pd-flows{flex-direction:row;justify-content:center}.nuon-pd-flow svg{transform:rotate(90deg)}.nuon-pd-flow-back svg{transform:rotate(-90deg)}}.nuon-pt{margin-top:.75rem}.nuon-pt-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.75rem;font-size:.75rem;color:var(--in-muted)}.nuon-pt-legend i{display:inline-block;width:10px;height:10px;margin-right:.4rem;border-radius:3px;vertical-align:-1px}.nuon-pt-key-repo{border:1px dashed var(--in-border);background:var(--in-cp-bg)}.nuon-pt-key-cust{border:1px solid var(--in-strong);background:var(--in-inner-bg)}.nuon-pt-scroll{overflow-x:auto}.nuon-pt-tree{--pt-gap:1.75rem;--pt-w1:8.5rem;--pt-w2:11.5rem;min-width:44rem}.nuon-pt-heads{display:flex;margin-bottom:.5rem}.nuon-pt-h1{flex:0 0 calc(var(--pt-w1) + var(--pt-gap))}.nuon-pt-h2{flex:0 0 calc(var(--pt-w2) + var(--pt-gap))}.nuon-pt-item{display:flex;align-items:center}.nuon-pt-card{display:flex;flex-direction:column;flex:none;box-sizing:border-box;padding:.4rem .65rem;border:1px dashed var(--in-border);border-radius:8px;background:var(--in-cp-bg);font-size:.82rem}.nuon-pt-l1>.nuon-pt-card{width:var(--pt-w1)}.nuon-pt-l2>.nuon-pt-card,.nuon-pt-l3>.nuon-pt-card{width:var(--pt-w2)}.nuon-pt-name{font-weight:600}.nuon-pt-file{font-family:var(--font-mono, ui-monospace, monospace);font-size:.7rem;color:var(--in-muted)}.nuon-pt-default,.nuon-pt-num{color:var(--in-accent);font-size:.65rem}.nuon-pt-num{display:inline-grid;place-items:center;width:1.05rem;height:1.05rem;margin-right:.35rem;border:1px solid var(--in-strong);border-radius:50%;font-weight:700}.nuon-pt-default{margin-left:.35rem;padding:0 .3rem;border:1px solid var(--in-border);border-radius:4px;font-weight:500}.nuon-pt-children{position:relative;display:flex;flex-direction:column;gap:.75rem;padding-left:var(--pt-gap)}.nuon-pt-children::before,.nuon-pt-children>.nuon-pt-item::before{content:\"\";position:absolute;top:50%;width:calc(var(--pt-gap)/2);border-top:1.5px solid var(--in-border)}.nuon-pt-children::before{left:0}.nuon-pt-children>.nuon-pt-item{position:relative}.nuon-pt-children>.nuon-pt-item::before{left:calc(var(--pt-gap)/-2)}.nuon-pt-children>.nuon-pt-item::after{content:\"\";position:absolute;left:calc(var(--pt-gap)/-2);top:-.375rem;bottom:-.375rem;border-left:1.5px solid var(--in-border)}.nuon-pt-children>.nuon-pt-item:first-child::after{top:50%}.nuon-pt-children>.nuon-pt-item:last-child::after{bottom:50%}.nuon-pt-children>.nuon-pt-item:only-child::after{content:none}.nuon-pt-installs{display:flex;flex-wrap:wrap;gap:.4rem}.nuon-pt-install{padding:.3rem .6rem;border:1px solid var(--in-strong);border-radius:8px;background:var(--in-inner-bg);font-family:var(--font-mono, ui-monospace, monospace);font-size:.78rem}.nuon-um{position:relative;overflow:hidden;box-shadow:-14px 0 22px -16px rgba(76,201,240,.55),14px 0 22px -16px rgba(76,201,240,.55);border:1px solid var(--in-border);border-radius:12px;background:var(--in-box-bg)}.nuon-um-bar{display:flex;align-items:center;gap:.35rem;padding:.55rem .8rem;border-bottom:1px solid var(--in-border);background:var(--in-cp-bg)}.nuon-um-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--in-border)}.nuon-um-url{margin-left:.6rem;padding:.1rem .6rem;border-radius:6px;background:var(--in-box-bg);color:var(--in-muted);font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nuon-um-body{display:grid;grid-template-columns:10rem minmax(0,1fr)}.nuon-um-side{display:flex;flex-direction:column;gap:.15rem;padding:1rem .75rem;border-right:1px solid var(--in-border);color:var(--in-muted);font-size:.8rem}.nuon-um-side span{padding:.25rem .5rem;border-radius:6px}.nuon-um-brand{margin-bottom:.6rem;padding:0 .5rem;color:var(--in-text);font-weight:700}.nuon-um-side .nuon-um-on{background:var(--in-inner-bg);color:var(--in-text);font-weight:600}.nuon-um-main{display:flex;flex-direction:column;gap:.6rem;padding:1.25rem 1.5rem 1.5rem;min-width:0}.nuon-um-title{font-size:1.1rem;font-weight:700}.nuon-um-sub{margin-top:-.4rem;color:var(--in-muted);font-size:.82rem}.nuon-um-label{margin-top:.4rem;font-size:.8rem;font-weight:600}.nuon-um-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.nuon-um-option{display:flex;gap:.6rem;padding:.7rem .8rem;border:1px solid var(--in-border);border-radius:10px;font-size:.85rem}.nuon-um-option small{display:block;color:var(--in-muted);font-size:.75rem}.nuon-um-radio{flex:none;width:.9rem;height:.9rem;margin-top:.15rem;border:1.5px solid var(--in-strong);border-radius:50%}.nuon-um-picked{border:1.5px solid var(--in-accent);background:var(--in-inner-bg)}.nuon-um-picked .nuon-um-radio{border-color:var(--in-accent);box-shadow:inset 0 0 0 3px var(--in-box-bg);background:var(--in-accent)}.nuon-um-clouds{display:flex;flex-wrap:wrap;gap:.4rem}.nuon-um-cloud{padding:.25rem .7rem;border:1px solid var(--in-border);border-radius:999px;color:var(--in-muted);font-size:.78rem}.nuon-um-cloud-on{border-color:var(--in-accent);color:var(--in-accent);font-weight:600}.nuon-um-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.4rem}.nuon-um-button{padding:.45rem .9rem;border-radius:8px;background:var(--in-text);color:var(--in-box-bg);font-size:.82rem;font-weight:600}.dark .nuon-um-button{color:#0b1117}.nuon-um-hint{color:var(--in-muted);font-size:.75rem}@media (max-width:720px){.nuon-um-body,.nuon-um-options{grid-template-columns:minmax(0,1fr)}.nuon-um-side{display:none}}.nuon-um-field{display:flex;flex-direction:column;gap:.3rem;max-width:22rem}.nuon-um-field .nuon-um-label{margin-top:0}.nuon-um-box,.nuon-um-input{border:1px solid var(--in-border)}.nuon-um-input{padding:.4rem .65rem;border-radius:8px;background:var(--in-box-bg);font-size:.82rem}.nuon-um-box{padding:.75rem .9rem;border-radius:10px;background:var(--in-inner-bg)}.nuon-um-box .nuon-um-label{margin:0 0 .35rem}.nuon-um-diff,.nuon-um-list{margin:0;padding:0;list-style:none;font-size:.82rem}.nuon-um-list li{position:relative;padding-left:.9rem}.nuon-um-list li::before{content:\"\";position:absolute;left:0;top:.55rem;width:.35rem;height:.35rem;border-radius:50%;background:var(--in-accent)}.nuon-um-diff li{display:flex;gap:.5rem;font-family:var(--font-mono, ui-monospace, monospace);font-size:.78rem}.nuon-um-add,.nuon-um-chg{color:#1a7f37;font-weight:700}.nuon-um-chg{color:#9a6700}.dark .nuon-um-add{color:#3fb950}.dark .nuon-um-chg{color:#d29922}.nuon-um-status,.nuon-um-steps li{display:flex;align-items:center;color:var(--in-muted)}.nuon-um-status{gap:.4rem;font-size:.78rem}.nuon-um-pulse{width:.5rem;height:.5rem;border-radius:50%;background:var(--in-accent);animation:nuon-um-pulse 1.4s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.nuon-um-pulse{animation:none}}.nuon-um-ghost{border:1px solid var(--in-border);background:0 0}.dark .nuon-um-ghost,.nuon-um-ghost,.nuon-um-steps .nuon-um-done{color:var(--in-text)}.nuon-um-steps{display:flex;flex-direction:column;gap:.55rem;margin:.2rem 0 0;padding:0;list-style:none;font-size:.85rem}.nuon-um-steps li{gap:.6rem}.nuon-um-steps li::before{content:\"\";flex:none;width:1rem;height:1rem;border:1.5px solid var(--in-border);border-radius:50%;box-sizing:border-box}.nuon-um-steps .nuon-um-done::before{border-color:var(--in-accent);background:var(--in-accent);box-shadow:inset 0 0 0 3px var(--in-box-bg)}.nuon-um-steps .nuon-um-now{color:var(--in-text);font-weight:600}.nuon-um-steps .nuon-um-now::before{border-color:var(--in-accent);border-right-color:transparent}.nuon-um-steps small{color:var(--in-muted);font-weight:400}.nuon-um::before{content:\"\";position:absolute;inset:0 0 auto;height:2px;background:#4cc9f0}.nuon-um-tag{flex:none;margin-left:auto;padding:.1rem .55rem;border:1px solid rgba(76,201,240,.64);border-radius:999px;background:#f2fcff;color:#2b7894;font-size:.7rem;font-weight:500}.dark .nuon-um-tag{background:rgba(76,201,240,.16);color:#4cc9f0}.nuon-um-picker .nuon-um{margin-top:0;margin-bottom:.75rem}.nuon-um-pickrow{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.5rem}.nuon-um-picklabel{color:#828282;font-size:.75rem;font-weight:500}.nuon-um-picker{margin:1.25rem 0 1.75rem}.nuon-um-tabs{display:inline-flex;gap:.25rem;padding:.25rem;border:1px solid #e0e0e0;border-radius:999px}.dark .nuon-um-tabs{border-color:#1f1f20}.nuon-um-tab{padding:.3rem .9rem;border:0;border-radius:999px;background:0 0;color:inherit;font:inherit;font-size:.82rem;font-weight:500;cursor:pointer;opacity:.7}.nuon-um-tab:hover{opacity:1}.nuon-um-tab:focus-visible{outline:2px solid rgba(76,201,240,.64);outline-offset:2px}.nuon-um-tab-on{background:#f2fcff;color:#2b7894;box-shadow:inset 0 0 0 1px rgba(76,201,240,.64);opacity:1}.dark .nuon-um-tab-on{background:rgba(76,201,240,.16);color:#4cc9f0}.nuon-um-notes{display:flex;flex-direction:column;gap:.4rem;margin:0;padding:.75rem .9rem;border:1px solid var(--in-border);border-radius:10px;font-size:.82rem}.nuon-um-notes>div{display:grid;grid-template-columns:10rem minmax(0,1fr);gap:.75rem}.nuon-um-notes-k{color:var(--in-muted)}.nuon-um-notes code{font-size:.78rem}.nuon-um-notes a{color:var(--in-accent);font-weight:600;text-decoration:none}@media (max-width:720px){.nuon-um-notes>div{grid-template-columns:minmax(0,1fr);gap:.1rem}}"}],"page":{"pagePath":"concepts/access-control","slug":"/concepts/access-control","pageMetadata":{"title":"Access Control","description":"How to control what team members and service accounts can do in your Nuon org.","keywords":["roles","RBAC","access control","permissions","org admin","read-only","team","service account","API token","OIDC","stack","runner"],"href":"/concepts/access-control"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to control what team members and service accounts can do in your Nuon org.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Every identity in your Nuon org — whether a team member or a `,_jsx(_components.a,{href:`/concepts/service-accounts`,children:`service account`}),` — must be assigned a `,_jsx(_components.strong,{children:`role`}),`. The role determines what that identity can read and change in the org.`]}),`\n`,_jsx(_components.p,{children:`Roles are org-scoped: a role assigned in one org grants no access in any other org.`}),`\n`,_jsx(Heading,{level:`2`,id:`available-roles`,children:`Available roles`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Role`}),_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Grants`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Admin`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`org_admin`})}),_jsx(_components.td,{children:`Full access to the org and everything in it, including team and credential management.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Read-only`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`org_read_only`})}),_jsx(_components.td,{children:`Read-only access to everything in the org; cannot make changes.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`assigning-roles`,children:`Assigning roles`}),`\n`,_jsx(_components.p,{children:`The same role set applies everywhere an identity is created. You choose a role when you:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/team-management`,children:`Invite a team member`}),` — or change an existing member’s role`]}),`\n`,_jsxs(_components.li,{children:[`Create a `,_jsx(_components.a,{href:`/concepts/service-accounts`,children:`service account`})]}),`\n`,_jsxs(_components.li,{children:[`Create an `,_jsx(_components.a,{href:`/concepts/oidc-federation`,children:`OIDC trust policy`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/concepts/api-tokens`,children:`API tokens`}),` belong to a `,_jsx(_components.a,{href:`/concepts/service-accounts`,children:`service account`}),`, and `,_jsx(_components.a,{href:`/concepts/oidc-federation`,children:`OIDC trust policies`}),` are each backed by a dedicated service account. The service account carries the role, so a token or an exchanged token acts as that service account, with exactly the access its role grants. Legacy personal API tokens are deprecated: they act as the team member who created them, with all of that person’s access, and keep working only until they are revoked.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`An identity holds one role at a time; assigning a new role replaces the old one.`})}),`\n`,_jsx(Heading,{level:`2`,id:`permission-errors`,children:`Permission errors`}),`\n`,_jsx(_components.p,{children:`When an identity attempts something its role does not allow, Nuon returns a message describing the access the action requires and the role you currently hold — for example, “this action requires write access to installs in this organization.” Ask an org admin to assign a role that grants the needed access.`}),`\n`,_jsx(Heading,{level:`2`,id:`reserved-roles`,children:`Reserved roles`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Runner`}),` role is reserved for the machine accounts Nuon provisions for your runners. It is assigned automatically and is never user-selectable.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Stack`}),` role is reserved for the machine accounts Nuon provisions for install stacks managed with the Terraform module. It is assigned automatically, is never user-selectable, and — unlike the org-wide roles — grants access scoped to a single install. See `,_jsx(_components.a,{href:`/concepts/service-accounts#stack-service-accounts`,children:`Stack service accounts`}),` for details.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Access Control","description":"How to control what team members and service accounts can do in your Nuon org.","keywords":["roles","RBAC","access control","permissions","org admin","read-only","team","service account","API token","OIDC","stack","runner"],"href":"/concepts/access-control"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Available roles","slug":"available-roles","depth":2,"children":[]},{"title":"Assigning roles","slug":"assigning-roles","depth":2,"children":[]},{"title":"Permission errors","slug":"permission-errors","depth":2,"children":[]},{"title":"Reserved roles","slug":"reserved-roles","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/nuoninc/c0c6086750944f2b/scripts.js","/_mintlify/custom/nuoninc/ce6ed4285b1e45a3/pylon.js","/_mintlify/custom/nuoninc/d11308f639707293/wistia.js"],"subdomain":"nuoninc","siteName":"Nuon documentation","title":"Access Control - Nuon documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T20:21:48.250Z","originalFileLocation":"concepts/access-control.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to control what team members and service accounts can do in your Nuon org.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Nuon documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Access Control - Nuon documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to control what team members and service accounts can do in your Nuon org.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Nuon Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.nuon.co/concepts/access-control\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nuoninc.mintlify.app/_mintlify/api/og/v2?division=Access+and+Permission\u0026amp;title=Access+Control\u0026amp;description=How+to+control+what+team+members+and+service+accounts+can+do+in+your+Nuon+org.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=66d0ddd7cb62d914d2746cd21a0b9439ee0977c4724f2d7faa8eda1f8a826705\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Access Control - Nuon documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to control what team members and service accounts can do in your Nuon org.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nuoninc.mintlify.app/_mintlify/api/og/v2?division=Access+and+Permission\u0026amp;title=Access+Control\u0026amp;description=How+to+control+what+team+members+and+service+accounts+can+do+in+your+Nuon+org.\u0026amp;theme=8d50655c64fafbf225a00426\u0026amp;signature=66d0ddd7cb62d914d2746cd21a0b9439ee0977c4724f2d7faa8eda1f8a826705\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/nuoninc/WqJ7p4TuQl442aEn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Nuon documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#256A7F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.nuon.co/concepts/access-control\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/access-control.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.nuon.co/#organization\",\"name\":\"Nuon documentation\",\"url\":\"https://docs.nuon.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/nuoninc/RZoWFEpvSvd8sGqW/logo/light.svg?fit=max\u0026auto=format\u0026n=RZoWFEpvSvd8sGqW\u0026q=85\u0026s=5fe6681050ff3486a1e940fe9090d74d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.nuon.co#website\",\"name\":\"Nuon documentation\",\"url\":\"https://docs.nuon.co\",\"publisher\":{\"@id\":\"https://docs.nuon.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.nuon.co/concepts/access-control#webpage\",\"url\":\"https://docs.nuon.co/concepts/access-control\",\"name\":\"Access Control\",\"description\":\"How to control what team members and service accounts can do in your Nuon org.\",\"dateModified\":\"2026-10-28T20:21:48.250Z\",\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.nuon.co/concepts/access-control#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.nuon.co/concepts/access-control#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.nuon.co/guides/building-nuon-apps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access and Permission\",\"item\":\"https://docs.nuon.co/guides/team-management\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Access Control\",\"item\":\"https://docs.nuon.co/concepts/access-control\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.nuon.co/concepts/access-control#article\",\"headline\":\"Access Control\",\"name\":\"Access Control\",\"description\":\"How to control what team members and service accounts can do in your Nuon org.\",\"url\":\"https://docs.nuon.co/concepts/access-control\",\"mainEntityOfPage\":{\"@id\":\"https://docs.nuon.co/concepts/access-control#webpage\"},\"dateModified\":\"2026-10-28T20:21:48.250Z\",\"keywords\":\"roles, RBAC, access control, permissions, org admin, read-only, team, service account, API token, OIDC, stack, runner\",\"publisher\":{\"@id\":\"https://docs.nuon.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.nuon.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Nuon documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Nuon documentation","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Getting Started","icon":"rocket","pages":[{"title":"Getting Started","href":"/get-started/introduction"}]},{"tab":"Concepts","icon":"lightbulb","pages":[{"title":"Concepts","href":"/concepts/overview"}]},{"tab":"Guides","icon":"screwdriver-wrench","groups":[{"group":"Guides","pages":[{"group":"Apps","boost":3,"expanded":true,"pages":[{"title":"Building Nuon Apps","href":"/guides/building-nuon-apps"},{"title":"Multiple App Configurations","href":"/guides/multiple-app-configurations"},{"title":"Retaining Resources on Teardown","href":"/guides/retaining-resources-on-teardown"},{"title":"Configuring Inputs \u0026 Secrets","href":"/guides/configuring-inputs-and-secrets"},{"title":"Configuring Sandboxes","href":"/guides/configuring-sandboxes"},{"title":"Cloud Connections","href":"/guides/cloud-connections"},{"title":"Sandbox Builds","href":"/guides/sandbox-builds"},{"title":"Using Variables","href":"/guides/using-variables"},{"title":"Connect GitHub","href":"/guides/vcs"}]},{"group":"Components","boost":3,"expanded":false,"pages":[{"title":"Component Commands","href":"/guides/managing-components"},{"title":"Component Dependencies","href":"/guides/component-dependencies"},{"title":"Toggleable Components","href":"/guides/toggleable-components"},{"title":"Terraform Components","href":"/guides/terraform-components"},{"title":"Helm Chart Components","href":"/guides/helm-chart-components"},{"title":"Kubernetes Manifest Components","href":"/guides/kubernetes-manifest-components"},{"title":"Container Image Components","href":"/guides/container-image-components"},{"title":"Verify Container Image Signatures","href":"/guides/image-signature-verification"},{"title":"Track image patches with update policies","href":"/guides/image-update-policies"},{"title":"Pulumi Components","href":"/guides/pulumi-components"},{"title":"Auto Retries","sidebarTitle":"Auto Retries","href":"/concepts/components/auto-retries"}]},{"group":"Stacks","boost":2,"expanded":false,"pages":[{"title":"Stand-alone VPC","href":"/concepts/stacks/stand-alone-vpc"},{"title":"Customer VPC","href":"/concepts/stacks/customer-vpc"},{"title":"Customer Cluster","href":"/concepts/stacks/customer-cluster"},{"title":"Custom Install Stacks","href":"/guides/custom-nested-stacks"},{"title":"Nuon Stack Terraform Provider","href":"/guides/nuon-stack-terraform-provider"},{"title":"Customizing Terraform Stack Templates","href":"/guides/customizing-terraform-stack-templates"},{"title":"Provision Stacks with CloudFormation","href":"/guides/provision-stacks-with-cloudformation"},{"title":"Provision Stacks with a Terraform Module","href":"/guides/provision-stacks-with-terraform-module"},{"title":"Provision Stacks with Terraform","href":"/guides/provision-stacks-with-terraform"},{"title":"Provision Stacks with Spacelift","href":"/guides/provision-stacks-with-spacelift"}]},{"group":"CLI","boost":2,"expanded":false,"pages":[{"title":"CLI Extensions","href":"/guides/cli-extensions"},{"title":"Using Multiple CLI Versions","href":"/guides/cli-versions"},{"title":"Using Terraform CLI","href":"/guides/terraform-cli"}]},{"group":"README","boost":2,"expanded":false,"pages":[{"title":"Using READMEs","href":"/guides/using-readmes"},{"title":"Programmable READMEs","href":"/guides/programmable-readmes"}]},{"group":"Installs","boost":3,"expanded":false,"pages":[{"title":"Positioning Safety of BYOC","href":"/guides/vendor-customers"},{"title":"Creating Installs","href":"/guides/install-configs"},{"title":"Syncing Install Configs from Git","href":"/guides/install-config-syncing"},{"title":"Component Overrides","href":"/guides/component-overrides"},{"title":"Custom Domains","href":"/guides/custom-domains"}]},{"group":"Actions","boost":3,"expanded":false,"pages":[{"title":"Configure actions","href":"/guides/actions"},{"title":"Run adhoc actions","href":"/guides/adhoc-actions"},{"title":"Container Actions","href":"/guides/container-actions"}]},{"group":"Policies","boost":3,"expanded":false,"pages":[{"title":"Configuring Policies","href":"/guides/configuring-policies"},{"title":"External Image Policies","href":"/guides/external-image-policies"}]},{"group":"Updates and Operations","boost":3,"expanded":false,"pages":[{"title":"Configure app branches","href":"/guides/app-branches"},{"title":"App branch migration","href":"/guides/app-branch-migration"},{"title":"Roll back an install","href":"/guides/rollback-install-config"},{"title":"Reprovision an install","href":"/guides/reprovision-installs"},{"title":"Configure runbooks","href":"/guides/runbooks"},{"title":"Health Checks","href":"/guides/health-checks"},{"title":"Operation Roles","href":"/guides/operation-roles"},{"title":"Runner Management Mode","href":"/guides/runner-management-mode"},{"title":"Customer-Controlled Runner Shutdown","href":"/guides/runner-kill-switch"},{"title":"Export Runner Audit Logs","href":"/guides/export-runner-audit-logs"},{"title":"Manage Install Telemetry","href":"/guides/manage-install-telemetry"}]},{"group":"Automate and Integrate","boost":2,"expanded":false,"pages":[{"title":"Build a UI integration","href":"/guides/ui-integration"},{"title":"Let customers manage their install","href":"/guides/control-plane-integration"},{"title":"Idempotent operations","href":"/guides/idempotent-operations"},{"title":"GitHub Actions","href":"/guides/github-actions"},{"title":"Webhooks","href":"/guides/webhooks"},{"title":"Configure Triggers","href":"/guides/triggers"},{"title":"Slack","href":"/guides/slack"}]},{"group":"Access and Permission","boost":2,"expanded":false,"pages":[{"title":"Team Management","description":"Add team members to your Nuon Org","href":"/guides/team-management"},{"title":"Access Control","href":"/concepts/access-control"},{"title":"API Tokens","description":"Durable tokens for authenticating to the Nuon Control Plane API.","href":"/concepts/api-tokens"},{"title":"Service Accounts","href":"/concepts/service-accounts"},{"title":"OIDC Federation","href":"/concepts/oidc-federation"}]}]}]},{"tab":"Agents","icon":"robot","pages":[{"title":"Agents","href":"/guides/agents/overview"}]},{"tab":"Reference","icon":"book","pages":[{"title":"Reference","href":"/cli"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/updates/updates"}]}]},"basePath":"","title":"Access Control - Nuon documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}