mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Fix authorisation to use namespace UIDs for scope (#81231)
This commit is contained in:
parent
2c7e95a680
commit
b1eec36df3
@ -21,22 +21,22 @@ func (api *API) authorize(method, path string) web.Handler {
|
|||||||
|
|
||||||
// Grafana Paths
|
// Grafana Paths
|
||||||
case http.MethodDelete + "/api/ruler/grafana/api/v1/rules/{Namespace}/{Groupname}":
|
case http.MethodDelete + "/api/ruler/grafana/api/v1/rules/{Namespace}/{Groupname}":
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace")))
|
eval = ac.EvalPermission(ac.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace")))
|
||||||
case http.MethodDelete + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
case http.MethodDelete + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace")))
|
eval = ac.EvalPermission(ac.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace")))
|
||||||
case http.MethodGet + "/api/ruler/grafana/api/v1/rules/{Namespace}/{Groupname}":
|
case http.MethodGet + "/api/ruler/grafana/api/v1/rules/{Namespace}/{Groupname}":
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace")))
|
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace")))
|
||||||
case http.MethodGet + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
case http.MethodGet + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace")))
|
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace")))
|
||||||
case http.MethodGet + "/api/ruler/grafana/api/v1/rules",
|
case http.MethodGet + "/api/ruler/grafana/api/v1/rules",
|
||||||
http.MethodGet + "/api/ruler/grafana/api/v1/export/rules":
|
http.MethodGet + "/api/ruler/grafana/api/v1/export/rules":
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleRead)
|
eval = ac.EvalPermission(ac.ActionAlertingRuleRead)
|
||||||
case http.MethodPost + "/api/ruler/grafana/api/v1/rules/{Namespace}/export":
|
case http.MethodPost + "/api/ruler/grafana/api/v1/rules/{Namespace}/export":
|
||||||
scope := dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace"))
|
scope := dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace"))
|
||||||
// more granular permissions are enforced by the handler via "authorizeRuleChanges"
|
// more granular permissions are enforced by the handler via "authorizeRuleChanges"
|
||||||
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, scope)
|
eval = ac.EvalPermission(ac.ActionAlertingRuleRead, scope)
|
||||||
case http.MethodPost + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
case http.MethodPost + "/api/ruler/grafana/api/v1/rules/{Namespace}":
|
||||||
scope := dashboards.ScopeFoldersProvider.GetResourceScopeName(ac.Parameter(":Namespace"))
|
scope := dashboards.ScopeFoldersProvider.GetResourceScopeUID(ac.Parameter(":Namespace"))
|
||||||
// more granular permissions are enforced by the handler via "authorizeRuleChanges"
|
// more granular permissions are enforced by the handler via "authorizeRuleChanges"
|
||||||
eval = ac.EvalAny(
|
eval = ac.EvalAny(
|
||||||
ac.EvalPermission(ac.ActionAlertingRuleUpdate, scope),
|
ac.EvalPermission(ac.ActionAlertingRuleUpdate, scope),
|
||||||
|
@ -578,7 +578,7 @@ func (st DBstore) GetAlertRulesForScheduling(ctx context.Context, query *ngmodel
|
|||||||
|
|
||||||
// DeleteInFolder deletes the rules contained in a given folder along with their associated data.
|
// DeleteInFolder deletes the rules contained in a given folder along with their associated data.
|
||||||
func (st DBstore) DeleteInFolder(ctx context.Context, orgID int64, folderUID string, user identity.Requester) error {
|
func (st DBstore) DeleteInFolder(ctx context.Context, orgID int64, folderUID string, user identity.Requester) error {
|
||||||
evaluator := accesscontrol.EvalPermission(accesscontrol.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeName(folderUID))
|
evaluator := accesscontrol.EvalPermission(accesscontrol.ActionAlertingRuleDelete, dashboards.ScopeFoldersProvider.GetResourceScopeUID(folderUID))
|
||||||
canSave, err := st.AccessControl.Evaluate(ctx, user, evaluator)
|
canSave, err := st.AccessControl.Evaluate(ctx, user, evaluator)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
st.Logger.Error("Failed to evaluate access control", "error", err)
|
st.Logger.Error("Failed to evaluate access control", "error", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user