AuthZ: Zanzana only evaluation toggle (#112715)
* Zanzana: Feature toggle to enable zanzana only evaluation * refactor * Update pkg/services/featuremgmt/toggles_gen.json Co-authored-by: Ieva <ieva.vasiljeva@grafana.com> --------- Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
This commit is contained in:
@@ -621,6 +621,10 @@ export interface FeatureToggles {
|
||||
*/
|
||||
zanzana?: boolean;
|
||||
/**
|
||||
* Use openFGA as main authorization engine and disable legacy RBAC clietn.
|
||||
*/
|
||||
zanzanaNoLegacyClient?: boolean;
|
||||
/**
|
||||
* Enables reload of dashboards on scopes, time range and variables changes
|
||||
*/
|
||||
reloadDashboardsOnParamsChange?: boolean;
|
||||
|
||||
@@ -23,6 +23,7 @@ import (
|
||||
"github.com/grafana/authlib/cache"
|
||||
authlib "github.com/grafana/authlib/types"
|
||||
"github.com/grafana/dskit/middleware"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
@@ -53,6 +54,8 @@ func ProvideAuthZClient(
|
||||
zanzanaClient zanzana.Client,
|
||||
restConfig apiserver.RestConfigProvider,
|
||||
) (authlib.AccessClient, error) {
|
||||
zanzanaEnabled := features.IsEnabledGlobally(featuremgmt.FlagZanzana)
|
||||
|
||||
authCfg, err := readAuthzClientSettings(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -62,6 +65,10 @@ func ProvideAuthZClient(
|
||||
return nil, errors.New("authZGRPCServer feature toggle is required for cloud and grpc mode")
|
||||
}
|
||||
|
||||
if zanzanaEnabled && features.IsEnabledGlobally(featuremgmt.FlagZanzanaNoLegacyClient) {
|
||||
return zanzanaClient, nil
|
||||
}
|
||||
|
||||
// Provisioning uses mode 4 (read+write only to unified storage)
|
||||
// For G12 launch, we can disable caching for this and find a more scalable solution soon
|
||||
// most likely this would involve passing the RV (timestamp!) in each check method
|
||||
@@ -72,7 +79,7 @@ func ProvideAuthZClient(
|
||||
switch authCfg.mode {
|
||||
case clientModeCloud:
|
||||
rbacClient, err := newRemoteRBACClient(authCfg, tracer, reg)
|
||||
if features.IsEnabledGlobally(featuremgmt.FlagZanzana) {
|
||||
if zanzanaEnabled {
|
||||
return zanzana.WithShadowClient(rbacClient, zanzanaClient, reg)
|
||||
}
|
||||
return rbacClient, err
|
||||
@@ -119,7 +126,7 @@ func ProvideAuthZClient(
|
||||
authzlib.WithTracerClientOption(tracer),
|
||||
)
|
||||
|
||||
if features.IsEnabledGlobally(featuremgmt.FlagZanzana) {
|
||||
if zanzanaEnabled {
|
||||
return zanzana.WithShadowClient(rbacClient, zanzanaClient, reg)
|
||||
}
|
||||
|
||||
|
||||
@@ -1066,6 +1066,14 @@ var (
|
||||
HideFromDocs: true,
|
||||
HideFromAdminPage: true,
|
||||
},
|
||||
{
|
||||
Name: "zanzanaNoLegacyClient",
|
||||
Description: "Use openFGA as main authorization engine and disable legacy RBAC clietn.",
|
||||
Stage: FeatureStageExperimental,
|
||||
Owner: identityAccessTeam,
|
||||
HideFromDocs: true,
|
||||
HideFromAdminPage: true,
|
||||
},
|
||||
{
|
||||
Name: "reloadDashboardsOnParamsChange",
|
||||
Description: "Enables reload of dashboards on scopes, time range and variables changes",
|
||||
|
||||
@@ -139,6 +139,7 @@ pinNavItems,GA,@grafana/grafana-frontend-platform,false,false,false
|
||||
authZGRPCServer,experimental,@grafana/identity-access-team,false,false,false
|
||||
ssoSettingsLDAP,GA,@grafana/identity-access-team,false,true,false
|
||||
zanzana,experimental,@grafana/identity-access-team,false,false,false
|
||||
zanzanaNoLegacyClient,experimental,@grafana/identity-access-team,false,false,false
|
||||
reloadDashboardsOnParamsChange,experimental,@grafana/dashboards-squad,false,false,false
|
||||
enableScopesInMetricsExplore,experimental,@grafana/dashboards-squad,false,false,false
|
||||
cloudWatchRoundUpEndTime,GA,@grafana/aws-datasources,false,false,false
|
||||
|
||||
|
@@ -567,6 +567,10 @@ const (
|
||||
// Use openFGA as authorization engine.
|
||||
FlagZanzana = "zanzana"
|
||||
|
||||
// FlagZanzanaNoLegacyClient
|
||||
// Use openFGA as main authorization engine and disable legacy RBAC clietn.
|
||||
FlagZanzanaNoLegacyClient = "zanzanaNoLegacyClient"
|
||||
|
||||
// FlagReloadDashboardsOnParamsChange
|
||||
// Enables reload of dashboards on scopes, time range and variables changes
|
||||
FlagReloadDashboardsOnParamsChange = "reloadDashboardsOnParamsChange"
|
||||
|
||||
@@ -4173,6 +4173,20 @@
|
||||
"hideFromAdminPage": true,
|
||||
"hideFromDocs": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"name": "zanzanaNoLegacyClient",
|
||||
"resourceVersion": "1760953975541",
|
||||
"creationTimestamp": "2025-10-20T09:52:55Z"
|
||||
},
|
||||
"spec": {
|
||||
"description": "Use openFGA as main authorization engine and disable legacy RBAC client.",
|
||||
"stage": "experimental",
|
||||
"codeowner": "@grafana/identity-access-team",
|
||||
"hideFromAdminPage": true,
|
||||
"hideFromDocs": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user