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:
Alexander Zobnin
2025-10-21 16:03:17 +02:00
committed by GitHub
co-authored by Ieva
parent 12e294d8ab
commit adf1224e82
6 changed files with 40 additions and 2 deletions
+9 -2
View File
@@ -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)
}