Commit Graph

8446 Commits

Author SHA1 Message Date
Jack Westbrook bbfeb8d220 Feature: Introduce subresource integrity checks (SRI) for frontend assets (#100983)
* feat(featuremgmt): introduce feature toggle for enabling sri checks

* feat(frontend): use assetSriChecks feature toggle to inject integrity hash into script tags

* chore(webpack): align sri algorithms across dev and prod builds

* docs(featuremgmt): update assetSriChecks to pass CI

* docs(featuremgmt): fix more spelling complaints with assetSriChecks

* Add crossorigin attribute

* chore(webpack): add subresource-integrity plugin

* build(webpack): wrap webpack jsonp loader integrity checks in feature flag checks

* revert(index.html): remove crossorigin attribute if assertSriChecks is disabled

---------

Co-authored-by: Kristian Bremberg <kristian.bremberg@grafana.com>
2025-03-04 11:56:35 +01:00
Alexander Akhmetov 60827fe499 Alerting: Return 403 if no datasource access or quota has been exceeded (#101522) 2025-03-04 10:04:47 +01:00
Stephanie Hingtgen 503bc2ba66 K8s: Indexing: Fix v2 (#100683) 2025-03-04 08:04:53 +02:00
Ryan McKinley c1b48cc488 Dashboards: Add apiVersion to dashboard table (#100845) 2025-03-04 07:47:45 +03:00
Ieva 5f6b00a72f Revert "Authz: Removes setting viewers_can_edit" (#101528)
Revert "Authz: Removes setting `viewers_can_edit` (#101265)"

This reverts commit 4ce41acade.
2025-03-03 20:26:55 +02:00
Charandas 22d39f585d fix: don't double set aggregator certs (#101444) 2025-03-03 09:50:11 -08:00
Alexander Akhmetov c7c68322b1 Alerting: Allow specifying a folder for Prometheus rule import (#101406)
What is this feature?

Allows the creation of alert rules with mimirtool in a specified folder.

Why do we need this feature?

Currently, the APIs for mimirtool create namespaces and rule groups in the root folder without the ability to set a custom folder. For example, it could be a special "Imported" folder, etc.

This PR makes it possible with a special header: mimirtool ... --extra-headers="X-Grafana-Alerting-Folder-UID=123". If it's not present, the root folder is used, otherwise, the specified one is used.

mimirtool does not support nested folder structures, while Grafana allows folder nesting. To keep compatibility, we return only direct child folders of the working folder (as namespaces) with rule groups and rules that are directly in these child folders as if there are no nested folders.

For example, given this folder structure in Grafana:

```
	grafana/
	├── production/
	│   ├── service1/
	│   │   └── alerts/
	│   └── service2/
	└── testing/
	    └── service3/
```

If the working folder is "grafana":

    Only namespaces "production" and "testing" are returned
    Only rule groups directly within these folders are included

If the working folder is "production":
   -  Only namespaces "service1" and "service2" are returned
    Only rule groups directly within these folders are included
2025-03-03 17:59:01 +01:00
linoman b7a0aeeb0d SCIM: Disable auto assign organization if the user has been provisioned (#101307)
* Add isProvisioned field to model

* Add new isProvisioned column to migration

* Disable auto assignment to organization if the user is provisioned

* add annotation to user model

* add annotation to user models

* Remove IsProvisioned field from Identity

* Move new field assignenment and add default value

* Update annotations for user query results

* Remove isProvisioned from identity

* Add new column to test

* Resolve user from identity at SyncOrgHook
2025-03-03 17:51:23 +01:00
Serge Zaitsev 165bca6417 Chore: Add initial/experimental xorm spanner driver (#101398)
* make it build and start

* run some migrations

* add build tags, remove log

* remove unused code

* revert go.mod changes

* move initialisation into dialect file

* update workspace

* update workspace once again

* clean up dependencies

* further cleanup

* Address some review feedback.

* Fix go.sum.

---------

Co-authored-by: Peter Štibraný <pstibrany@gmail.com>
2025-03-03 17:02:10 +01:00
Matheus Macabu b110754c9a Hackaton: Add more unit tests, take 2 (#101473)
* login/social/socialimpl: add assertions for usage stats, support bundle and oauthinfo methods

* accesscontrol/acimpl: add tests for GetRoleByName

* anonymous/sortopts: add tests for Sorter

* cloudmigration/gmsclient: add basic test cases for all methods

* shorturls/shorturlimpl: add more edge test cases

* tag/tagimpl: add test to cover duplicate tag kv and nil pairs

* updatechecker: add test cases for module
2025-03-03 13:12:13 +01:00
Filip "Ret2Me" Poplewski 561156c4da Auth: Add support for the TlsSkipVerify parameter to JWT Auth (#91514)
* feat(auth/JWTAuth): add support for the TlsSkipVerify parameter

* feat(auth/JWTAuth): add param to default.ini and sample.ini

---------

Co-authored-by: Mihaly Gyongyosi <mgyongyosi@users.noreply.github.com>
2025-03-03 11:18:14 +02:00
Ryan McKinley 0764ecb98d K8s/DualWriter: Use dualwriter package for all dual writers (#101393) 2025-03-01 21:26:14 +03:00
Matthew Jacobson 2466685a41 Alerting: Improve template testing by trying non-root scopes (#101471)
Expand template testing to try additional scopes if the root scope fails.
This mitigates errors for definitions like pagerduty.default.instances,
which require the .Alerts scope. Added support for .Alerts and .Alert
scopes.
2025-02-28 20:27:27 +02:00
Yuri Tseretyan 1d54850a68 Alerting: Get alert rule versions by GUID (#101469)
* get alert rule versions by GUID

* protect guid field from accidental update
2025-02-28 11:27:46 -05:00
Todd Treece 620d213856 K8s: Set priority for aggregated discovery (#101427) 2025-02-28 17:39:41 +02:00
Yuri Tseretyan 879b121136 Alerting: Add GUID to alert rule tables (#101321)
* add column guid to alert rule table and rule_guid to rule version table
+ populate the new field with UUID
* update storage and domain models
* patch GUID
* ignore GUID in fingerprint tests
2025-02-28 09:47:25 -05:00
Sonia Aguilar e73b78a134 Alerting: Rule history restore feature (#100609)
* Restore feature: wip

* Refactor modal to separate component

* fix restoring from the drawer

* rename components folder to version-history, and move version-utils.file there

* skip fetching rule when uid is empty, add returnTo when restoring manually

* Fix drawer fetching infinitely

* Move drawer to separate file

* add tracking for restore success and restore failure

* Fix name of error interaction

* Add `compare` to each row in version history

* Add warning when manually restoring and trigger form validation

* Fix initial validation for contact point selector

* Wait for successful fetch before potential error

* Add disabled state when loading

* Fix loading check for contact point selector

* Fix typo

* Move hook to separate file and move other method into utils

* Update imports and remove manual state management

* Fix infinite render

* Remove onError from dep array

* Use separate flag for showing manual restore alert

* Rename to createdAt

* add and use ability to restore to check if retore is allowed

* Fix test and add isGrafanaManagedAlertRule to the ability check

* Address PR feedback

* Change to isManualRestore for trigger check

* udpate AlertRuleAction.Restore ability

* make the alertingRuleVersionHistoryRestore ff , enabled by default

* fix ff

---------

Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
2025-02-28 13:14:23 +02:00
Alexander Akhmetov ae2074ef55 Alerting: Fix updating Prometheus definition in the metadata (#101440)
Initially, Metadata had only the EditorSettings, and HasMetadata was used to understand if the incoming update request had metadata in the body because it could be omitted if it was empty. For example, when the rule is updated via the provisioning API or has only false values. If it was in the request, we used that; if not, we used the metadata from the existing rule from the database. If the rule was updated via the AlertRuleService, we didn't change Metadata at all if the rule already existed.

But now, Metadata also has the Prometheus rule definition, and we always need to update it with the new version of the AlertRuleService when the rule exists in the DB and has the same UID. HasMetadata is renamed to HasEditorSettings to keep the old behaviour only for EditorSettings.

Now, the provisioning API and the conversion API will overwrite everything except EditorSettings with the new data.
2025-02-28 13:11:49 +02:00
Ryan McKinley 806c043e45 UnifiedStorage: Rename Batch processing to Bulk (#101413) 2025-02-28 08:41:08 +03:00
Moustafa Baiou bc4be187af Alerting: Fix evaluation of rules with no-op math expressions
When you use a math expression with out any operators, the dataFrame pointer is identical between the expression result and the input query/expression.

This was resulting in the values returned from an evaluation overshadowing each other, depending on the order of the processing of the result map.

For example:
```
A: some_metric
B: reduce of A
C: math expression -> "${B}"
D: Threshold evaluation of C -> "C > 0"
```
With a value of 1 for `some_metric`, might result in a evaluation result of one of the following (somewhat at random):
1. { B: 1, D: 1 }
2. { C: 1, D: 1}

While you would expect to see:
{ B: 1, C: 1, D: 1 }
2025-02-27 17:04:18 -05:00
Alexander Akhmetov ef86582dfc Alerting: API paths for cortextool to import Loki rules (#101409)
Alerting: Legacy rules paths for cortextool
2025-02-27 17:20:49 +01:00
Leonor Oliveira f8b63c364b [CodeQL] Fix wrong type conversion (#101353)
* [CodeQL] Fix wrong type conversion

* Use AtyoI
2025-02-27 15:18:02 +01:00
Alexander Akhmetov d947433d19 Alerting: API to delete rule groups using mimirtool (#100687)
* Alerting: API to delete rule groups using mimirtool
2025-02-27 13:04:47 +01:00
Karl Persson c6a78978c3 ContextHandler: unexport cfg (#101396) 2025-02-27 12:03:03 +01:00
Ryan McKinley 58457d41d3 K8s/DualWriter: Remove legacy interface (#101395) 2025-02-27 13:27:28 +03:00
Adela Almasan 2b0029267c Actions: Remove vizActions feature toggle (#100309) 2025-02-27 01:15:01 +02:00
Yuri Tseretyan 32fde6dba4 Alerting: Update scheduler to provide full specification to rule update channel (#101375)
update scheduler's aler rule to accept regular Evaluation in update channel

This makes it accept the full rule definition, which is required in reset state.
2025-02-26 14:39:39 -05:00
Sven Grossmann b5faf5d9a1 Drilldown: Require datasources:explore RBAC action (#101366)
Drilldown: Require `datasources:explore` acton
2025-02-26 17:33:05 +01:00
Gabriel MABILLE c3505f0864 AuthZ: Make NewGrpcTokenAuth public (#101352)
* AuthZ: Expose NewGrpcTokenAuth

* Lint
2025-02-26 17:29:32 +01:00
Eric Leijonmarck 4ce41acade Authz: Removes setting viewers_can_edit (#101265)
* Removes setting `viewers_can_edit`

* Update public/app/features/dashboard-scene/scene/NavToolbarActions.tsx

Co-authored-by: Jo <joao.guerreiro@grafana.com>

* formatting

---------

Co-authored-by: Jo <joao.guerreiro@grafana.com>
2025-02-26 13:41:23 +00:00
maicon c873d975a4 Set Query Title when searching folder by title (#101169)
* Set Query to Title when serching folder by title

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2025-02-26 09:57:12 -03:00
Alexander Akhmetov af7fafd03a Alerting: Add rule group name to the rule title when converting Prometheus rules (#101310)
Alerting: Add alert rule name to the title when converting Prometheus rules
2025-02-26 11:52:21 +01:00
Karl Persson fa74d1c36d Authn: Sync authlib and update how we construct authn client interceptor (#101124)
* Sync authlib and update how we construct authn client interceptor

* Remove namespace from checker
2025-02-26 09:22:09 +01:00
Eric Leijonmarck 4538c8cad9 DS proxy: Remove ft datasourceProxyDisableRBAC and logic (#101239)
delete ft datasourceproxy
2025-02-25 17:30:58 +00:00
Alexander Akhmetov 6eb335a8ce Alerting: API to read rule groups using mimirtool (#100674) 2025-02-25 15:49:08 +01:00
Karl Persson c1d9d4d15a User: Handle unique constraints errors (#101274)
* Handle unique constraints errors
2025-02-25 15:06:25 +01:00
Gabriel MABILLE f3433fd472 RBAC: Remove accessControlOnCall feature toggle (#101222)
* RBAC: Remove accessControlOnCall feature toggle

* Leave the other one in place

* Tests

* frontend

* Readd empty ft to frontend test

* Remove legacy RBAC check

* Fix test

* no need for context

* Remove unused variable

* Remove unecessary param

* remove unecessary param from tests

* More tests :D
2025-02-25 13:44:40 +01:00
Will Assis 1a65154e74 fix (unified-storage): Fix error when trying to get parents of folder as a viewer (#101245)
* Fix error when trying to get parents of folder as a viewer with unified-storage enabled
2025-02-25 14:38:32 +02:00
Pepe Cano 2585fec99e Alerting: Clarify that the AWS SNS subject field cannot be empty (#100780)
* Alerting: Clarify that the AWS SNS subject field cannot be empty

* minor copy change
2025-02-25 12:06:38 +01:00
Alexander Akhmetov 03e94e7a3e Alerting: Update grafana/alerting (#101215)
* Update grafana/alerting from 9d7e00921e44 to 2acbeef29642

* Change the package for the TLSClient

* Fix TestContactPointFromContactPointExports test
2025-02-25 11:32:28 +01:00
Alexander Akhmetov b641fd64f9 Alerting: API to create rule groups using mimirtool (#100558)
What is this feature?

Adds an API endpoint to create alert rules with mimirtool:

- POST /convert/prometheus/config/v1/rules/{NamespaceTitle} - Accepts a single rule group in a Prometheus YAML format and creates or updates a Grafana rule group from it.

The endpoint uses the conversion package from #100224.

Key parts

The API works similarly to the provisioning API. If the rule does not exist, it will be created, otherwise updated. Any rules not present in the new group will be deleted, ensuring the group is fully synchronized with the provided configuration.

Since the API works with namespace titles (folders), the handler automatically creates a folder in the root based on the provided title if it does not exist. It also requires a special header, X-Grafana-Alerting-Datasource-UID. This header specifies which datasource to use for the new rules.

If the rule group's evaluation interval is not specified, it uses the DefaultRuleEvaluationInterval from settings.
2025-02-25 11:26:36 +01:00
Karl Persson 74632a25c3 Authz: folder api tls settings (#101213)
* Skip certificate verification

* Add more settings for folder api
2025-02-24 16:03:14 +01:00
Santiago b58d616495 Alerting: Handle err-mimir-max-label-names-per-series as a user error in the prom writer (#101214) 2025-02-24 15:43:19 +01:00
Agnès Toulet 608d974585 Rendering: Stop preloading apps for rendering requests (#100221)
* Rendering: stop preloading apps

* add feature toggle

* add comment

* add const

* fix linter

* rename feature toggle

* delete old ff

* update toggles_gen.json
2025-02-24 15:43:06 +01:00
Alexander Akhmetov 9dac0c9eeb Alerting: Add math node to the converted Prometheus rules (#101097) 2025-02-22 12:36:58 +01:00
Alexander Akhmetov 5a6d9a99f3 Alerting: Generate stable UIDs for alert rules in Prometheus conversion (#100973) 2025-02-22 11:06:42 +01:00
Yuri Tseretyan bbeae46105 Alerting: Fix rule state history with annotations backend (#101174)
* add alertUID to annotations API query parameter
* update state history UI to fetch rule by UID

---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2025-02-21 23:08:40 +02:00
Yuri Tseretyan d1dfa0576b Alerting: Support Jira Integration (#100480) 2025-02-21 12:51:38 -05:00
Todd Treece 9e80b0f913 K8s: Add error to GetRestConfig (#101147)
K8s: Add error to RestConfigProvider return values
2025-02-21 18:07:13 +02:00
Todd Treece 66bad69e00 K8s: Add not found handler (#100893) 2025-02-21 09:35:55 -05:00