Commit Graph

80 Commits

Author SHA1 Message Date
Ieva 1334caa6c8 AuthZ service: Support anonymous access (#98322)
support anonymous access
2024-12-20 16:32:57 +01:00
Gabriel MABILLE efb7cc0343 Chore: Authlib upgrade (#98319)
* Chore: Authlib upgrade

* Upgrade authlib

* Uncommit file
2024-12-20 15:48:35 +01:00
Ieva 2503b31f53 AuthZ service: Implement listing (#98220)
* listing implementation pt 1

* validate list request

* register GRPC endpoint, pass the correct user UID and return folder identifiers not scopes

* uncomment code that was only commented out for testing

* fix tests

* remove unneeded changes

* remove unused import

* Update pkg/services/authz/rbac/service.go

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

* refactor to improve efficiency

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

* use variable names when logging

* adding tests for listing

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2024-12-20 15:48:20 +02:00
Gabriel MABILLE 55f8be62a1 AuthZ Service: Use singleflight group to fetch and build the folder tree (#98299)
* AuthZ Service: Use singleflight group to fetch and build the folder tree

* Change the sfgroup key

* Future proof
2024-12-20 10:26:30 +01:00
Gabriel MABILLE c175722dfd AuthZService: Cache folder tree (#98210)
* AuthZService: Cache folder tree

* Remove fmt

* Suggestion

* Add tests
2024-12-19 13:55:59 +01:00
Ieva 30321a59a9 Fix broken builds (#98198)
* fix broken builds

* fix broken builds
2024-12-18 17:24:56 +02:00
Ieva 40a9f7162a AuthZ service: Build folder tree and check inherited permissions (#98074)
* build folder tree and check inherited permissions

* don't fetch dashboards

* remove unused queries
2024-12-18 14:19:16 +00:00
Gabriel MABILLE 961211b21a AuthZ Service: Add caching (#98008)
* AuthZ Service: Add caching

* split in functions

* Test getUserTeams

* Add tests to getUserBasicRole

* Test getUserPermissions

* Cache user identifiers

* fix test
2024-12-18 14:07:19 +01:00
Karl Persson 5c0cb09d27 Zanzana: Remove capabilities (#97918)
Remove capabilities
2024-12-13 12:23:12 +01:00
Ieva 32554c78a8 Direct DB perm checks: check that the namespaces match (#97828)
check that the namespace of the caller matches the namespace in the request
2024-12-12 12:57:16 +02:00
Ieva ded90fa28d App platform: Implement perm check with direct db access (#97579)
* implement perm check with direct db access

* add tests

* more tests

* Update pkg/services/authz/rbac/service.go

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

* Update pkg/services/authz/rbac/service.go

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

* allow fetching permissions for a user who is not a member of the org

* linting

* fix typo

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2024-12-12 08:52:14 +00:00
Alexander Zobnin 61d71ec5b1 Zanzana: Handle anonymous users (#97171)
* add anonymous users to schema

* sync anonymous user role

* remove unused

* fix linter

* only add anonymous reconciler if feature is enabled
2024-12-11 12:22:42 +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 c8caf787d4 Zanzana: handle service accounts (#97123)
* add service account to the schema

* sync managed permissions for service accounts

* sync SA basic roles

* sync SA roles

* Fix endless loop in reconciler while read openfga
2024-11-28 10:41:30 +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
Karl Persson be54c69fd4 Zanzana: Remove create relation from generic resources (#97042)
Remove create relation from generic resources.

We cant have a create relation to a resource because they don't exist yet. So
in oder to check create we either have to have that permissions on a folder or the namespace
2024-11-27 09:02:29 +01:00
Ryan McKinley f6ccf976e5 UnifiedSearch: Use ResourceIndex from dashboards apiserver (v0alpha1 only) (#96939) 2024-11-27 07:57:53 +02:00
Alexander Zobnin 170e0e1813 Zanzana: List then search implementation (#96705)
* Zanzana: Search with list

* Allow to pass werb into list request

* split list search into 2 functions

* fix listing resources

* remove unused

* refactor

* remove unused function

* Add more logging to reconciler

* Fix search for users with access to all resources

* fix findFoldersZanzanaList

* search for folders as well by default

* refactor

* use compile for list and search

* remove list from client

* remove only from client

* remove list from interface

* run compile once

* refactor

* refactor

* add search tests

* fix tests

* Fix linter
2024-11-25 14:58:34 +01:00
Gabriel MABILLE 6d77c0e187 AuthZ client: Add tracing (#96983)
* AuthZ client: Add tracing

* InProc as well
2024-11-25 14:17:52 +01:00
Gabriel MABILLE 3c876f0208 AuthZ: Introduce cloud mode (#96922)
* AuthZ: Introduce cloud mode

* Update readme
2024-11-22 16:19:53 +01:00
Karl Persson a5e743895b Zanzana: Capabilities api (#96682)
* Add capabilities api
2024-11-21 10:51:16 +01:00
Gabriel MABILLE aa2b4751a0 AuthZ: Launch service within IAM app (#96421) 2024-11-20 11:13:33 +01:00
Karl Persson 11a4a366c6 Zanzana: Optimize batch check (#96669)
* Restructure check code so we only check namespace access once for each GroupResource during for batch
2024-11-19 14:39:46 +01:00
Georges Chaudy e270412dbf unistore: wire the authz client (#96632)
* unistore: wire the authz client

* rename dashboards.grafana.app into dashboard.grafana.app

* wire the authz client

* wire the authz client

* resuse the Standalone constructor

* configure default migration for resource folder

* add tests

* cleanup

* add logging
2024-11-19 15:13:30 +02:00
Alexander Zobnin 1366197522 Zanzana: Search with check server side (#96268)
* pass zclient into dashboard service

* Search then check implementation

* Use GetNamespace() for user

* remove unused orgID

* simple batch check

* refactor

* add tests

* fix batchCheckItem

* client implements batch check

* use batch check in search

* remove unused

* remove All field from response

* refactor: extract checkNamespace

* fix search result uniqueness

* comment fix

* Apply suggestions from code review

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

* refactor

* cleanup

* remove unnecessary check

* fix tests

* fix protobuf def

* Fix query page

* fix type

---------

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2024-11-18 14:01:28 +01:00
Karl Persson 1f34096fdf Zanzana: reconcile basic roles and bindings (#96473)
* Add reconciler for basic roles

* Add reconciler for basic role bindings
2024-11-15 12:10:22 +01:00
Karl Persson 7e38fd733b Zanzana: Lazy load cached store info (#96452)
* Lazy load cached store infos
2024-11-15 11:44:34 +01:00
Karl Persson 5115247818 Zanana: Fix list test (#96401)
Fix: List operation are not guaranteed to respond in a certain order
2024-11-14 10:13:59 +01:00
Karl Persson ae95a6158f Zanana: Remove opefga from client and implement compile (#96275)
Zanana: Remove opefga from client and implement Compile
2024-11-12 15:30:34 +01:00
Gabriel MABILLE cc9cdbe82d Authz: Move extension proto up a layer (#96254)
* Authz: Move extension proto up a layer

* Lint
2024-11-12 10:19:12 +01:00
Alexander Zobnin b1fb581ab1 Zanzana: Evaluate access with Check request (server-side) (#96213)
* Zanzana: Evaluate access with Check request (server-side)

* Pass parent folder for checking access

* Review suggestions

* remove fixme comment
2024-11-11 16:39:21 +01:00
Karl Persson 9f66843915 Zanzana: use namespace when performing reconciliation (#96205)
* Special handling for zanzana reconciliation if stack id is configured

* remove sync call
2024-11-11 13:48:49 +01:00
Karl Persson acf119a12c Zanzana: resource sets on folder grants read on all children (#96127)
* resource sets on folder grants read on all children

* remove comment

* Add type for consistency
2024-11-08 16:53:51 +01:00
Alexander Zobnin 910ec7e7dc Zanzana: Use separate store for each org (#96015)
* Move server init into server package

* map store name to id

* refactor model loading

* pass namespace into reconcilers and collectors

* refactor

* Extend authz server with Read and Write methods

* use new read/write in reconciler

* implement server side read and write

* Sync permissions for every org

* handle namespace in check and list

* split read and write

* provide conditions

* Fix client implementation

* fix nil conditions

* remove unused client code

* use lock for store access

* move type translators to common package

* fix folder collector

* fix store creation

* remove unused AuthorizationModelId

* fix server tests

* fix linter
2024-11-08 14:54:36 +01:00
Karl Persson f0a5b444e3 Zanzana: generic resource only (#96019)
* Remove collectors

* Remove zanzana search check, we need to rewrite that part to the new schema

* Only use generic resource schema and cleanup code we don't want to keep / need to re-write
2024-11-08 09:30:41 +01:00
Zoltán Bedi 85c696c4ad SQL: Add macro support in select case (#88514)
* Feat: timeGroup macro handling in VQB

* Add tests

* Add functions to SQL ds

* Fix lint errors

* Add feature toggle

* Add rendering based on object

* Fix lint

* Fix CI failures

* Fix tests

* Address review comments

* Add docs

* Fix JSX runtime warnings

* Remove docs part that mentions suggest more macros

* Update docs/sources/shared/datasources/sql-query-builder-macros.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Add smoke test for this feature

* lint

* Add supported macros to influx

* Add setupTests.ts to include in tsconfig.json

* Import jest-dom instead of setupTests.ts

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-11-04 17:13:35 +01:00
owensmallwood 0eb7b755e2 Unified Storage Indexer: Add integration tests (#95687)
* indexer integration tests WIP

* make protobuf

* Adds a few more integration test cases to cover the basics. Use Limit instead of Size param from SearchRequest.

* skip if testing.Short()

* adds test comments
2024-11-01 07:58:10 -06:00
Karl Persson dfa8f786d2 Zanzana: fix generic schema (#95648)
* Change schema so that resource checks on a folder walks the tree
2024-10-31 14:34:48 +01:00
Karl Persson e0163c93c2 Zanzana: reconcile generic schema (#95492)
* Rename to CheckObject

* Implement authz.AccessClient

* Move folder tree to reconciler and use new schema

* Move shared functionality to common package

* Add reconciler for managed permissions and resource translations

* Add support for folder resources
2024-10-28 16:32:16 +01:00
Gabriel MABILLE 2788817107 AuthZ: Implement Check (#95162)
* AuthZ: Implement Check


---------

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2024-10-25 14:57:39 +02:00
Karl Persson bdbe12e980 Zanzana: Implement initial check and list with schema for generic resources (#95056)
* Implement initial check with schema for generic resources

* Implement List and add tests

* Add namespace type and change to folder_resource name

* Handle namespace grants for typed resources

* Run tests as integration tests

* Add support for verb in list requests
2024-10-25 14:19:11 +02:00
Karl Persson beaac3c885 Zanzana: Remove model and store initiation from client (#95328)
* Remove model and store initiation from client
2024-10-25 09:31:27 +02:00
Alexander Zobnin e709de603d Chore: Init auth model on server side (#95142)
* Chore: Init auth model on server side

* fix linter
2024-10-22 14:50:52 +02:00
Gabriel MABILLE 0704ae734f AuthZ: Refactor authentication modes for the Authz package (#95120)
* AuthZ: Fix authentication modes for the Authz package

Co-Authored-By: Claudiu Dragalina-Paraipan <drclau@users.noreply.github.com>
2024-10-22 13:38:59 +02:00
Karl Persson b4366ebed2 Zanzana: bootstrap authz server (#95036)
Bootstrap authz extended server
2024-10-21 14:58:57 +02:00
Alexander Zobnin 2baf4883cc Zanzana: add action sets to dashboard and folder schema (#94602) 2024-10-18 16:58:30 +02:00
Karl Persson a82d01214d Auth: Update authlib (#94947)
* Update authlib
2024-10-18 13:36:21 +02:00
Karl Persson 4083b2208e Zanzana: periodic sync of team members (#94752)
* Rewrite zanzana collector to fetch all available pages

* Register access control as a background service

* If zanzana is enabled we run Syncs and start Reconciliation job

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

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>

* Use server lock when doing performing reconciliation
2024-10-17 15:28:33 +02:00