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>
This commit is contained in:
co-authored by
Kristian Bremberg
parent
bf9a34f2ca
commit
bbfeb8d220
@@ -13,6 +13,7 @@ const (
|
||||
grafanaBackendServicesSquad codeowner = "@grafana/grafana-backend-services-squad"
|
||||
grafanaSearchAndStorageSquad codeowner = "@grafana/search-and-storage"
|
||||
grafanaPluginsPlatformSquad codeowner = "@grafana/plugins-platform-backend"
|
||||
grafanaFrontendOpsWG codeowner = "@grafana/frontend-ops"
|
||||
grafanaAsCodeSquad codeowner = "@grafana/grafana-as-code"
|
||||
identityAccessTeam codeowner = "@grafana/identity-access-team"
|
||||
grafanaObservabilityLogsSquad codeowner = "@grafana/observability-logs"
|
||||
|
||||
@@ -1775,6 +1775,13 @@ var (
|
||||
HideFromDocs: true,
|
||||
FrontendOnly: true,
|
||||
},
|
||||
{
|
||||
Name: "assetSriChecks",
|
||||
Description: "Enables SRI checks for Grafana JavaScript assets",
|
||||
Stage: FeatureStageExperimental,
|
||||
Owner: grafanaFrontendOpsWG,
|
||||
FrontendOnly: true,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -235,3 +235,4 @@ alertingJiraIntegration,experimental,@grafana/alerting-squad,false,false,true
|
||||
alertingRuleVersionHistoryRestore,GA,@grafana/alerting-squad,false,false,true
|
||||
newShareReportDrawer,experimental,@grafana/sharing-squad,false,false,false
|
||||
rendererDisableAppPluginsPreload,experimental,@grafana/sharing-squad,false,false,true
|
||||
assetSriChecks,experimental,@grafana/frontend-ops,false,false,true
|
||||
|
||||
|
@@ -950,4 +950,8 @@ const (
|
||||
// FlagRendererDisableAppPluginsPreload
|
||||
// Disable pre-loading app plugins when the request is coming from the renderer
|
||||
FlagRendererDisableAppPluginsPreload = "rendererDisableAppPluginsPreload"
|
||||
|
||||
// FlagAssetSriChecks
|
||||
// Enables SRI checks for Grafana JavaScript assets
|
||||
FlagAssetSriChecks = "assetSriChecks"
|
||||
)
|
||||
|
||||
@@ -598,6 +598,22 @@
|
||||
"codeowner": "@grafana/grafana-frontend-platform"
|
||||
}
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"name": "assetSriChecks",
|
||||
"resourceVersion": "1739984409734",
|
||||
"creationTimestamp": "2025-02-19T15:56:59Z",
|
||||
"annotations": {
|
||||
"grafana.app/updatedTimestamp": "2025-02-19 17:00:09.734088 +0000 UTC"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"description": "Enables SRI checks for Grafana JavaScript assets",
|
||||
"stage": "experimental",
|
||||
"codeowner": "@grafana/frontend-ops",
|
||||
"frontend": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"name": "authAPIAccessTokenAuth",
|
||||
|
||||
Reference in New Issue
Block a user