Grafana / Advanced: access, dependencies, and evidence / Lesson 13
Authentication, roles, and resource permissions
Review user identity, organization or stack scope, resource permissions, and edition-specific access controls without mistaking dashboard visibility for data isolation.
On this page
Lesson goals
- Distinguish authentication from authorization.
- Identify basic roles, teams, and resource scope.
- Label Enterprise and Cloud RBAC capabilities explicitly.
Login identity is the beginning of the access question
Authentication establishes who is signing in through the configured mechanism, while authorization controls allowed actions and resource scope. Supported login and SSO capabilities vary by provider, edition, hosting, and version; do not present an Enterprise or Cloud capability as universal OSS behavior. Review identity mapping, group synchronization, session lifecycle, and the actual source of roles. A successful login does not prove the intended organization, team, or permission assignment. Keep account administration and access changes within the organization’s authorized process; this course creates and inspects no identity or account.
Separate basic roles from resource-specific grants
Basic organization roles, teams, dashboard or folder permissions, and available RBAC features participate in the actual access model. The fixed documentation distinguishes OSS capabilities from additional Enterprise permission controls; Cloud offerings need their own entitlement and configuration review. Team membership can simplify grants but is not proof of least privilege. A user can belong to several groups or teams, so inspect effective permissions rather than one visible role label. Keep server administration, organization administration, resource editing, and data-source query rights as separate questions instead of assuming one dashboard permission describes all of them.
Dashboard restrictions do not automatically restrict source queries
The pinned roles documentation describes default data-source querying as broader than the set of linked dashboards, with additional data-source permission capabilities available under documented editions. Therefore, hiding a panel, folder, or variable is not a tenant-isolation strategy. Review the trusted backend’s authorization and Grafana’s supported source-access controls together. A shared credential can query a broad backend scope even when the UI shows one route. Define what the reader may query, not only which saved page they can open. Never use a descriptive route or team field as an authorization claim.
Write intended actions before choosing the control
The editorial JSON records an intended read-only synthetic identity and separately names dashboard and data scope. It is not Grafana RBAC syntax, an API payload, or a permission grant. The local action check illustrates why read does not imply edit in a declared toy policy; it cannot reproduce effective Grafana permissions, inheritance, or edition behavior. A real review needs both positive and negative cases through the authorized mechanism. Include direct source querying and API or service-account paths where relevant, because a narrow browser workflow alone cannot establish the full access boundary.
{"identity":"synthetic-transit-reader","intended_actions":["read-view"],"dashboard_scope":"transit-lab-folder","data_scope":"separately-enforced-lab-data"}
The fields are a teaching contract, not Grafana permission identifiers. The record grants no role, membership, token, or source access.
allowed_actions = {"read-view"}
for action in ["read-view", "edit-view", "query-all-data"]:
print(action, action in allowed_actions)
read-view True
edit-view False
query-all-data False
The fixed set is the entire toy policy. It performs no Grafana authentication, authorization, inheritance calculation, or account inspection.
Verify effective scope without exposing secrets
An authorized access review should record identity source, effective grants, resource scope, edition, version, and expected allow and deny outcomes. Do not paste tokens, session material, private usernames, or real access lists into a public lesson. Service accounts and their tokens need reviewed scope, lifecycle, and ownership; their permissions are not inferred from a dashboard title. This lesson parses no real policy and executes only a fixed set-membership check. It changes no role, team, folder, authentication setting, token, or account and claims no security validation of an installation.
Common errors and fixes
Successful login is called correct authorization
- Why it happens
- Identity proof was substituted for effective grants.
- How to fix it
- Review scope and resource actions separately.
- Prevent it next time
- Test expected allow and deny cases.
A folder restriction is called complete data isolation
- Why it happens
- Source query access and shared credentials were ignored.
- How to fix it
- Review the backend and supported source permissions.
- Prevent it next time
- Include non-dashboard query paths.
An Enterprise control is assumed available in OSS
- Why it happens
- Edition and entitlement boundaries were omitted.
- How to fix it
- Check the selected version and product documentation.
- Prevent it next time
- Record required capabilities before implementation.
Check your understanding
1. Can a Viewer restricted from opening one dashboard be assumed unable to query its underlying source?
Show worked solution
No. Dashboard visibility and source-query authorization are separate. Review the default and configured behavior of the selected edition and the backend credential scope. Test the actual allowed paths under authorization rather than treating a hidden saved view as proof of data isolation.
2. What does the local action fixture establish about Grafana permissions?
Show worked solution
Only that the supplied toy set contains read-view and excludes the other two strings. It says nothing about real roles, effective inheritance, RBAC, source permissions, accounts, or tokens. Use it to clarify intended actions, then obtain actual authorized evidence through the supported edition-specific access model.
Key takeaways
- Authentication, resource permissions, and source access differ.
- Effective rights require edition-aware review.
- A local intention model is not an access-control test.