Commit Graph
69 Commits
Author SHA1 Message Date
Alexander Zobnin 0b9046be15 Zanzana: Add more openfga settings for fine tuning (#115928)
* Zanzana: Add more openfga settings for fine tuning

* neat

* refactor
2026-01-07 13:07:13 +01:00
Jo 318a0ebb36 IAM: Authorize writes to zanzana on token permissions (#115645)
* validate writes to zanzana, not reads

* lint ignore
2025-12-31 09:15:00 +00:00
Georges Chaudy 3fe8e70436 Enhancement: Introduce optimized folder permission relations (#115247)
Enhancement: Introduce optimized folder permission relations and new permission definitions

- Added `can_get_permissions` and `can_set_permissions` relations to enhance permission management.
- Implemented `FolderPermissionRelation` function to optimize permission checks for folder resources.
- Updated `checkTyped` and `listTyped` methods to utilize optimized relations for permission management.
- Introduced a new benchmark test file for performance evaluation of permission checks and listings.
2025-12-16 10:14:06 +01:00
Alexander Zobnin 629570926d Zanzana: Fix resource translation for dashboards (#115077) 2025-12-12 11:05:10 -06:00
Alexander Zobnin 8a0fa93aec Zanzana: Fix duplicated writes in one request (#114900)
* Zanzana: Fix duplicated writes

* add tests
2025-12-05 13:55:56 +01:00
Alexander Zobnin ed91ada3c0 Zanzana: Allow resources to derive permissions from folders by default (#114820) 2025-12-04 11:27:59 +01:00
Alexander Zobnin f4fbbcc4f4 Zanzana: Fix dashboard access evaluation in folders (#114718)
* Zanzana: Fix dashboard access evaluation in folders

* add negative test

* Fix listing
2025-12-04 09:36:03 +01:00
Stephanie Hingtgen aaa5d02a3e AuthZ: Set span errors (#114460) 2025-12-01 09:29:04 +01:00
Alexander ZobninandGabriel MABILLE 358d0eb266 Zanzana: Role write APIs (#114533)
* Zanzana: Role write APIs

* Add tests

* Update pkg/services/authz/zanzana/server/server_mutate_roles.go

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

* fix func usage

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2025-11-28 11:44:58 +01:00
Alexander ZobninandGabriel MABILLE 8e7ba60b93 Zanzana: Team bindings write APIs (#114493)
* Zanzana: Team bindings write APIs

* Update pkg/services/authz/zanzana/server/server_mutate_teambindings.go

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

* fix missing import

* fix linter

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2025-11-28 10:12:50 +01:00
Alexander Zobnin bfda534825 Zanzana: Implement role bindings write APIs (#114385) 2025-11-26 10:40:35 +01:00
Alexander Zobnin b550750a9b Zanzana: Rename namespace to req_namespace label (#113822) 2025-11-13 12:08:10 +00:00
Mihai Turdean 7df3582237 Authz: Implement Query operation for Zanzana with folder parent retrieval (#113483) 2025-11-06 09:06:42 -07:00
Alexander Zobnin d1334a6dff Zanzana: Log token namespace in case of error (#113437) 2025-11-05 11:13:08 +01:00
Alexander Zobnin 3fca7cf952 Zanzana: Refactor basic role write APIs (#113397)
* Zanzana: Refactor basic role write APIs

* Fix updates

* fix linter
2025-11-04 16:29:56 +01:00
Alexander Zobnin d6fa822e89 Zanzana: Write API for org roles (#113339)
* Zanzana: Add write APIs for user org roles

* Add tests

* Fix tests

* fix role translation
2025-11-03 14:47:10 +01:00
Alexander Zobnin 7a7fd45bdd Zanzana: app platform style write APIs (#112812)
* refactor zanzana client instantiation

* refactor client imports

* POC write API (Mutate)

* fix linter

* delete exisitng folder parents

* refactor common functions

* minor refactor

* groupd operations by type

* atomic folder operations

* use deleteExisting for deletes

* Add tests for folders

* more tests

* resource permissions tests

* add more tests

* fix mock zanzana client

* fix linter

* fix linter

* re-use types from apps

* add some comments to the protobuf
2025-10-28 11:22:13 +01:00
Jo bc9c42f5c2 AuthZ: ignore duplicates on write and missing on delete in OpenFGA (#112451)
Authz: ignore duplicates on write and missing on delete in zanzana
2025-10-16 15:42:44 +01:00
Peter Štibraný 7fd9ab9481 Replace check for integration tests. (#110707)
* Replace check for integration tests.
* Revert changes in pkg/tsdb/mysql packages.
* Fix formatting of few tests.
2025-09-08 15:49:49 +02:00
Alexander Zobnin 2b254ed623 Zanzana: Add server side metrics (#109923)
* Zanzana: Add metrics to server side

* Zanzana: Collect check duration

* add metrics for other methods
2025-08-21 15:20:07 +02:00
+4 20b08ccaab Add v2beta1 api version: Consolidate schema breaking changes (#108172)
* Revert "Revert: Future-proofing query and data source model in Dashboard Sche… (#107985)"

This reverts commit 13a89d4ae3.

* Revert "Revert "Schema V2: Simplify annotations v1<->v2 conversions" (#107984)"

This reverts commit 2b8c5bea1a.

* make gen apps

* e2e update

* Use v2alpha2 by default (#108177)

* Use v2alpha2 by default

* Apply only DS changes to alpha2

* Use v2alpha2 by default except to query

* Create a v2 index in @grafana/schema

* Update path and apply lint

* Update tests

* Update imports to v2 status

* Fix failing openapi test

* Schemav2 breaking changes: conversion implementation (#108224)

* provision v2alpha1 dashboard

* Run conversions for DS refactor

* Run snapshot testing on conversions

* Normalize output name

* Update snapshots to include all panel and variable cases

* fix lint

* fix lint

* fix test and go lint

* more go lint

---------

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>

* Schema v2: Introduce group/datasource convention to GroupBy and AdHoc variable (#108237)

* Schema v2: Introduce group/datasource convention to GroupBy and AdHoc variables

* add conversion

* App Installer: Authorizer support (#108419)

* Chore: use `satisfies` and remove a load of `any`s (#108397)

use satisfies and remove a load of anys

* improve logging and fail unified-storage migration with more than 0 errors (#108471)

improve logging and fail unified-storage migration with more than 0 errors

* fix conversion test

* Secrets: Create more granular fixed roles for SecureValues (#108382)

* Provisioning: Fix bug in job progress recording (#108440)

Fix bug in job progress recording

* Provisioning: Fix ImportAllPanelsFromLocalRepository test (#108441)

* Provisioning: Skip flaky test

* Fix flaky provisioning test

* Fix lint

---------

Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>

* BulkDeleteProvisionedResource: Move progress bar into a second step (#108417)

* Move progress bar into a second step

---------

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>

* [Dashboard Schema Codegen] Move dashboard CUE codegen block back up into kind body (#108476)

[Dashboard Schema Codegen] Move dashboard CUE codegen block back up into kind body to make sure new versions have the same settings.

---------

Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Will Assis <35489495+gassiss@users.noreply.github.com>
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
Co-authored-by: Roberto Jiménez Sánchez <jszroberto@gmail.com>
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Yunwen Zheng <yunwen.zheng@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Austin Pond <IfSentient@users.noreply.github.com>
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>

* Dashboard Schema V2: Refactor VizConfigKind to follow DataQueryKind convention (#108148)

* Dashboards API: Register v2alpha2 API

* Prepare conversion functions

* Fix test

* Refactor VizConfigKind to follow DataQueryKind convention

* fix tests

* use new dataquerykind convention alpha 2

* add conversion

* fix tests

* fix tests

* fix another test

* Fix merge

---------

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>

* fix k8s codegen

* Update e2e-playwright/dashboards/TestV2Dashboard.json

* Update e2e/dashboards/TestV2Dashboard.json

* revert app generation for non-related apps

* try again

* another try

* also revert folder and secret app generation

* v2alpha1 provisioned dashboard

* Fix kind

* Fix conversion snapshots

* Update API discovery registry

* Rename to v2beta1

* Rename migrations

* Update apps/dashboard/pkg/apis/dashboard/v2beta1/doc.go

Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>

* Ensure conditional rendering and other non changed properties

---------

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Haris Rozajac <haris.rozajac12@gmail.com>
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Will Assis <35489495+gassiss@users.noreply.github.com>
Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
Co-authored-by: Roberto Jiménez Sánchez <jszroberto@gmail.com>
Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Yunwen Zheng <yunwen.zheng@grafana.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Austin Pond <IfSentient@users.noreply.github.com>
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
2025-07-30 15:01:27 +02:00
d72a70d246 Dashboards API: v2alpha2 missing pieces (#108293)
* Dashboards API: v2alpha2 missing pieces

* Fix issue with dashboard client scope for alpha versions

As we now have 2 different alpha versions for v2 we need to store the
clients separately.

* Improve debuggability of provisioning export test

- Add a helper function to print the tree structure.
- Be explicit about the expected file names expected in each case.

* Update pkg/registry/apis/dashboard/mutate.go

* Update pkg/services/authz/zanzana/server/server.go

Co-authored-by: Igor Suleymanov <radiohead@users.noreply.github.com>

* Review

* go lint

---------

Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
Co-authored-by: Igor Suleymanov <radiohead@users.noreply.github.com>
2025-07-22 11:44:05 +02:00
Cory Forseth a0085b6cab skip auth check when server is running in insecure mode (#107820)
* skip auth check when server is running in insecure mode

* add some useful logs

* lint
2025-07-16 13:06:47 -04:00
Mihai Turdean a3af6023c3 Zanzana: Support more cache configuration options (#107155) 2025-07-10 19:51:02 +00:00
Alexander Zobnin 0270152e35 Zanzana: Improve server side tracing (#106804) 2025-06-18 12:53:39 +02:00
Alexander Zobnin aa92dc860b Zanzana: Improve server side error handling (#106378)
* Zanzana: Split client and server logs

* Zanzana: Improve error handling and logging

* log internal error at the server side

* refactor

* improve errors for list request

* update go modules

* handle errors for read and write

* refactor

* reset go.mod changes
2025-06-05 22:11:26 +02:00
Eric Leijonmarck 69653ea3dc Zanzana: Adds running migrations from openfga w. RunMigrations() (#105691) 2025-05-29 15:54:12 +01:00
Alexander Zobnin da32b9e16f Zanzana: Fix health check endpoint (#104670) 2025-04-30 16:05:39 +03:00
Alexander Zobnin 63a2ce7214 Zanzana: Support subresources for users and service accounts (#102874)
* Zanzana: Support subresources for users and service accounts

* rename relationsFolder

* fix linter error
2025-03-26 16:07:01 +01:00
Alexander Zobnin c34394f385 Zanzana: Support subresources for typed resources (#102470)
* Zanzana: Support subresources for folders

* refactor

* fix subresource requests

* implement listing for folders subresources

* teams subresources PoC

* re-enable tests

* use team resource def from iam

* fix tests

* remove unused code

* refactor: rename to subresource

* split resource schema

* update workspaces

* rename folder relation to subresource

* refactor: rename folder resources to subresources

* update readme

* fix listing

* rename params in subresource filter
2025-03-25 12:31:06 +01:00
Igor Suleymanov 5d2ba10113 K8s/Dashboards: Extract Dashboard APIs to an app submodule (#102029)
* Move dashboard k8s APIs to a separate app

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Copy dashboard code in Dockerfile

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Fix conversion generation

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Update OpenAPI snapshot for dashboard/v0alpha1

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

---------

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
2025-03-13 11:05:01 +02:00
Alexander Zobnin c23bb36956 Zanzana: Fix health check endpoint (#101612) 2025-03-05 15:24:58 +01:00
Karl Persson 14886410d6 Zanzana: Use shared auth interceptor for zanzana and pass tracer (#100968)
* Use shared auth interceptor for zanzana and pass tracer
2025-02-20 16:07:06 +01:00
Alexander Zobnin fcb88f6ccc Zanzana: revert cluster store for fixed roles (#100958)
* Zanzana: revert cluster store for fixed roles

* update go workspace
2025-02-19 13:53:25 +01:00
Alexander ZobninandGabriel MABILLE a95005eab5 Zanzana: Disable broken OpenFGA health check (#99818)
* Zanzana: Disable broken OpenFGA health check

* simplify return

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2025-01-30 17:42:48 +01:00
Ryan McKinley 680e6bc1f8 Authlib: Use types package rather than claims (#99243) 2025-01-21 12:06:55 +03:00
Karl Persson 67252dfa46 Zanzana: Add grpc health and readiness checks for standalone zanzana (#99176)
Add grpc health and readiness checks for standalone zanzana
2025-01-17 13:39:42 +01:00
Alexander Zobnin c5f14407cc Zanzana: Refactor stores listing (#99098)
Zanzana: Refactor store loading
2025-01-17 11:10:22 +01:00
Karl Persson 2187a66f2b Zanzana: Split up settings into client and server sections (#99066)
* Split up zanzana settings into client and server sections

* Update workspace
2025-01-16 13:39:39 +01:00
Karl Persson ce0d986673 Zanzana: Use cache for both streamed and non-stream version of list objects (#98882)
* Add prefix constants and use string builders / string concatinations

* Use cache for both streamed and non-stream versions of list objects

* Remove unused constants
2025-01-14 16:00:59 +01:00
Karl Persson 0f9b107201 Zanzana: Consistently add context (#98862)
* Zanzana: Reworks how contextuals are loaded

* Cleanup listObjectWithStream

* Run list test with streaming enabled
2025-01-13 12:11:51 +01:00
Alexander ZobninandKarl Persson 5922015fec Zanzana: Setup GRPC authentication in client/server mode (#98680)
* Zanzana: Setup GRPC authentication in client/server mode

* don't use grpcutils

* refactor

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

* Add a namespace stub for in-proc mode

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

* Read parameters from config

* authorize server requests

* add namespace to the tests context

* use stack id from config

* simplify authorize func

* properly format namespace

* return Unauthenticated if namespace is empty

* use insecure cred only in dev env

* check request namespace

* Use CallCredentials API for client auth

* provide config

* fail if stack id is missing

* improve error message

* use insecure connection by default

---------

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2025-01-13 10:02:15 +01:00
Karl Persson 9ed4bf3cd2 Zanzana: Support sub resources (#98201)
* Create and use common ResourceInfo struct

* Add support for formatting group resource with subresource

* Add initial support for handling subresource

* Add test for checking subresource for generic resource

* Bump authlib
2025-01-07 15:16:14 +01:00
Alexander Zobnin 7e5cb7d8d6 Zanzana: Refactor fixed roles (use global store) (#97884)
* Zanzana: Pass contextual tuples for authorization

* global reconciler for fixed roles

* inject tuples from global store

* fix adding contextual tuples

* cleanup

* don't error on auth context fail

* add todo

* add context for List

* add caching

* remove unused

* use constant for global namespace

* Rename global namespace to cluster namespace
2025-01-07 13:49:55 +01:00
Gabriel MABILLE efb7cc0343 Chore: Authlib upgrade (#98319)
* Chore: Authlib upgrade

* Upgrade authlib

* Uncommit file
2024-12-20 15:48:35 +01:00
Karl Persson 5c0cb09d27 Zanzana: Remove capabilities (#97918)
Remove capabilities
2024-12-13 12:23:12 +01:00
Karl Persson 87ba9c60b2 Zanzana: change type name from namespace to group_resource (#97741)
* Change type name from namespace to group_resource

* update function names and test descriptions
2024-12-10 15:21:54 +01:00
Karl Persson 718612aabf Zanzana: Update relation names (#97638)
* Update relation names to match k8s verbs

* Only check namespace if relation is valid

* Only list for valid relations
2024-12-10 09:38:03 +01:00
Alexander Zobnin cd7772204e Zanzana: Handle renderer service authorization requests (#97201)
* Zanzana: Handle renderer service authorization requests

* only add context if render service is authorizing

* use group and resource from API definitions

* check prefix instead of full identity

* fix AddRenderContext

* remove unused type
2024-12-09 11:17:44 +01:00
Alexander Zobnin 5a91ab46af Zanzana: Use StreamedListObjects to fetch full list of resources (#97025)
* Initial streamed version of list

* instantiate openfga client to use StreamedListObjects

* Add config option for using streamed version

* Use caching

* fix cache init

* Fix hashing

* refactor
2024-11-27 14:05:41 +02:00