Skip to main content
Grafana uses a comprehensive role-based access control (RBAC) system to manage user permissions and access to resources. This guide covers the authorization architecture and configuration.

Overview

Grafana’s authorization system is implemented in pkg/services/accesscontrol/ and provides:
  • Role-based access control (RBAC)
  • Fine-grained permissions on resources
  • Built-in roles (Viewer, Editor, Admin, Grafana Admin)
  • Custom role creation
  • Team-based permissions
  • Resource-specific permissions

Core Concepts

Permissions

A permission consists of an action and a scope:
Reference: pkg/services/accesscontrol/models.go:206-218 Actions define what operation can be performed:
  • dashboards:read - View dashboards
  • dashboards:write - Edit dashboards
  • dashboards:delete - Delete dashboards
  • users:read - View users
  • datasources:explore - Use Explore feature
Scopes define where the action applies:
  • dashboards:* - All dashboards
  • dashboards:uid:abc123 - Specific dashboard
  • folders:uid:xyz789 - Specific folder
  • datasources:id:1 - Specific datasource

Roles

Roles are collections of permissions:
Reference: pkg/services/accesscontrol/models.go:36-49

Role Types

  1. Built-in Roles: Predefined organization roles
    • Viewer
    • Editor
    • Admin
  2. Grafana Admin: Super admin with global permissions
  3. Fixed Roles: System-defined roles (prefixed with fixed:)
  4. Custom Roles: User-defined roles for specific needs
  5. Managed Roles: Auto-generated roles for resource permissions

Evaluators

Evaluators combine permissions with logical operators:
Reference: pkg/services/accesscontrol/evaluator.go

Built-in Roles

Organization Roles

Grafana has three built-in organization roles with different permission levels:

Viewer

  • View dashboards and panels
  • View datasources (not query)
  • View playlists
  • View annotations

Editor

  • All Viewer permissions
  • Create and edit dashboards
  • Create and edit folders
  • Create and edit playlists
  • Create annotations

Admin

  • All Editor permissions
  • Add and edit datasources
  • Add and edit users to organization
  • Manage organization settings
  • Configure teams
  • Manage plugins
  • View and edit API keys

Grafana Admin

Grafana Admins have super admin privileges across all organizations:
  • All organization permissions in all orgs
  • Create and manage organizations
  • Create and manage users globally
  • Access server admin pages
  • Manage Grafana configuration
  • View usage statistics
Constant: accesscontrol.RoleGrafanaAdmin (line 345) Reference: pkg/services/accesscontrol/models.go:345

Access Control Service

The main access control interface provides permission evaluation and management.

Core Interface

Reference: pkg/services/accesscontrol/accesscontrol.go:22-34

Permission Evaluation

Evaluating permissions in middleware:
Reference: pkg/services/accesscontrol/accesscontrol.go:200-210

User Permissions

Getting User Permissions

Reference: pkg/services/accesscontrol/accesscontrol.go:36-66

Permission Caching

Permissions are cached for performance:
Reference: conf/defaults.ini:1126-1127

Resource Permissions

Resource-specific permissions control access to individual resources.

Permission Service

Reference: pkg/services/accesscontrol/accesscontrol.go:150-165

Resource Types with Permissions

  • Dashboards: DashboardPermissionsService
  • Folders: FolderPermissionsService
  • Datasources: DatasourcePermissionsService
  • Teams: TeamPermissionsService
  • Service Accounts: ServiceAccountPermissionsService
  • Alerting Receivers: ReceiverPermissionsService
Reference: pkg/services/accesscontrol/accesscontrol.go:128-148

Middleware

Access control middleware enforces permissions on routes.

Basic Middleware

Reference: pkg/services/accesscontrol/middleware.go

Route Protection

Example from pkg/middleware/auth.go:
Reference: pkg/middleware/auth.go:202-233

Actions and Scopes

Common Actions

User Actions

Reference: pkg/services/accesscontrol/models.go:347-368

Organization Actions

Reference: pkg/services/accesscontrol/models.go:370-383

LDAP Actions

Reference: pkg/services/accesscontrol/models.go:385-389

Team Actions

Reference: pkg/services/accesscontrol/models.go:413-419

Common Scopes

Reference: pkg/services/accesscontrol/models.go:341-422

Scope Patterns

Scopes support wildcards for flexible permission matching:
  • dashboards:* - All dashboards
  • dashboards:uid:* - All dashboards by UID
  • folders:* - All folders
  • datasources:id:* - All datasources

Fixed Roles

Fixed roles are system-defined roles that map to built-in functionality.

Declaring Fixed Roles

Reference: pkg/services/accesscontrol/models.go:27-33

External Service Roles

External services can have custom roles assigned to their service accounts.

Creating External Service Roles

Reference: pkg/services/accesscontrol/models.go:299-338

Team Permissions

Teams allow grouping users and assigning permissions collectively.

Team-based Access

Team Access Evaluator

Protects team configuration pages:
Reference: pkg/services/accesscontrol/models.go:572-582

Configuration

RBAC Settings

Reference: conf/defaults.ini:1124-1134

Best Practices

1. Use Built-in Roles

Leverage built-in roles (Viewer, Editor, Admin) for common access patterns before creating custom roles.

2. Principle of Least Privilege

Grant minimum necessary permissions:

3. Use Teams for Group Management

Assign permissions to teams rather than individual users for easier management.

4. Cache Invalidation

Clear permission cache after role changes:

5. Scope Validation

Validate scope format:
Reference: pkg/services/accesscontrol/accesscontrol.go:378-388

6. Check Global Permissions

For cross-organization access:
Reference: pkg/services/accesscontrol/accesscontrol.go:173-198

Troubleshooting

Permission Denied Issues

  1. Check User Roles: Verify user has correct organization role
  2. Check Permissions: View user’s effective permissions
  3. Clear Cache: Permissions may be cached

Debug Logging

Enable access control debugging:

Permission Evaluation

Trace permission evaluation: