Commit Graph

107 Commits

Author SHA1 Message Date
Karl Persson
d16374d339 Authz: For list collect all folder permisions into items (#99955)
* For list collect all folder permisions into items
---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2025-02-03 12:14:28 +01:00
Alexander Zobnin
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
Ieva
33a53d170b AuthZ service: Add metrics (#99007)
* add metrics for authZ MT service

* remove metrics that are already tracked by the GRPC server metrics

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

* undo unneeded change

* test fix

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2025-01-24 14:03:23 +00:00
Gabriel MABILLE
a9f0e15778 AuthZ: Change cache interface (#99058)
* Authz: Switch to remotecache

* Todos

* lint

* lint test

* test readibility

* Remove ttls

* implement a cache wrap

* Rm unused func

* Comment

* Update workspace:

* Use cache

* Fix comment
2025-01-24 09:51:39 +01:00
Karl Persson
b0347792cc Zazana: Fix verb to relation mapping (#99409) 2025-01-23 13:04:41 +01:00
Ieva
723fa7ddf9 MT AuthZ: Resolve renderer permissions in MT authZ service (#99362)
* resolve renderer permissions in MT authZ service

* also include DS read perms

* fix tests and linting
2025-01-23 10:21:43 +00:00
Karl Persson
d740f9fc60 Authz: Simplify mapper and only check folders if its supported (#99357)
* Simplify mapper and only check folders if its supported
2025-01-23 09:23:00 +01:00
Ryan McKinley
680e6bc1f8 Authlib: Use types package rather than claims (#99243) 2025-01-21 12:06:55 +03:00
Karl Persson
7329d2c34b Authz: Account for fixed roles when running oss and using authz service (#99244)
* Extract "PermissionStore" from general store interface

* Add static and union permission stores

* Add GetStaticRoles

* Use accesscontrol.Service for inproc to provide static permissions
2025-01-20 16:00:36 +01: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
Ryan McKinley
cd46f1ddb9 Search: Remove history query (#99026) 2025-01-15 12:49:47 -06:00
Karl Persson
3f71a72c1a Authz: Remove "wrapper" interface and only check feature toggle for grpc mode (#98933)
* Remove "wrapper" interface and only check feature toggle for grpc and cloud mode

* Only set name for update checks

* Set dashboard permissions for admin user
2025-01-15 09:23:56 +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
Gabriel MABILLE
4c86de2678 Chore: Update authlib (#98870)
* Chore: Update authlib

* AccessChecker -> AccessClient
2025-01-14 09:42:17 +01:00
Ieva
9b34a56d7c AuthZ service: Take action sets into account when checking folder create permissions (#98751)
take action sets into account when checking folder create permissions
2025-01-14 08:33:42 +00:00
Gabriel MABILLE
4d699d4810 AuthZ: Use M3 AuthZ Service (#98621)
* AuthZ: Use M3 AuthZ Service

Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>

* Fix oss

* fake auth info

---------

Co-authored-by: ievaVasiljeva <ieva.vasiljeva@grafana.com>
2025-01-13 16:03:14 +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 Zobnin
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
Gabriel MABILLE
bc7e90bc28 AuthZ: Fix client dial options (#98827) 2025-01-10 17:41:56 +01:00
Karl Persson
c593b20465 Zanana: Add custom verb for get_permissions and set_permissions. (#98616)
* Add custom verb for get_permissions and update_permissions.

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2025-01-10 11:49:26 +01:00
Karl Persson
fb5783691d Zanzana: Fix reconciliation of fixed roles (#98696)
Remove "globalReconciler" and reuse the same one but only run them for cluster namespace
2025-01-09 10:40:18 +01:00
Ieva
338a41f178 AuthZ service: Add single flight groups for permission fetching (#98607)
add single flight groups for user and anonymous permission checking
2025-01-08 14:53:32 +02: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
Ieva
5a98432ba6 AuthZ service: Add traces for authZ service and store (#98445)
* add traces for authz service and store

* fix tests
2025-01-03 10:23:03 +02:00
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