<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Fine-grained access control on Grafana Labs</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/</link><description>Recent content in Fine-grained access control on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v8.4/enterprise/access-control/index.xml" rel="self" type="application/rss+xml"/><item><title>Roles</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/roles/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/roles/</guid><content><![CDATA[&lt;h1 id=&#34;roles&#34;&gt;Roles&lt;/h1&gt;
&lt;p&gt;A role represents set of permissions that allow you to perform specific actions on Grafana resources. Refer to &lt;a href=&#34;../permissions/&#34;&gt;Permissions&lt;/a&gt; to understand how permissions work.&lt;/p&gt;
&lt;p&gt;There are two types of roles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;./#fixed-roles&#34;&gt;Fixed roles&lt;/a&gt;, which provide granular access for specific resources within Grafana and are managed by the Grafana itself.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;./#custom-roles.md&#34;&gt;Custom roles&lt;/a&gt;, which provide granular access based on the user specified set of permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can use &lt;a href=&#34;../../../http_api/access_control/&#34;&gt;Fine-grained access control API&lt;/a&gt; to list available roles and permissions.&lt;/p&gt;
&lt;h2 id=&#34;role-scopes&#34;&gt;Role scopes&lt;/h2&gt;
&lt;p&gt;A role can be either &lt;em&gt;global&lt;/em&gt; or &lt;em&gt;organization local&lt;/em&gt;. &lt;em&gt;Global&lt;/em&gt; roles are not mapped to any specific organization and can be reused across multiple organizations, whereas &lt;em&gt;organization local&lt;/em&gt; roles are only available for that specific organization.&lt;/p&gt;
&lt;h2 id=&#34;fixed-roles&#34;&gt;Fixed roles&lt;/h2&gt;
&lt;p&gt;Fixed roles provide convenience and guarantee of consistent behaviour by combining relevant &lt;a href=&#34;../permissions/&#34;&gt;permissions&lt;/a&gt; together. Fixed roles are created and updated by Grafana during startup.
There are few basic rules for fixed roles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All fixed roles are &lt;em&gt;global&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;All fixed roles have a &lt;code&gt;fixed:&lt;/code&gt; prefix.&lt;/li&gt;
&lt;li&gt;You can’t change or delete a fixed role.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&#34;../fine-grained-access-control-references/#fine-grained-access-fixed-roles&#34;&gt;Fine-grained access control references&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;custom-roles&#34;&gt;Custom roles&lt;/h2&gt;
&lt;p&gt;Custom roles allow you to manage access to your users the way you want, by mapping &lt;a href=&#34;../permissions/&#34;&gt;fine-grained permissions&lt;/a&gt; to it and creating &lt;a href=&#34;#built-in-role-assignments.md&#34;&gt;built-in role assignments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To create, update or delete a custom role, you can use the &lt;a href=&#34;../../../http_api/access_control/&#34;&gt;Fine-grained access control API&lt;/a&gt; or &lt;a href=&#34;../provisioning/&#34;&gt;Grafana Provisioning&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;role-name&#34;&gt;Role name&lt;/h3&gt;
&lt;p&gt;A role&amp;rsquo;s name is intended as a human friendly identifier for the role, helping administrators understand the purpose of a role. The name cannot be longer than 190 characters, and we recommend using ASCII characters.
Role names must be unique within an organization.&lt;/p&gt;
&lt;p&gt;Roles with names prefixed by &lt;code&gt;fixed:&lt;/code&gt; are fixed roles created by Grafana and cannot be created or modified by users.&lt;/p&gt;
&lt;h3 id=&#34;role-display-name&#34;&gt;Role display name&lt;/h3&gt;
&lt;p&gt;A role’s display name is human friendly text that is displayed in the UI. When you create a display name for a role, use up to 190 ASCII-based characters. For fixed roles, the display name is shown as specified. If the display name has not been set the display name replace any &lt;code&gt;:&lt;/code&gt; (a colon) with &lt;code&gt; &lt;/code&gt; (a space).&lt;/p&gt;
&lt;h3 id=&#34;display-name&#34;&gt;Display name&lt;/h3&gt;
&lt;p&gt;A role’s display name is a human-friendly identifier for the role, so that users more easily understand the purpose of a role. You can see the display name in the role picker in the UI.&lt;/p&gt;
&lt;h3 id=&#34;group&#34;&gt;Group&lt;/h3&gt;
&lt;p&gt;A role’s group organizes roles in the role picker in the UI.&lt;/p&gt;
&lt;h3 id=&#34;role-version&#34;&gt;Role version&lt;/h3&gt;
&lt;p&gt;The version of a role is a positive integer which defines the current version of the role. When updating a role, you can either omit the version field to increment the previous value by 1 or set a new version which must be strictly larger than the previous version for the update to succeed.&lt;/p&gt;
&lt;h3 id=&#34;permissions&#34;&gt;Permissions&lt;/h3&gt;
&lt;p&gt;You manage access to Grafana resources by mapping &lt;a href=&#34;../permissions/&#34;&gt;permissions&lt;/a&gt; to roles. You can create and assign roles without any permissions as placeholders.&lt;/p&gt;
&lt;h3 id=&#34;role-uid&#34;&gt;Role UID&lt;/h3&gt;
&lt;p&gt;Each custom role has a UID defined which is a unique identifier associated with the role allowing you to change or delete the role. You can either generate UID yourself, or let Grafana generate one for you.&lt;/p&gt;
&lt;p&gt;The same UID cannot be used for roles in different organizations within the same Grafana instance.&lt;/p&gt;
&lt;h2 id=&#34;create-update-and-delete-roles&#34;&gt;Create, update and delete roles&lt;/h2&gt;
&lt;p&gt;You can create, update and delete custom roles by using the &lt;a href=&#34;../../../http_api/access_control/&#34;&gt;Access Control HTTP API&lt;/a&gt; or by using &lt;a href=&#34;../provisioning/&#34;&gt;Grafana Provisioning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By default, Grafana Server Admin has a &lt;a href=&#34;#built-in-role-assignments&#34;&gt;built-in role assignment&lt;/a&gt; which allows a user to create, update or delete custom roles.
If a Grafana Server Admin wants to delegate that privilege to other users, they can create a custom role with relevant &lt;a href=&#34;../permissions/&#34;&gt;permissions&lt;/a&gt; and &lt;code&gt;permissions:delegate&lt;/code&gt; scope will allow those users to manage roles themselves.&lt;/p&gt;
&lt;p&gt;Note that you won&amp;rsquo;t be able to create, update or delete a custom role with permissions which you yourself do not have. For example, if the only permission you have is a &lt;code&gt;users:create&lt;/code&gt;, you won&amp;rsquo;t be able to create a role with other permissions.&lt;/p&gt;
&lt;h2 id=&#34;assign-roles&#34;&gt;Assign roles&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;#custom-roles&#34;&gt;Custom roles&lt;/a&gt; and &lt;a href=&#34;#fixed-roles&#34;&gt;Fixed roles&lt;/a&gt; can be assigned to users, the existing &lt;a href=&#34;../../../permissions/organization_roles/&#34;&gt;Organization roles&lt;/a&gt; and to &lt;a href=&#34;../../../permissions/#grafana-server-admin-role&#34;&gt;Grafana Server Admin&lt;/a&gt; role.&lt;/p&gt;
&lt;p&gt;Visit &lt;a href=&#34;../manage-role-assignments/&#34;&gt;Manage role assignments&lt;/a&gt; page for more details.&lt;/p&gt;
&lt;h3 id=&#34;scope-of-assignments&#34;&gt;Scope of assignments&lt;/h3&gt;
&lt;p&gt;A role assignment can be either &lt;em&gt;global&lt;/em&gt; or &lt;em&gt;organization local&lt;/em&gt;. &lt;em&gt;Global&lt;/em&gt; assignments are not mapped to any specific organization and will be applied to all organizations, whereas &lt;em&gt;organization local&lt;/em&gt; assignments are only applied for that specific organization.
You can only create &lt;em&gt;organization local&lt;/em&gt; assignments for &lt;em&gt;organization local&lt;/em&gt; roles.&lt;/p&gt;
]]></content><description>&lt;h1 id="roles">Roles&lt;/h1>
&lt;p>A role represents set of permissions that allow you to perform specific actions on Grafana resources. Refer to &lt;a href="../permissions/">Permissions&lt;/a> to understand how permissions work.&lt;/p>
&lt;p>There are two types of roles:&lt;/p></description></item><item><title>Permissions</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/permissions/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/permissions/</guid><content><![CDATA[&lt;h1 id=&#34;permissions&#34;&gt;Permissions&lt;/h1&gt;
&lt;p&gt;A permission is an action and a scope. When creating a fine-grained access control, consider what specific action a user should be allowed to perform, and on what resources (its scope).&lt;/p&gt;
&lt;p&gt;To grant permissions to a user, you create a built-in role assignment to map a role to a built-in role. A built-in role assignment &lt;em&gt;modifies&lt;/em&gt; to one of the existing built-in roles in Grafana (Viewer, Editor, Admin). For more information, refer to &lt;a href=&#34;../roles/#built-in-role-assignments&#34;&gt;Built-in role assignments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about which permissions are used for which resources, refer to &lt;a href=&#34;./#resources-with-fine-grained-permissions&#34;&gt;Resources with fine-grained permissions&lt;/a&gt;.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;action&lt;/dt&gt;
&lt;dd&gt;The specific action on a resource defines what a user is allowed to perform if they have permission with the relevant action assigned to it.&lt;/dd&gt;
&lt;dt&gt;scope&lt;/dt&gt;
&lt;dd&gt;The scope describes where an action can be performed, such as reading a specific user profile. In such case, a permission is associated with the scope &lt;code&gt;users:&amp;lt;userId&amp;gt;&lt;/code&gt; to the relevant role.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;action-definitions&#34;&gt;Action definitions&lt;/h2&gt;
&lt;p&gt;The following list contains fine-grained access control actions.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Action&lt;/th&gt;
              &lt;th&gt;Applicable scope&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;roles:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List available roles without permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;roles:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;roles:uid:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read a specific role with its permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create or update a custom role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete a custom role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles.builtin:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;roles:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List built-in role assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles.builtin:add&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create a built-in role assignment.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles.builtin:remove&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete a built-in role assignment.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports.admin:create&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Create reports.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports.admin:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;reports:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;reports:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update reports.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;reports:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;reports:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete reports.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;reports:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List all available reports or get a specific report.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports:send&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;reports:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Send a report email.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports.settings:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Update report settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports.settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Read report settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;provisioning:reload&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioners:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Reload provisioning files. To find the exact scope for specific provisioner, see &lt;a href=&#34;./#scope-definitions&#34;&gt;Scope definitions&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read or search user profiles.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update a user’s profile.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.teams:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read a user’s teams.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.authtoken:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List authentication tokens that are assigned to a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.authtoken:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update authentication tokens that are assigned to a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.password:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update a user’s password.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:create&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Create a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:enable&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Enable a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:disable&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Disable a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.permissions:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update a user’s organization-level permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:logout&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sign out a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.quotas:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List a user’s quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.quotas:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update a user’s quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.roles:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List roles assigned directly to a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.roles:add&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Assign a role to a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.roles:remove&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Unassign a role from a auser.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users.permissions:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List permissions of a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org.users:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Get user profiles within an organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org.users:add&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Add a user to an organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org.users:remove&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Remove a user from an organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org.users.role:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update the organization role (&lt;code&gt;Viewer&lt;/code&gt;, &lt;code&gt;Editor&lt;/code&gt;, or &lt;code&gt;Admin&lt;/code&gt;) of an organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read one or more organizations.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update one or more organizations.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;org:create&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Create an organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete one or more organizations.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs.quotas:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read organization quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs.quotas:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update organization quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs.preferences:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read organization preferences.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs.preferences:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update organization preferences.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ldap.user:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Read users via LDAP.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ldap.user:sync&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Sync users via LDAP.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ldap.status:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Verify the availability of the LDAP server or servers.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;ldap.config:reload&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Reload the LDAP configuration.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;status:accesscontrol&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;services:accesscontrol&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Get access-control enabled status.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;settings:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;settings:auth.saml:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;settings:auth.saml:enabled&lt;/code&gt; (property level)&lt;/td&gt;
              &lt;td&gt;Read the &lt;a href=&#34;../../../administration/configuration/&#34;&gt;Grafana configuration settings&lt;/a&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;settings:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;settings:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;settings:auth.saml:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;settings:auth.saml:enabled&lt;/code&gt; (property level)&lt;/td&gt;
              &lt;td&gt;Update any Grafana configuration settings that can be &lt;a href=&#34;../../settings-updates/&#34;&gt;updated at runtime&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;server.stats:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Read Grafana instance statistics.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:explore&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Enable access to the &lt;strong&gt;Explore&lt;/strong&gt; tab.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;br&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:uid:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:name:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:query&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;br&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Query data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources.id:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:name:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read data source IDs.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:create&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Create data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:uid:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:name:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources.permissions:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;List data source permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources.permissions:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update data source permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;licensing:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Read licensing information.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;licensing:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Update the license token.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;licensing:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Delete the license token.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;licensing.reports:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Get custom permission reports.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams:create&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;n/a&lt;/td&gt;
              &lt;td&gt;Create teams.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read one or more teams and team preferences.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Update one or more teams and team preferences.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Delete one or more teams.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams.permissions:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read members and External Group Synchronization setup for teams.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;teams.permissions:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Add, remove and update members and manage External Group Synchronization setup for teams.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;scope-definitions&#34;&gt;Scope definitions&lt;/h2&gt;
&lt;p&gt;The following list contains fine-grained access control scopes.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Scopes&lt;/th&gt;
              &lt;th&gt;Descriptions&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;permissions:delegate&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The scope is only applicable for roles associated with the Access Control itself and indicates that you can delegate your permissions only, or a subset of it, by creating a new role or making an assignment.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;roles:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;roles:uid:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of roles. For example, &lt;code&gt;roles:*&lt;/code&gt; matches any role and &lt;code&gt;roles:uid:randomuid&lt;/code&gt; matches only the role whose UID is &lt;code&gt;randomuid&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;reports:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;reports:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of reports. For example, &lt;code&gt;reports:*&lt;/code&gt; matches any report and &lt;code&gt;reports:id:1&lt;/code&gt; matches the report whose ID is &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;services:accesscontrol&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to target only the fine-grained access control service. You can use this in conjunction with the &lt;code&gt;status:accesscontrol&lt;/code&gt; actions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;global:users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;global:users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of global users. For example, &lt;code&gt;global:users:*&lt;/code&gt; matches any user and &lt;code&gt;global:users:id:1&lt;/code&gt; matches the user whose ID is &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;users:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;users:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of users from an organization. For example, &lt;code&gt;users:*&lt;/code&gt; matches any user and &lt;code&gt;users:id:1&lt;/code&gt; matches the user whose ID is &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;orgs:*&lt;/code&gt; &lt;br&gt; &lt;code&gt;orgs:id:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of organizations. For example, &lt;code&gt;orgs:*&lt;/code&gt; matches any organization and &lt;code&gt;orgs:id:1&lt;/code&gt; matches the organization whose ID is &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;settings:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a subset of settings. For example, &lt;code&gt;settings:*&lt;/code&gt; matches all settings, &lt;code&gt;settings:auth.saml:*&lt;/code&gt; matches all SAML settings, and &lt;code&gt;settings:auth.saml:enabled&lt;/code&gt; matches the enable property on the SAML settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;provisioners:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of provisioners. For example, &lt;code&gt;provisioners:*&lt;/code&gt; matches any provisioner, and &lt;code&gt;provisioners:accesscontrol&lt;/code&gt; matches the fine-grained access control &lt;a href=&#34;../provisioning/&#34;&gt;provisioner&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;datasources:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:id:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:uid:*&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:name:*&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Restrict an action to a set of data sources. For example, &lt;code&gt;datasources:*&lt;/code&gt; matches any data source, and &lt;code&gt;datasources:name:postgres&lt;/code&gt; matches the data source named &lt;code&gt;postgres&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="permissions">Permissions&lt;/h1>
&lt;p>A permission is an action and a scope. When creating a fine-grained access control, consider what specific action a user should be allowed to perform, and on what resources (its scope).&lt;/p></description></item><item><title>Manage role assignments</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/manage-role-assignments/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/manage-role-assignments/</guid><content><![CDATA[&lt;h1 id=&#34;manage-role-assignments&#34;&gt;Manage role assignments&lt;/h1&gt;
&lt;p&gt;To grant or revoke access to your users, you can assign &lt;a href=&#34;../roles/&#34;&gt;Roles&lt;/a&gt; to users, &lt;a href=&#34;../../../permissions/organization_roles/&#34;&gt;Organization roles&lt;/a&gt; and &lt;a href=&#34;../../../permissions/#grafana-server-admin-role&#34;&gt;Grafana Server Admin&lt;/a&gt; role.&lt;/p&gt;
&lt;p&gt;The following pages provide more information on how to manage role assignments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;manage-user-role-assignments/&#34;&gt;Manage user role assignments&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;manage-built-in-role-assignments/&#34;&gt;Manage role assignments to Organization roles and Grafana Server Admin role&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="manage-role-assignments">Manage role assignments&lt;/h1>
&lt;p>To grant or revoke access to your users, you can assign &lt;a href="../roles/">Roles&lt;/a> to users, &lt;a href="../../../permissions/organization_roles/">Organization roles&lt;/a> and &lt;a href="../../../permissions/#grafana-server-admin-role">Grafana Server Admin&lt;/a> role.&lt;/p>
&lt;p>The following pages provide more information on how to manage role assignments:&lt;/p></description></item><item><title>Provisioning roles and assignments</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/provisioning/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/provisioning/</guid><content><![CDATA[&lt;h1 id=&#34;provisioning&#34;&gt;Provisioning&lt;/h1&gt;
&lt;p&gt;You can create, change or remove &lt;a href=&#34;../roles/#custom-roles&#34;&gt;Custom roles&lt;/a&gt; and create or remove &lt;a href=&#34;../roles/#built-in-role-assignments&#34;&gt;built-in role assignments&lt;/a&gt;, by adding one or more YAML configuration files in the &lt;a href=&#34;../../../administration/configuration/#provisioning&#34;&gt;&lt;code&gt;provisioning/access-control/&lt;/code&gt;&lt;/a&gt; directory.
Refer to &lt;a href=&#34;../../../administration/configuration/#provisioning&#34;&gt;Grafana provisioning&lt;/a&gt; to learn more about provisioning.&lt;/p&gt;
&lt;p&gt;If you want to manage roles and built-in role assignments by API, refer to the &lt;a href=&#34;../../../http_api/access_control/&#34;&gt;Fine-grained access control HTTP API&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;The configuration files must be placed in &lt;a href=&#34;../../../administration/configuration/#provisioning&#34;&gt;&lt;code&gt;provisioning/access-control/&lt;/code&gt;&lt;/a&gt;.
Grafana performs provisioning during the startup. Refer to the &lt;a href=&#34;../../../http_api/admin/#reload-provisioning-configurations&#34;&gt;Reload provisioning configurations&lt;/a&gt; to understand how you can reload configuration at runtime.&lt;/p&gt;
&lt;h2 id=&#34;manage-custom-roles&#34;&gt;Manage custom roles&lt;/h2&gt;
&lt;p&gt;You can create, update, and delete custom roles, as well as create and remove built-in role assignments.&lt;/p&gt;
&lt;h3 id=&#34;create-or-update-roles&#34;&gt;Create or update roles&lt;/h3&gt;
&lt;p&gt;To create or update custom roles, you can add a list of &lt;code&gt;roles&lt;/code&gt; in the configuration.&lt;/p&gt;
&lt;p&gt;Every role has a &lt;a href=&#34;../roles/#custom-roles&#34;&gt;version&lt;/a&gt; number. For each role you update, you must remember to increment it, otherwise changes won&amp;rsquo;t be applied.&lt;/p&gt;
&lt;p&gt;When you update a role, the existing role inside Grafana is altered to be exactly what is specified in the YAML file, including permissions.&lt;/p&gt;
&lt;p&gt;Here is an example YAML file to create a local role with a set of permissions:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# Roles to insert into the database, or roles to update in the database
roles:
  - name: custom:users:editor
    description: &amp;#39;This role allows users to list, create, or update other users within the organization.&amp;#39;
    version: 1
    orgId: 1
    permissions:
      - action: &amp;#39;users:read&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:write&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:create&amp;#39;
        scope: &amp;#39;users:*&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Here is an example YAML file to create a global role with a set of permissions, where the &lt;code&gt;global:true&lt;/code&gt; option makes a role global:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# Roles to insert into the database, or roles to update in the database
roles:
  - name: custom:users:editor
    description: &amp;#39;This role allows users to list, create, or update other users within the organization.&amp;#39;
    version: 1
    global: true
    permissions:
      - action: &amp;#39;users:read&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:write&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:create&amp;#39;
        scope: &amp;#39;users:*&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;orgId&lt;/code&gt; is lost when the role is set to global.&lt;/p&gt;
&lt;h3 id=&#34;delete-roles&#34;&gt;Delete roles&lt;/h3&gt;
&lt;p&gt;To delete a role, add a list of roles under the &lt;code&gt;deleteRoles&lt;/code&gt; section in the configuration file.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Any role in the &lt;code&gt;deleteRoles&lt;/code&gt; section is deleted before any role in the &lt;code&gt;roles&lt;/code&gt; section is saved.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Here is an example YAML file to delete a role:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# list of roles that should be deleted
deleteRoles:
  - name: custom:reports:editor
    orgId: 1
    force: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;assign-your-custom-role-to-specific-built-in-roles&#34;&gt;Assign your custom role to specific built-in roles&lt;/h3&gt;
&lt;p&gt;To assign roles to built-in roles, add said built-in roles to the &lt;code&gt;builtInRoles&lt;/code&gt; section of your roles. To remove a specific assignment, remove it from the list.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Assignments are updated if the version of the role is greater or equal to the one stored internally. You don’t need to increment the version number of the role to update its assignments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For example, the following role is assigned to an organization editor or an organization administrator:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# Roles to insert/update in the database
roles:
  - name: custom:users:editor
    description: &amp;#39;This role allows users to list/create/update other users in the organization&amp;#39;
    version: 1
    orgId: 1
    permissions:
      - action: &amp;#39;users:read&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:write&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:create&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
    builtInRoles:
      - name: &amp;#39;Editor&amp;#39;
      - name: &amp;#39;Admin&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;assign-your-custom-role-to-specific-teams&#34;&gt;Assign your custom role to specific teams&lt;/h3&gt;
&lt;p&gt;To assign roles to teams, add said teams to the &lt;code&gt;teams&lt;/code&gt; section of your roles. To remove a specific assignment, remove it from the list.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Assignments are updated if the version of the role is greater or equal to the one stored internally.&lt;br/&gt;
You don’t need to increment the version number of the role to update its assignments.&lt;br/&gt;
Assignments to built-in roles will be ignored. Use &lt;code&gt;addDefaultAssignments&lt;/code&gt; and &lt;code&gt;removeDefaultAssignments&lt;/code&gt; instead.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In order for provisioning to succeed, specified teams must already exist. Additionally, since teams are local to an organization, the organization has to be specified in the assignment.&lt;/p&gt;
&lt;p&gt;For example, the following role is assigned to the &lt;code&gt;user editors&lt;/code&gt; team and &lt;code&gt;user admins&lt;/code&gt; team:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# Roles to insert/update in the database
roles:
  - name: custom:users:writer
    description: &amp;#39;List/update other users in the organization&amp;#39;
    version: 1
    global: true
    permissions:
      - action: &amp;#39;org.users:read&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;org.users:write&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
    teams:
      - name: &amp;#39;user editors&amp;#39;
        orgId: 1
      - name: &amp;#39;user admins&amp;#39;
        orgId: 1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;assign-fixed-roles-to-specific-teams&#34;&gt;Assign fixed roles to specific teams&lt;/h3&gt;
&lt;p&gt;To assign a fixed role to teams, add said teams to the &lt;code&gt;teams&lt;/code&gt; section of the associated entry. To remove a specific assignment, remove it from the list.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Since fixed roles are global, the Global attribute has to be specified. A fixed role will never be updated through provisioning.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In order for provisioning to succeed, specified teams must already exist. Additionally, since teams are local to an organization, the organization has to be specified in the assignment.&lt;/p&gt;
&lt;p&gt;For example, the following fixed role is assigned to the &lt;code&gt;user editors&lt;/code&gt; team and &lt;code&gt;user admins&lt;/code&gt; team:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# Roles to insert/update in the database
roles:
  - name: fixed:users:writer
    global: true
    teams:
      - name: &amp;#39;user editors&amp;#39;
        orgId: 1
      - name: &amp;#39;user admins&amp;#39;
        orgId: 1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;manage-default-built-in-role-assignments&#34;&gt;Manage default built-in role assignments&lt;/h2&gt;
&lt;p&gt;During startup, Grafana creates &lt;a href=&#34;../roles/#default-built-in-role-assignments&#34;&gt;default built-in role assignments&lt;/a&gt; with &lt;a href=&#34;../roles/#fixed-roles&#34;&gt;fixed roles&lt;/a&gt;. You can remove and later restore those assignments with provisioning.&lt;/p&gt;
&lt;h3 id=&#34;remove-default-assignment&#34;&gt;Remove default assignment&lt;/h3&gt;
&lt;p&gt;To remove default built-in role assignments, use the &lt;code&gt;removeDefaultAssignments&lt;/code&gt; element in the configuration file. You need to provide the built-in role name and fixed role name.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# list of default built-in role assignments that should be removed
removeDefaultAssignments:
  - builtInRole: &amp;#39;Grafana Admin&amp;#39;
    fixedRole: &amp;#39;fixed:permissions:admin&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;restore-default-assignment&#34;&gt;Restore default assignment&lt;/h3&gt;
&lt;p&gt;To restore the default built-in role assignment, use the &lt;code&gt;addDefaultAssignments&lt;/code&gt; element in the configuration file. You need to provide the built-in role name and the fixed-role name.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# list of default built-in role assignments that should be added back
addDefaultAssignments:
  - builtInRole: &amp;#39;Admin&amp;#39;
    fixedRole: &amp;#39;fixed:reporting:admin:read&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;full-example-of-a-role-configuration-file&#34;&gt;Full example of a role configuration file&lt;/h2&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# config file version
apiVersion: 1

# list of default built-in role assignments that should be removed
removeDefaultAssignments:
  # &amp;lt;string&amp;gt;, must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`
  - builtInRole: &amp;#39;Grafana Admin&amp;#39;
    # &amp;lt;string&amp;gt;, must be one of the existing fixed roles
    fixedRole: &amp;#39;fixed:permissions:admin&amp;#39;

# list of default built-in role assignments that should be added back
addDefaultAssignments:
  # &amp;lt;string&amp;gt;, must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`
  - builtInRole: &amp;#39;Admin&amp;#39;
    # &amp;lt;string&amp;gt;, must be one of the existing fixed roles
    fixedRole: &amp;#39;fixed:reporting:admin:read&amp;#39;

# list of roles that should be deleted
deleteRoles:
  # &amp;lt;string&amp;gt; name of the role you want to create. Required if no uid is set
  - name: &amp;#39;custom:reports:editor&amp;#39;
    # &amp;lt;string&amp;gt; uid of the role. Required if no name
    uid: &amp;#39;customreportseditor1&amp;#39;
    # &amp;lt;int&amp;gt; org id. will default to Grafana&amp;#39;s default if not specified
    orgId: 1
    # &amp;lt;bool&amp;gt; force deletion revoking all grants of the role
    force: true
  - name: &amp;#39;custom:global:reports:reader&amp;#39;
    uid: &amp;#39;customglobalreportsreader1&amp;#39;
    # &amp;lt;bool&amp;gt; overwrite org id and removes a global role
    global: true
    force: true

# list of roles to insert/update depending on what is available in the database
roles:
  # &amp;lt;string, required&amp;gt; name of the role you want to create. Required
  - name: &amp;#39;custom:users:editor&amp;#39;
    # &amp;lt;string&amp;gt; uid of the role. Has to be unique for all orgs.
    uid: customuserseditor1
    # &amp;lt;string&amp;gt; description of the role, informative purpose only.
    description: &amp;#39;Role for our custom user editors&amp;#39;
    # &amp;lt;int&amp;gt; version of the role, Grafana will update the role when increased
    version: 2
    # &amp;lt;int&amp;gt; org id. will default to Grafana&amp;#39;s default if not specified
    orgId: 1
    # &amp;lt;list&amp;gt; list of the permissions granted by this role
    permissions:
      # &amp;lt;string, required&amp;gt; action allowed
      - action: &amp;#39;users:read&amp;#39;
        #&amp;lt;string&amp;gt; scope it applies to
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:write&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
      - action: &amp;#39;users:create&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
    # &amp;lt;list&amp;gt; list of builtIn roles the role should be assigned to
    builtInRoles:
      # &amp;lt;string, required&amp;gt; name of the builtin role you want to assign the role to
      - name: &amp;#39;Editor&amp;#39;
        # &amp;lt;int&amp;gt; org id. will default to the role org id
        orgId: 1
  - name: &amp;#39;custom:global:users:reader&amp;#39;
    uid: &amp;#39;customglobalusersreader1&amp;#39;
    description: &amp;#39;Global Role for custom user readers&amp;#39;
    version: 1
    # &amp;lt;bool&amp;gt; overwrite org id and creates a global role
    global: true
    permissions:
      - action: &amp;#39;users:read&amp;#39;
        scope: &amp;#39;users:*&amp;#39;
    builtInRoles:
      - name: &amp;#39;Viewer&amp;#39;
        orgId: 1
      - name: &amp;#39;Editor&amp;#39;
        # &amp;lt;bool&amp;gt; overwrite org id and assign role globally
        global: true
  - name: fixed:users:writer
    global: true
    # &amp;lt;list&amp;gt; list of teams the role should be assigned to
    teams:
      - name: &amp;#39;user editors&amp;#39;
        orgId: 1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;supported-settings&#34;&gt;Supported settings&lt;/h2&gt;
&lt;p&gt;The following sections detail the supported settings for roles and built-in role assignments.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refer to &lt;a href=&#34;../permissions/#action-definitions&#34;&gt;Permissions&lt;/a&gt; for full list of valid permissions.&lt;/li&gt;
&lt;li&gt;Check &lt;a href=&#34;../roles/#custom-roles&#34;&gt;Custom roles&lt;/a&gt; to understand attributes for roles.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;../../../administration/configuration/#auto_assign_org_id&#34;&gt;default org ID&lt;/a&gt; is used if &lt;code&gt;orgId&lt;/code&gt; is not specified in any of the configuration blocks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;validation-rules&#34;&gt;Validation rules&lt;/h2&gt;
&lt;p&gt;A basic set of validation rules are applied to the input &lt;code&gt;yaml&lt;/code&gt; files.&lt;/p&gt;
&lt;h3 id=&#34;roles&#34;&gt;Roles&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; must not be empty&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; must not have &lt;code&gt;fixed:&lt;/code&gt; prefix.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;permissions&#34;&gt;Permissions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; must not be empty&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;built-in-role-assignments&#34;&gt;Built-in role assignments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; must be one of the Organization roles (&lt;code&gt;Viewer&lt;/code&gt;, &lt;code&gt;Editor&lt;/code&gt;, &lt;code&gt;Admin&lt;/code&gt;) or &lt;code&gt;Grafana Admin&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;When &lt;code&gt;orgId&lt;/code&gt; is not specified, it inherits the &lt;code&gt;orgId&lt;/code&gt; from &lt;code&gt;role&lt;/code&gt;. For global roles the default &lt;code&gt;orgId&lt;/code&gt; is used.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orgId&lt;/code&gt; in the &lt;code&gt;role&lt;/code&gt; and in the assignment must be the same for none global roles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;role-deletion&#34;&gt;Role deletion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Either the role &lt;code&gt;name&lt;/code&gt; or &lt;code&gt;uid&lt;/code&gt; must be provided&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="provisioning">Provisioning&lt;/h1>
&lt;p>You can create, change or remove &lt;a href="../roles/#custom-roles">Custom roles&lt;/a> and create or remove &lt;a href="../roles/#built-in-role-assignments">built-in role assignments&lt;/a>, by adding one or more YAML configuration files in the &lt;a href="../../../administration/configuration/#provisioning">&lt;code>provisioning/access-control/&lt;/code>&lt;/a> directory.
Refer to &lt;a href="../../../administration/configuration/#provisioning">Grafana provisioning&lt;/a> to learn more about provisioning.&lt;/p></description></item><item><title>Fine-grained access control usage scenarios</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/usage-scenarios/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/usage-scenarios/</guid><content><![CDATA[&lt;h1 id=&#34;fine-grained-access-control-usage-scenarios&#34;&gt;Fine-grained access control usage scenarios&lt;/h1&gt;
&lt;p&gt;This guide contains several examples and usage scenarios of using fine-grained roles and permissions for controlling access to Grafana resources.&lt;/p&gt;
&lt;p&gt;Before you get started, make sure to &lt;a href=&#34;./#enable-fine-grained-access-control&#34;&gt;enable fine-grained access control&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;check-all-built-in-role-assignments&#34;&gt;Check all built-in role assignments&lt;/h2&gt;
&lt;p&gt;You can use the &lt;a href=&#34;../../../http_api/access_control/#get-all-built-in-role-assignments&#34;&gt;Fine-grained access control HTTP API&lt;/a&gt; to see all available built-in role assignments.
The response contains a mapping between one of the organization roles (&lt;code&gt;Viewer&lt;/code&gt;, &lt;code&gt;Editor&lt;/code&gt;, &lt;code&gt;Admin&lt;/code&gt;) or &lt;code&gt;Grafana Admin&lt;/code&gt; to the custom or fixed roles.&lt;/p&gt;
&lt;p&gt;Example request:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;curl --location --request GET &amp;#39;&amp;lt;grafana_url&amp;gt;/api/access-control/builtin-roles&amp;#39; --header &amp;#39;Authorization: Basic YWRtaW46cGFzc3dvcmQ=&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You must use the base64 username:password Basic Authorization here. Auth tokens are not applicable here.&lt;/p&gt;
&lt;p&gt;Example response:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{
    &amp;#34;Admin&amp;#34;: [
        ...
        {
            &amp;#34;version&amp;#34;: 2,
            &amp;#34;uid&amp;#34;: &amp;#34;qQui_LCMk&amp;#34;,
            &amp;#34;name&amp;#34;: &amp;#34;fixed:users:org:writer&amp;#34;,
            &amp;#34;displayName&amp;#34;: &amp;#34;Users Organization writer&amp;#34;,
            &amp;#34;description&amp;#34;: &amp;#34;Within a single organization, add a user, invite a user, read information about a user and their role, remove a user from that organization, or change the role of a user.&amp;#34;,
            &amp;#34;global&amp;#34;: true,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;
        },
        {
            &amp;#34;version&amp;#34;: 1,
            &amp;#34;uid&amp;#34;: &amp;#34;Kz9m_YjGz&amp;#34;,
            &amp;#34;name&amp;#34;: &amp;#34;fixed:reports:writer&amp;#34;,
            &amp;#34;displayName&amp;#34;: &amp;#34;Report writer&amp;#34;,
            &amp;#34;description&amp;#34;: &amp;#34;Create, read, update, or delete all reports and shared report settings.&amp;#34;,
            &amp;#34;global&amp;#34;: true,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;
        }
        ...
    ],
    &amp;#34;Grafana Admin&amp;#34;: [
        ...
        {
            &amp;#34;version&amp;#34;: 2,
            &amp;#34;uid&amp;#34;: &amp;#34;qQui_LCMk&amp;#34;,
            &amp;#34;name&amp;#34;: &amp;#34;fixed:users:writer&amp;#34;,
            &amp;#34;displayName&amp;#34;: &amp;#34;User writer&amp;#34;,
            &amp;#34;description&amp;#34;: &amp;#34;Read and update all attributes and settings for all users in Grafana: update user information, read user information, create or enable or disable a user, make a user a Grafana administrator, sign out a user, update a user’s authentication token, or update quotas for all users.&amp;#34;,
            &amp;#34;global&amp;#34;: true,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;
        },
        {
            &amp;#34;version&amp;#34;: 2,
            &amp;#34;uid&amp;#34;: &amp;#34;ajum_YjGk&amp;#34;,
            &amp;#34;name&amp;#34;: &amp;#34;fixed:users:reader&amp;#34;,
            &amp;#34;displayName&amp;#34;: &amp;#34;User reader&amp;#34;,
            &amp;#34;description&amp;#34;: &amp;#34;Allows every read action for user organizations and in addition allows to administer user organizations.&amp;#34;,
            &amp;#34;global&amp;#34;: true,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:17&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;
        },
        ...
    ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To see what permissions each of the assigned roles have, you can a &lt;a href=&#34;../../../http_api/access_control/#get-a-role&#34;&gt;Get a role&lt;/a&gt; by using an HTTP API.&lt;/p&gt;
&lt;p&gt;Example request:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;curl --location --request GET &amp;#39;&amp;lt;grafana_url&amp;gt;/api/access-control/roles/qQui_LCMk&amp;#39; --header &amp;#39;Authorization: Basic YWRtaW46cGFzc3dvcmQ=&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example response:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{
    &amp;#34;version&amp;#34;: 2,
    &amp;#34;uid&amp;#34;: &amp;#34;qQui_LCMk&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;fixed:users:writer&amp;#34;,
    &amp;#34;displayName&amp;#34;: &amp;#34;User writer&amp;#34;,
    &amp;#34;description&amp;#34;: &amp;#34;Read and update all attributes and settings for all users in Grafana: update user information, read user information, create or enable or disable a user, make a user a Grafana administrator, sign out a user, update a user’s authentication token, or update quotas for all users.&amp;#34;,
    &amp;#34;global&amp;#34;: true,
    &amp;#34;permissions&amp;#34;: [
        {
            &amp;#34;action&amp;#34;: &amp;#34;org.users:add&amp;#34;,
            &amp;#34;scope&amp;#34;: &amp;#34;users:*&amp;#34;,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;
        },
        {
            &amp;#34;action&amp;#34;: &amp;#34;org.users:read&amp;#34;,
            &amp;#34;scope&amp;#34;: &amp;#34;users:*&amp;#34;,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;
        },
        {
            &amp;#34;action&amp;#34;: &amp;#34;org.users:remove&amp;#34;,
            &amp;#34;scope&amp;#34;: &amp;#34;users:*&amp;#34;,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;
        },
        {
            &amp;#34;action&amp;#34;: &amp;#34;org.users.role:update&amp;#34;,
            &amp;#34;scope&amp;#34;: &amp;#34;users:*&amp;#34;,
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;
        }
    ],
    &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T20:49:18&amp;#43;02:00&amp;#34;,
    &amp;#34;created&amp;#34;: &amp;#34;2021-05-13T16:24:26&amp;#43;02:00&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;manage-roles-granted-directly-to-users&#34;&gt;Manage roles granted directly to users&lt;/h2&gt;
&lt;p&gt;To learn about granting roles to users, refer to &lt;a href=&#34;../manage-role-assignments/manage-user-role-assignments/&#34;&gt;Manage user role assignments&lt;/a&gt; page.&lt;/p&gt;
&lt;h2 id=&#34;create-your-first-custom-role&#34;&gt;Create your first custom role&lt;/h2&gt;
&lt;p&gt;You can create your custom role by either using an &lt;a href=&#34;../../../http_api/access_control/#create-a-new-custom-role&#34;&gt;HTTP API&lt;/a&gt; or by using &lt;a href=&#34;../provisioning/&#34;&gt;Grafana provisioning&lt;/a&gt;.
You can take a look at &lt;a href=&#34;../provisioning/#action-definitions&#34;&gt;actions and scopes&lt;/a&gt; to decide what permissions would you like to map to your role.&lt;/p&gt;
&lt;p&gt;Example HTTP request:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;curl --location --request POST &amp;#39;&amp;lt;grafana_url&amp;gt;/api/access-control/roles/&amp;#39; \
--header &amp;#39;Authorization: Basic YWRtaW46cGFzc3dvcmQ=&amp;#39; \
--header &amp;#39;Content-Type: application/json&amp;#39; \
--data-raw &amp;#39;{
    &amp;#34;version&amp;#34;: 1,
    &amp;#34;uid&amp;#34;: &amp;#34;jZrmlLCkGksdka&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;custom:users:admin&amp;#34;,
    &amp;#34;displayName&amp;#34;: &amp;#34;custom users admin&amp;#34;,
    &amp;#34;description&amp;#34;: &amp;#34;My custom role which gives users permissions to create users&amp;#34;,
    &amp;#34;global&amp;#34;: true,
    &amp;#34;permissions&amp;#34;: [
        {
            &amp;#34;action&amp;#34;: &amp;#34;users:create&amp;#34;
        }
    ]
}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example response:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{
    &amp;#34;version&amp;#34;: 1,
    &amp;#34;uid&amp;#34;: &amp;#34;jZrmlLCkGksdka&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;custom:users:admin&amp;#34;,
    &amp;#34;displayName&amp;#34;: &amp;#34;custom users admin&amp;#34;,
    &amp;#34;description&amp;#34;: &amp;#34;My custom role which gives users permissions to create users&amp;#34;,
    &amp;#34;global&amp;#34;: true,
    &amp;#34;permissions&amp;#34;: [
        {
            &amp;#34;action&amp;#34;: &amp;#34;users:create&amp;#34;
            &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T22:07:31.569936&amp;#43;02:00&amp;#34;,
            &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T22:07:31.569935&amp;#43;02:00&amp;#34;
        }
    ],
    &amp;#34;updated&amp;#34;: &amp;#34;2021-05-17T22:07:31.564403&amp;#43;02:00&amp;#34;,
    &amp;#34;created&amp;#34;: &amp;#34;2021-05-17T22:07:31.564403&amp;#43;02:00&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Once the custom role is created, you can create a built-in role assignment by using an &lt;a href=&#34;../../../http_api/access_control/#create-a-built-in-role-assignment&#34;&gt;HTTP API&lt;/a&gt;.
If you created your role using &lt;a href=&#34;../provisioning/&#34;&gt;Grafana provisioning&lt;/a&gt;, you can also create the assignment with it.&lt;/p&gt;
&lt;p&gt;Example HTTP request:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;curl --location --request POST &amp;#39;&amp;lt;grafana_url&amp;gt;/api/access-control/builtin-roles&amp;#39; \
--header &amp;#39;Authorization: Basic YWRtaW46cGFzc3dvcmQ=&amp;#39; \
--header &amp;#39;Content-Type: application/json&amp;#39; \
--data-raw &amp;#39;{
    &amp;#34;roleUid&amp;#34;: &amp;#34;jZrmlLCkGksdka&amp;#34;,
    &amp;#34;builtinRole&amp;#34;: &amp;#34;Viewer&amp;#34;,
    &amp;#34;global&amp;#34;: true
}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example response:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{
    &amp;#34;message&amp;#34;: &amp;#34;Built-in role grant added&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;allow-viewers-to-create-reports&#34;&gt;Allow Viewers to create reports&lt;/h2&gt;
&lt;p&gt;In order to create reports, you need to have &lt;code&gt;reports.admin:write&lt;/code&gt; permission. By default, a Grafana Admin or organization Admin can create reports as there is a &lt;a href=&#34;../roles/#built-in-role-assignments&#34;&gt;built-in role assignment&lt;/a&gt; which comes with &lt;code&gt;reports.admin:write&lt;/code&gt; permission.&lt;/p&gt;
&lt;p&gt;If you want your users who have the &lt;code&gt;Viewer&lt;/code&gt; organization role to create reports, you have two options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a built-in role assignment and map the &lt;code&gt;fixed:reporting:admin:edit&lt;/code&gt; fixed role to the &lt;code&gt;Viewer&lt;/code&gt; built-in role. Note that the &lt;code&gt;fixed:reporting:admin:edit&lt;/code&gt; fixed role allows doing more than creating reports. Refer to &lt;a href=&#34;../roles/#fixed-roles&#34;&gt;fixed roles&lt;/a&gt; for full list of permission assignments.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#create-your-custom-role&#34;&gt;Create a custom role&lt;/a&gt; with &lt;code&gt;reports.admin:write&lt;/code&gt; permission, and create a built-in role assignment for &lt;code&gt;Viewer&lt;/code&gt; organization role.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;prevent-grafana-admin-from-creating-and-inviting-users&#34;&gt;Prevent Grafana Admin from creating and inviting users&lt;/h2&gt;
&lt;p&gt;In order to create users, you need to have &lt;code&gt;users:create&lt;/code&gt; permission. By default, a user with the Grafana Admin role can create users as there is a &lt;a href=&#34;../roles/#built-in-role-assignments&#34;&gt;built-in role assignment&lt;/a&gt; which comes with &lt;code&gt;users:create&lt;/code&gt; permission.&lt;/p&gt;
&lt;p&gt;If you want to prevent Grafana Admin from creating users, you can do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#check-all-built-in-role-assignments&#34;&gt;Check all built-in role assignments&lt;/a&gt; to see what built-in role assignments are available.&lt;/li&gt;
&lt;li&gt;From built-in role assignments, find the role which gives &lt;code&gt;users:create&lt;/code&gt; permission. Refer to &lt;a href=&#34;../roles/#fixed-roles&#34;&gt;fixed roles&lt;/a&gt; for full list of permission assignments.&lt;/li&gt;
&lt;li&gt;Remove the built-in role assignment by using an &lt;a href=&#34;../../../http_api/access_control/&#34;&gt;Fine-grained access control HTTP API&lt;/a&gt; or by using &lt;a href=&#34;../provisioning/&#34;&gt;Grafana provisioning&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;allow-editors-to-create-new-custom-roles&#34;&gt;Allow Editors to create new custom roles&lt;/h2&gt;
&lt;p&gt;By default, the Grafana Server Admin is the only user who can create and manage custom roles. If you want your users to do the same, you have two options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a built-in role assignment and map &lt;code&gt;fixed:permissions:admin:edit&lt;/code&gt; and &lt;code&gt;fixed:permissions:admin:read&lt;/code&gt; fixed roles to the &lt;code&gt;Editor&lt;/code&gt; built-in role.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#create-your-custom-role&#34;&gt;Create a custom role&lt;/a&gt; with &lt;code&gt;roles.builtin:add&lt;/code&gt; and &lt;code&gt;roles:write&lt;/code&gt; permissions, then create a built-in role assignment for &lt;code&gt;Editor&lt;/code&gt; organization role.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that any user with the ability to modify roles can only create, update or delete roles with permissions they themselves have been granted. For example, a user with the &lt;code&gt;Editor&lt;/code&gt; role would be able to create and manage roles only with the permissions they have, or with a subset of them.&lt;/p&gt;
]]></content><description>&lt;h1 id="fine-grained-access-control-usage-scenarios">Fine-grained access control usage scenarios&lt;/h1>
&lt;p>This guide contains several examples and usage scenarios of using fine-grained roles and permissions for controlling access to Grafana resources.&lt;/p></description></item><item><title>Fine-grained access control references</title><link>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/fine-grained-access-control-references/</link><pubDate>Sat, 04 Apr 2026 12:26:57 +0000</pubDate><guid>https://grafana.com/docs/grafana/v8.4/enterprise/access-control/fine-grained-access-control-references/</guid><content><![CDATA[&lt;h1 id=&#34;fine-grained-access-control-references&#34;&gt;Fine-grained access control references&lt;/h1&gt;
&lt;p&gt;The reference information that follows complements conceptual information about &lt;a href=&#34;../roles/&#34;&gt;Roles&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;fine-grained-access-fixed-roles&#34;&gt;Fine-grained access fixed roles&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Fixed roles&lt;/th&gt;
              &lt;th&gt;Permissions&lt;/th&gt;
              &lt;th&gt;Descriptions&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:roles:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;roles:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;roles:list&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.roles:list&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.permissions:list&lt;/code&gt;&lt;br&gt;&lt;code&gt;roles.builtin:list&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read all access control roles, roles and permissions assigned to users and built-in role assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:roles:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:roles:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;roles:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;roles:delete&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.roles:add&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.roles:remove&lt;/code&gt;&lt;br&gt;&lt;code&gt;roles.builtin:add&lt;/code&gt;&lt;br&gt;&lt;code&gt;roles.builtin:remove&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create, read, update, or delete all roles, assign or unassign roles to users and built-in role assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:reports:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;reports:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;reports:send&lt;/code&gt;&lt;br&gt;&lt;code&gt;reports.settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read all reports and shared report settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:reports:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:reports:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;reports.admin:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;reports:delete&lt;/code&gt;&lt;br&gt;&lt;code&gt;reports.settings:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create, read, update, or delete all reports and shared report settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:users:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;users:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.quotas:list&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.authtoken:list&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.teams:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read all users and their information, such as team memberships, authentication tokens, and quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:users:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:users:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;users:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;users:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;users:delete&lt;/code&gt;&lt;br&gt;&lt;code&gt;users:enable&lt;/code&gt;&lt;br&gt;&lt;code&gt;users:disable&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.password:update&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.permissions:update&lt;/code&gt;&lt;br&gt;&lt;code&gt;users:logout&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.authtoken:update&lt;/code&gt;&lt;br&gt;&lt;code&gt;users.quotas:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read and update all attributes and settings for all users in Grafana: update user information, read user information, create or enable or disable a user, make a user a Grafana administrator, sign out a user, update a user’s authentication token, or update quotas for all users.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:org.users:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;org.users:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read users within a single organization.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:org.users:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:org.users:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;org.users:add&lt;/code&gt;&lt;br&gt;&lt;code&gt;org.users:remove&lt;/code&gt;&lt;br&gt;&lt;code&gt;org.users.role:update&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Within a single organization, add a user, invite a user, read information about a user and their role, remove a user from that organization, or change the role of a user.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:ldap:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;ldap.user:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;ldap.status:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read the LDAP configuration and LDAP status information.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:ldap:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:ldap:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;ldap.user:sync&lt;/code&gt;&lt;br&gt;&lt;code&gt;ldap.config:reload&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read and update the LDAP configuration, and read LDAP status information.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:stats:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;server.stats:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read Grafana instance statistics.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:settings:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;settings:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read Grafana instance settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:settings:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:settings:reader&lt;/code&gt; and&lt;br&gt;&lt;code&gt;settings:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read and update Grafana instance settings.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:explorer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:explore&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Enable the Explore feature. Data source permissions still apply, you can only query data sources for which you have query permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:query&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read and query data sources.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:datasources:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;datasources:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;datasources:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read, query, create, delete, or update a data source.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:id:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources.id:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read the ID of a data source based on its name.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources.permissions:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;datasources.permissions:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read data source permissions.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources.permissions:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:datasources.permissions:reader&lt;/code&gt; and &lt;br&gt;&lt;code&gt;datasources.permissions:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create, read, or delete permissions of a data source.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:licensing:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;licensing:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;licensing.reports:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read licensing information and licensing reports.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:licensing:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:licensing:viewer&lt;/code&gt; and &lt;br&gt;&lt;code&gt;licensing:update&lt;/code&gt;&lt;br&gt;&lt;code&gt;licensing:delete&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read licensing information and licensing reports, update and delete the license token.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:provisioning:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;provisioning:reload&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Reload provisioning.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:organization:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;orgs:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs.quotas:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read an organization and its quotas.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:organization:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:organization:reader&lt;/code&gt; and &lt;br&gt; &lt;code&gt;orgs:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs.preferences:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs.preferences:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Read an organization, its quotas, or its preferences. Update organization properties, or its preferences.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:organization:maintainer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All permissions from &lt;code&gt;fixed:organization:reader&lt;/code&gt; and &lt;br&gt; &lt;code&gt;orgs:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs:delete&lt;/code&gt;&lt;br&gt;&lt;code&gt;orgs.quotas:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create, read, write, or delete an organization. Read or write its quotas. This role needs to be assigned globally.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:teams:creator&lt;/code&gt; `&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;org.users:read&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create a team and list organization users (required to manage the created team).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;fixed:teams:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;teams:create&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:delete&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams:write&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams.permissions:read&lt;/code&gt;&lt;br&gt;&lt;code&gt;teams.permissions:write&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Create, read, update and delete teams and manage team memberships.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;default-built-in-role-assignments&#34;&gt;Default built-in role assignments&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Built-in role&lt;/th&gt;
              &lt;th&gt;Associated role&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Grafana Admin&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;fixed:roles:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:roles:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:users:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:users:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:org.users:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:org.users:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:ldap:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:ldap:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:stats:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:settings:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:settings:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:provisioning:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:organization:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:organization:maintainer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:licensing:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:licensing:writer&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Default &lt;a href=&#34;../../../permissions/#grafana-server-admin-role&#34;&gt;Grafana server administrator&lt;/a&gt; assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Admin&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;fixed:reports:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:reports:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:datasources:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:datasources:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:organization:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:datasources.permissions:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:datasources.permissions:writer&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:teams:writer&lt;/code&gt;&lt;br&gt;&lt;/td&gt;
              &lt;td&gt;Default &lt;a href=&#34;../../../permissions/organization_roles/&#34;&gt;Grafana organization administrator&lt;/a&gt; assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Editor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:explorer&lt;/code&gt; and &lt;br&gt; &lt;code&gt;fixed:teams:creator&lt;/code&gt; if the &lt;code&gt;editors_can_admin&lt;/code&gt; configuration flag is enabled&lt;/td&gt;
              &lt;td&gt;Default &lt;a href=&#34;../../../permissions/organization_roles/&#34;&gt;Editor&lt;/a&gt; assignments.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Viewer&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;fixed:datasources:id:reader&lt;/code&gt;&lt;br&gt;&lt;code&gt;fixed:organization:reader&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Default &lt;a href=&#34;../../../permissions/organization_roles/&#34;&gt;Viewer&lt;/a&gt; assignments.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="fine-grained-access-control-references">Fine-grained access control references&lt;/h1>
&lt;p>The reference information that follows complements conceptual information about &lt;a href="../roles/">Roles&lt;/a>.&lt;/p>
&lt;h2 id="fine-grained-access-fixed-roles">Fine-grained access fixed roles&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Fixed roles&lt;/th>
&lt;th>Permissions&lt;/th>
&lt;th>Descriptions&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>fixed:roles:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>roles:read&lt;/code>&lt;br>&lt;code>roles:list&lt;/code>&lt;br>&lt;code>users.roles:list&lt;/code>&lt;br>&lt;code>users.permissions:list&lt;/code>&lt;br>&lt;code>roles.builtin:list&lt;/code>&lt;/td>
&lt;td>Read all access control roles, roles and permissions assigned to users and built-in role assignments.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:roles:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:roles:reader&lt;/code> and &lt;br>&lt;code>roles:write&lt;/code>&lt;br>&lt;code>roles:delete&lt;/code>&lt;br>&lt;code>users.roles:add&lt;/code>&lt;br>&lt;code>users.roles:remove&lt;/code>&lt;br>&lt;code>roles.builtin:add&lt;/code>&lt;br>&lt;code>roles.builtin:remove&lt;/code>&lt;/td>
&lt;td>Create, read, update, or delete all roles, assign or unassign roles to users and built-in role assignments.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:reports:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>reports:read&lt;/code>&lt;br>&lt;code>reports:send&lt;/code>&lt;br>&lt;code>reports.settings:read&lt;/code>&lt;/td>
&lt;td>Read all reports and shared report settings.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:reports:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:reports:reader&lt;/code> and &lt;br>&lt;code>reports.admin:write&lt;/code>&lt;br>&lt;code>reports:delete&lt;/code>&lt;br>&lt;code>reports.settings:write&lt;/code>&lt;/td>
&lt;td>Create, read, update, or delete all reports and shared report settings.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:users:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>users:read&lt;/code>&lt;br>&lt;code>users.quotas:list&lt;/code>&lt;br>&lt;code>users.authtoken:list&lt;/code>&lt;br>&lt;code>users.teams:read&lt;/code>&lt;/td>
&lt;td>Read all users and their information, such as team memberships, authentication tokens, and quotas.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:users:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:users:reader&lt;/code> and &lt;br>&lt;code>users:write&lt;/code>&lt;br>&lt;code>users:create&lt;/code>&lt;br>&lt;code>users:delete&lt;/code>&lt;br>&lt;code>users:enable&lt;/code>&lt;br>&lt;code>users:disable&lt;/code>&lt;br>&lt;code>users.password:update&lt;/code>&lt;br>&lt;code>users.permissions:update&lt;/code>&lt;br>&lt;code>users:logout&lt;/code>&lt;br>&lt;code>users.authtoken:update&lt;/code>&lt;br>&lt;code>users.quotas:update&lt;/code>&lt;/td>
&lt;td>Read and update all attributes and settings for all users in Grafana: update user information, read user information, create or enable or disable a user, make a user a Grafana administrator, sign out a user, update a user’s authentication token, or update quotas for all users.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:org.users:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>org.users:read&lt;/code>&lt;/td>
&lt;td>Read users within a single organization.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:org.users:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:org.users:reader&lt;/code> and &lt;br>&lt;code>org.users:add&lt;/code>&lt;br>&lt;code>org.users:remove&lt;/code>&lt;br>&lt;code>org.users.role:update&lt;/code>&lt;/td>
&lt;td>Within a single organization, add a user, invite a user, read information about a user and their role, remove a user from that organization, or change the role of a user.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:ldap:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>ldap.user:read&lt;/code>&lt;br>&lt;code>ldap.status:read&lt;/code>&lt;/td>
&lt;td>Read the LDAP configuration and LDAP status information.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:ldap:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:ldap:reader&lt;/code> and &lt;br>&lt;code>ldap.user:sync&lt;/code>&lt;br>&lt;code>ldap.config:reload&lt;/code>&lt;/td>
&lt;td>Read and update the LDAP configuration, and read LDAP status information.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:stats:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>server.stats:read&lt;/code>&lt;/td>
&lt;td>Read Grafana instance statistics.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:settings:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>settings:read&lt;/code>&lt;/td>
&lt;td>Read Grafana instance settings.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:settings:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:settings:reader&lt;/code> and&lt;br>&lt;code>settings:write&lt;/code>&lt;/td>
&lt;td>Read and update Grafana instance settings.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources:explorer&lt;/code>&lt;/td>
&lt;td>&lt;code>datasources:explore&lt;/code>&lt;/td>
&lt;td>Enable the Explore feature. Data source permissions still apply, you can only query data sources for which you have query permissions.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>datasources:read&lt;/code>&lt;br>&lt;code>datasources:query&lt;/code>&lt;/td>
&lt;td>Read and query data sources.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:datasources:reader&lt;/code> and &lt;br>&lt;code>datasources:create&lt;/code>&lt;br>&lt;code>datasources:write&lt;/code>&lt;br>&lt;code>datasources:delete&lt;/code>&lt;/td>
&lt;td>Read, query, create, delete, or update a data source.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources:id:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>datasources.id:read&lt;/code>&lt;/td>
&lt;td>Read the ID of a data source based on its name.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources.permissions:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>datasources.permissions:read&lt;/code>&lt;/td>
&lt;td>Read data source permissions.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:datasources.permissions:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:datasources.permissions:reader&lt;/code> and &lt;br>&lt;code>datasources.permissions:write&lt;/code>&lt;/td>
&lt;td>Create, read, or delete permissions of a data source.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:licensing:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>licensing:read&lt;/code>&lt;br>&lt;code>licensing.reports:read&lt;/code>&lt;/td>
&lt;td>Read licensing information and licensing reports.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:licensing:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:licensing:viewer&lt;/code> and &lt;br>&lt;code>licensing:update&lt;/code>&lt;br>&lt;code>licensing:delete&lt;/code>&lt;/td>
&lt;td>Read licensing information and licensing reports, update and delete the license token.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:provisioning:writer&lt;/code>&lt;/td>
&lt;td>&lt;code>provisioning:reload&lt;/code>&lt;/td>
&lt;td>Reload provisioning.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:organization:reader&lt;/code>&lt;/td>
&lt;td>&lt;code>orgs:read&lt;/code>&lt;br>&lt;code>orgs.quotas:read&lt;/code>&lt;/td>
&lt;td>Read an organization and its quotas.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:organization:writer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:organization:reader&lt;/code> and &lt;br> &lt;code>orgs:write&lt;/code>&lt;br>&lt;code>orgs.preferences:read&lt;/code>&lt;br>&lt;code>orgs.preferences:write&lt;/code>&lt;/td>
&lt;td>Read an organization, its quotas, or its preferences. Update organization properties, or its preferences.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:organization:maintainer&lt;/code>&lt;/td>
&lt;td>All permissions from &lt;code>fixed:organization:reader&lt;/code> and &lt;br> &lt;code>orgs:write&lt;/code>&lt;br>&lt;code>orgs:create&lt;/code>&lt;br>&lt;code>orgs:delete&lt;/code>&lt;br>&lt;code>orgs.quotas:write&lt;/code>&lt;/td>
&lt;td>Create, read, write, or delete an organization. Read or write its quotas. This role needs to be assigned globally.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:teams:creator&lt;/code> `&lt;/td>
&lt;td>&lt;code>teams:create&lt;/code>&lt;br>&lt;code>org.users:read&lt;/code>&lt;/td>
&lt;td>Create a team and list organization users (required to manage the created team).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>fixed:teams:writer&lt;/code>&lt;/td>
&lt;td>&lt;code>teams:create&lt;/code>&lt;br>&lt;code>teams:delete&lt;/code>&lt;br>&lt;code>teams:read&lt;/code>&lt;br>&lt;code>teams:write&lt;/code>&lt;br>&lt;code>teams.permissions:read&lt;/code>&lt;br>&lt;code>teams.permissions:write&lt;/code>&lt;/td>
&lt;td>Create, read, update and delete teams and manage team memberships.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="default-built-in-role-assignments">Default built-in role assignments&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Built-in role&lt;/th>
&lt;th>Associated role&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Grafana Admin&lt;/td>
&lt;td>&lt;code>fixed:roles:reader&lt;/code>&lt;br>&lt;code>fixed:roles:writer&lt;/code>&lt;br>&lt;code>fixed:users:reader&lt;/code>&lt;br>&lt;code>fixed:users:writer&lt;/code>&lt;br>&lt;code>fixed:org.users:reader&lt;/code>&lt;br>&lt;code>fixed:org.users:writer&lt;/code>&lt;br>&lt;code>fixed:ldap:reader&lt;/code>&lt;br>&lt;code>fixed:ldap:writer&lt;/code>&lt;br>&lt;code>fixed:stats:reader&lt;/code>&lt;br>&lt;code>fixed:settings:reader&lt;/code>&lt;br>&lt;code>fixed:settings:writer&lt;/code>&lt;br>&lt;code>fixed:provisioning:writer&lt;/code>&lt;br>&lt;code>fixed:organization:reader&lt;/code>&lt;br>&lt;code>fixed:organization:maintainer&lt;/code>&lt;br>&lt;code>fixed:licensing:reader&lt;/code>&lt;br>&lt;code>fixed:licensing:writer&lt;/code>&lt;/td>
&lt;td>Default &lt;a href="../../../permissions/#grafana-server-admin-role">Grafana server administrator&lt;/a> assignments.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Admin&lt;/td>
&lt;td>&lt;code>fixed:reports:reader&lt;/code>&lt;br>&lt;code>fixed:reports:writer&lt;/code>&lt;br>&lt;code>fixed:datasources:reader&lt;/code>&lt;br>&lt;code>fixed:datasources:writer&lt;/code>&lt;br>&lt;code>fixed:organization:writer&lt;/code>&lt;br>&lt;code>fixed:datasources.permissions:reader&lt;/code>&lt;br>&lt;code>fixed:datasources.permissions:writer&lt;/code>&lt;br>&lt;code>fixed:teams:writer&lt;/code>&lt;br>&lt;/td>
&lt;td>Default &lt;a href="../../../permissions/organization_roles/">Grafana organization administrator&lt;/a> assignments.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Editor&lt;/td>
&lt;td>&lt;code>fixed:datasources:explorer&lt;/code> and &lt;br> &lt;code>fixed:teams:creator&lt;/code> if the &lt;code>editors_can_admin&lt;/code> configuration flag is enabled&lt;/td>
&lt;td>Default &lt;a href="../../../permissions/organization_roles/">Editor&lt;/a> assignments.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Viewer&lt;/td>
&lt;td>&lt;code>fixed:datasources:id:reader&lt;/code>&lt;br>&lt;code>fixed:organization:reader&lt;/code>&lt;/td>
&lt;td>Default &lt;a href="../../../permissions/organization_roles/">Viewer&lt;/a> assignments.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item></channel></rss>