Skip to content

Commit 0176ead

Browse files
Aaron Godineleijonmarck
Aaron Godin
andauthored
feat: Add new read filtering to datasources guardian (grafana#91345)
* feat: Add new read filtering to datasources guardian * Apply suggestion to use datasources read guardian check for frontend settings --------- Co-authored-by: Eric Leijonmarck <[email protected]>
1 parent 94a119a commit 0176ead

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

pkg/api/datasources.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (hs *HTTPServer) GetDataSources(c *contextmodel.ReqContext) response.Respon
5454
return response.Error(http.StatusInternalServerError, "Failed to query datasources", err)
5555
}
5656

57-
filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByQueryPermissions(dataSources)
57+
filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByReadPermissions(dataSources)
5858
if err != nil {
5959
return response.Error(http.StatusInternalServerError, "Failed to query datasources", err)
6060
}

pkg/api/frontendsettings.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ func (hs *HTTPServer) getFSDataSources(c *contextmodel.ReqContext, availablePlug
410410
// If RBAC is enabled, it will filter out all datasources for a public user, so we need to skip it
411411
orgDataSources = dataSources
412412
} else {
413-
filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByQueryPermissions(dataSources)
413+
filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByReadPermissions(dataSources)
414414
if err != nil {
415415
return nil, err
416416
}

pkg/services/datasources/guardian/allow_guardian.go

+4
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ func (n AllowGuardian) CanQuery(datasourceID int64) (bool, error) {
1717
func (n AllowGuardian) FilterDatasourcesByQueryPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) {
1818
return ds, nil
1919
}
20+
21+
func (n AllowGuardian) FilterDatasourcesByReadPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) {
22+
return ds, nil
23+
}

pkg/services/datasources/guardian/provider.go

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type DatasourceGuardianProvider interface {
1111

1212
type DatasourceGuardian interface {
1313
CanQuery(datasourceID int64) (bool, error)
14+
FilterDatasourcesByReadPermissions([]*datasources.DataSource) ([]*datasources.DataSource, error)
1415
FilterDatasourcesByQueryPermissions([]*datasources.DataSource) ([]*datasources.DataSource, error)
1516
}
1617

0 commit comments

Comments
 (0)