From 2cf532962265d6bb5bbb6aefcb597dd18d6e80f8 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Fri, 5 Aug 2022 08:36:19 +0100 Subject: [PATCH] Access Control: Set permissions for Grafana's test data source (#53247) (#53334) * set permissions for Grafana's test data source * linting (cherry picked from commit b590c1c60f878fe53f0ae2f5f148790c2652e2cf) Co-authored-by: Ieva --- pkg/api/accesscontrol.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/api/accesscontrol.go b/pkg/api/accesscontrol.go index 716edc93eb0..18ccf9f0c09 100644 --- a/pkg/api/accesscontrol.go +++ b/pkg/api/accesscontrol.go @@ -1,6 +1,8 @@ package api import ( + "fmt" + "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/plugins" ac "github.com/grafana/grafana/pkg/services/accesscontrol" @@ -8,6 +10,7 @@ import ( "github.com/grafana/grafana/pkg/services/datasources" "github.com/grafana/grafana/pkg/services/serviceaccounts" "github.com/grafana/grafana/pkg/setting" + "github.com/grafana/grafana/pkg/tsdb/grafanads" ) // API related actions @@ -98,6 +101,27 @@ func (hs *HTTPServer) declareFixedRoles() error { Grants: []string{string(models.ROLE_ADMIN)}, } + builtInDatasourceReader := ac.RoleRegistration{ + Role: ac.RoleDTO{ + Name: "fixed:datasources.builtin:reader", + DisplayName: "Built in data source reader", + Description: "Read and query Grafana's built in test data sources.", + Group: "Data sources", + Permissions: []ac.Permission{ + { + Action: datasources.ActionRead, + Scope: fmt.Sprintf("%s%s", datasources.ScopePrefix, grafanads.DatasourceUID), + }, + { + Action: datasources.ActionQuery, + Scope: fmt.Sprintf("%s%s", datasources.ScopePrefix, grafanads.DatasourceUID), + }, + }, + Hidden: true, + }, + Grants: []string{string(models.ROLE_VIEWER)}, + } + // when running oss or enterprise without a license all users should be able to query data sources if !hs.License.FeatureEnabled("accesscontrol.enforcement") { datasourcesReaderRole.Grants = []string{string(models.ROLE_VIEWER)} @@ -395,7 +419,7 @@ func (hs *HTTPServer) declareFixedRoles() error { } return hs.AccessControl.DeclareFixedRoles( - provisioningWriterRole, datasourcesReaderRole, datasourcesWriterRole, + provisioningWriterRole, datasourcesReaderRole, builtInDatasourceReader, datasourcesWriterRole, datasourcesIdReaderRole, orgReaderRole, orgWriterRole, orgMaintainerRole, teamsCreatorRole, teamsWriterRole, datasourcesExplorerRole, annotationsReaderRole, dashboardAnnotationsWriterRole, annotationsWriterRole,