Commit Graph
224 Commits
Author SHA1 Message Date
rosstimothy bf6397fe62 Use cache for listing app sessions (#37378)
ListAppSessions was never added to the `auth.Cache` interface or
implemented by `cache.Cache` which means all session listing was
using the backend as the data source. This could cause backend
throttling if the number of sessions was large enough.
2024-01-27 00:27:15 +00:00
Gavin Frazar 5c568bbe07 split database CA into server/client CAs (#35949)
* split database CA into server/client CAs

* update migration logging
    * include auth component in migrations
    * debug log when skipping db client ca migration
* update tctl auth sign for cockroachdb
* update tctl auth sign for oracle
* set ExtKeyUsage for DB certs
    * clientAuth for DB Client CA
    * serverAuth for DB Server CA
* inject filter for pre-v14.3.1 clients
* inject a filter instead of dropping events in grpcserver
* add DatabaseClientCA type

* debug log when skipping filter injection

* update CA filter injection version check func name and doc
2024-01-14 23:53:24 +00:00
Gavin Frazar 3fd10a9c33 add CA filter for all known CAs to cache configs (#36361)
* fix WatchKind.Contains for ca filter
* add CA filter to caCollector
* require CA types in CA watcher config
* apply ca filter in EventsService parser
2024-01-09 18:30:41 +00:00
Forrest 7989ac466e fallback to upstream when sessions are missing from cache (#36364) 2024-01-08 18:31:56 +00:00
Michael Wilson 913cc67c9e Add access lists, members, and reviews to cache. (#36020)
* Add access lists, members, and reviews to cache.

Access lists, members, and reviews have been added to the cache. To do this,
I have created a simple backend that doesn't perform the validation that is
performed by the main access list backend and only implements a subset of
actions that are needed by the cache.

To support this, I've added in new gRPC methods:
ListAllAccessListMembers and ListAllAccessListReviews. These do not lock
any access lists and additionally do not perform any implicit or dynamic
members, but just simply return the full list of all members and reviews
so that these endpoints can be used to populate the cache.

The general thought here that, since the order of cache events cannot be
guaranteed, we'll rely on the auth server to perform the proper backend
validation and use a simplified backend that simply sees if the items
are present in the cache. If so, we'll return them.

I've had to update a few protos to support this. While I was here, I
fixed a bug in the access list gRPC client where the call tolist of reviews
was not supplying the access list name. Additionally, the user login
state generator will now use the cached access list values.

* Move simple backend to lib/services/simple

* Update to reflect new generic function signatures.
2024-01-05 14:48:44 +00:00
Zac Bergquist 44a6bb1933 Use pkg slices from the standard library (#35905)
Prefer the stdlib version of the experimental package.
Includes a depguard update to prevent future regressions,
as well as an e-ref update to appease depguard.

Generated with:

    $ gofmt -w -r '"golang.org/x/exp/slices" -> "slices"' . && \
        make fix-imports
2023-12-19 23:06:53 +00:00
fheinecke b178b8b732 Updated Teleport codebase to AGPL3 license (#35259)
Signed-off-by: Fred Heinecke <fred.heinecke@goteleport.com>
2023-12-01 17:48:14 +00:00
Marco André Dinis 0ab79442ce Discovery: Use Integration credentials for fetchers (#34582)
* Discovery: Use Integration credentials for fetchers

* fix typos, improve docs, add clients.closer

* be explicit about using ambient or integration credentials

* remove integration assignment when using ambient credentials

* be explicit about using ambient credentials in db service

* fix cache key for region only sessions

* re-trigger license/cla check
2023-11-24 13:42:02 +00:00
Michael Wilson c68ba6236c Add user login state original traits and indicator that original values set. (#34594)
* Add user login state original traits and indicator that original values set.

Original traits has been added to the user login state for use by a watcher in
the enterprise repo that will react to user access changes. This field will be
used to rebuild the last known good state when user access changes.

Additionally, an internal annotation that indicates the original role/trait
fields have been set in the user login state has been introduced so that the
watcher knows whether the user login state can be used by this watcher.

* GCI.

* Tweak tests.

* Further tweak tests.

* Formatting.

* Fix missing argument.

* Standardize delete comment.
2023-11-17 15:37:37 +00:00
rosstimothy d5a796c056 Enable testify lint (#34222)
Updates our golangci-lint configuration to enable testifylint and
fixes all issues found.

Bump e ref to include gravitational/teleport.e#2567
2023-11-06 20:38:38 +00:00
rosstimothy 5b9585ab1c Add ListUsers to the services.IdentityService (#33582)
Listing users is different from most existing list operations
because multiple resource types are stored under the users prefix.
Care was taken to ensure that these extra resources(passwords,
mfa devices, etc) do not cause lising to omit any users.
2023-10-26 15:18:22 +00:00
Forrest 54a05b2ca4 event fanout rework (#32978) 2023-10-23 18:59:12 +00:00
rosstimothy 2087a2fda8 Implement Create/UpdateRole on the auth server (#33491)
In addition to adding server and backend handling for create and
update roles, the services.Access interface was updated to return
a role from the existing Create/UpsertRole methods. Bumps the e
ref to incorporate the associated changes needed there to prevent
breaking the build.
2023-10-18 17:06:50 +00:00
Marek Smoliński f3545eba3f Security Reports (#30853) 2023-10-16 10:11:54 +00:00
Michael Wilson d43fe953ec Remove access lists and members from the cache. (#33308)
The access lists and members have been removed from the cache. There's not
a lot of value having them in there and they create some uncomfortable
questions since members are dependent on access lists and the cache isn't
designed for dependent operations like this. By removing them we avoid a
lot of pain here.
2023-10-11 18:56:40 +00:00
Marco André Dinis de3a0cc5fd DiscoveryConfig: init service and add resource to tctl (#32399)
* DiscoveryConfig: init service and add it to `tctl`

This PR starts the DiscoveryConfig service in gRPC server and allows
`tctl` to interact with those records.

It also adds access to the `editor` role.
Users should be able to RW any DiscoveryConfig.

DiscoveryService should be able to watch those resources, so that it can
act upon any changes.

* add revision

* add upsert method

* improve tctl -f command
2023-10-11 10:24:05 +00:00
rosstimothy 84e1be110a Complete services.Users interface refactoring (#33233)
* Update e ref

* Complete services.Users interface refactoring

Removes temporary functions required to migrate the interface
without breaking e.

Closes #32949.
2023-10-10 19:56:42 +00:00
rosstimothy b60ea81d54 Update users interface (#32987)
services.UsersService now takes a context and returns the user
from write operations as shown in the diff below. The bulk of the
changes are from modifying code to account for the additional
parameter and/or return value. Functional changes to better make
use of the new API will come in follow up PRs.

```diff
// UserGetter is responsible for getting users
type UserGetter interface {
	// GetUser returns a user by name
-	GetUser(user string, withSecrets bool) (types.User, error)
+	GetUser(ctx context.Context, user string, withSecrets bool) (types.User, error)
}

// UsersService is responsible for basic user management
type UsersService interface {
	UserGetter
	// CreateUser creates user, only if the user entry does not exist
-	CreateUser(user types.User) error
+	CreateUser(ctx context.Context, user types.User) (types.User, error)
	// UpdateUser updates an existing user.
-	UpdateUser(ctx context.Context, user types.User) error
+	UpdateUser(ctx context.Context, user types.User) (types.User, error)
	// UpdateAndSwapUser reads an existing user, runs `fn` against it and writes
	// the result to storage. Return `false` from `fn` to avoid storage changes.
	// Roughly equivalent to [GetUser] followed by [CompareAndSwapUser].
	// Returns the storage user.
	UpdateAndSwapUser(ctx context.Context, user string, withSecrets bool, fn func(types.User) (changed bool, err error)) (types.User, error)
	// UpsertUser updates parameters about user
-	UpsertUser(user types.User) error
+	UpsertUser(ctx context.Context, user types.User) (types.User, error)
	// CompareAndSwapUser updates an existing user, but fails if the user does
	// not match an expected backend value.
	CompareAndSwapUser(ctx context.Context, new, existing types.User) error
	// DeleteUser deletes a user with all the keys from the backend
	DeleteUser(ctx context.Context, user string) error
	// GetUsers returns a list of users registered with the local auth server
-	GetUsers(withSecrets bool) ([]types.User, error)
+	GetUsers(ctx context.Context, withSecrets bool) ([]types.User, error)
	// DeleteAllUsers deletes all users
-	DeleteAllUsers() error
+	DeleteAllUsers(ctx context.Context) error
}
```

Depends on gravitational/teleport.e#2346
Implements step 3 of #32949
2023-10-10 14:07:46 +00:00
rosstimothyandEdoardo Spadolini 6874bc1844 Start migrating services.UserService to use context and return users (#32920)
* Start migrating services.Identity to use context and return users

Adds new variants of existing methods that are going to be updated
to support propagating context and return users from create, update
and upsert. This is an unfortunate step required because e utilizes
the interface for various functionality. In order to prevent breaking
builds, the temporary methods were added so that e can be converted
to them first, then oss can be updated to the new version of the
interface. Once that is done e will be converted and then the temp
methods will be removed.

* fix typos in comment

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* fix: don't set metadata on existing item in CAS

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* fix: gci

* fix: set resource id on update

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
2023-10-09 17:11:39 +00:00
Michael Wilson 049363b882 Add in audit review recurrence presets. (#32843)
Access Lists now have audit review recurrence presets. These allow users to
specify review frequencies of 1, 3, 6, or 12 months, and specify the 1st,
15th, or last days of the target month. Presets have been used for their
simplicity over other various recurrence definition mechanisms, as these
presets are much clearer than many of the other options.
2023-10-03 22:36:05 +00:00
Forrest 45649440b0 reduce log spam (#31208) 2023-09-28 22:26:21 +00:00
Michael Wilson bccb25bb8f Fix Access List Members cache and eventing. (#32619)
* Fix Access List Members cache and eventing.

Two things were happening that were shadowing the Access List members cache
and eventing.

1. In the cache collections, the wrong reader was being assigned to the
   lookup map. The correct reader was being used elsewhere, however, so the
   caching tests appear to have still been working.
2. The watcher in lib/services/local/events.go apparently collapses prefixes
   if they overlap. Prefix `access_list_members` is encompassed by
   `access_list`, so the access list members prefix was eliminated from the
   watcher. As a result, access list member events were being processed by
   the access list parser, which resulted in non-critical warnings.

Local testing and dogfooding has yielded that this has had no apparent impact,
at least in situations without cache propagation. However, I've got a feeling
that this could affect situations with multiple auth servers.

While I'm here, I've eliminated the pointer-to-pointer logic in the access
list unmarshaling, which was excised elsewhere and should be excised here as
well.

* Use ExactKey, fix accessListMemberParser as well.
2023-09-27 13:04:52 +00:00
rosstimothy e035f4dbf3 Propagate resource revision to/from the backend (#32040)
* Set revision on resources retrieved from the backend

Adds a new `MarshalOption` that ensures the resource revision is
set when unmarshalling a backend item. The new `WithRevision` option
was also applied everywhere that the legacy `WithResourceID` was
being used.

* Prevent storing resource revision in the backend item value

The revision follows the same semantics as the resource id for
marshalling. This prevents both items from showing up in the value
of the backend item, which can prevent compare and swap operations
from completing succesfully. Each backend is responsible for
persisting the revision in some manner.

The existing PreserveResourceID was reused to prevent having to
make multiple copies of a resource when clearing the id and revision.
The marshal option will be updated in a follow up when the resource
id is removed.

* Ignore revision in resource comparisons
2023-09-26 16:58:04 +00:00
Forrest 2d8e6d3776 always generate request IDs server-side (#31760)
* server-side request ids

* update e-ref
2023-09-13 16:08:11 +00:00
Michael Wilson d50c0dd3c3 Remove members from access list spec. (#31457)
The members field has been removed from the access list spec.
2023-09-08 13:42:59 +00:00
Zac Bergquist c3e6173651 Remove use of require assertions inside Eventually calls (#31112)
* Remove use of require assertions inside Eventually calls

require.Eventually runs the predicate function in a background
goroutine. It is invalid to use require to make assertions
inside the eventually, because require will fail the test if the
assertion fails, and tests can only be failed from the test's
main goroutine.

* Use EventuallyWithT
2023-08-30 16:54:53 +00:00
Michael WilsonandJakub Nyckowski 90395263f2 Add access list members to the cache. (#30837)
* Add access list members to the cache.

Access list members have been added to the cache. To support this, the access
list member gRPC client methods have been implemented. A few extra gRPC
methods were added to the access list service. Additionally, a few changes
were made to the cache tests since the backend for the access list now
performs multiple backend calls.

* Further tuning of backend.

* Revert removal of access list members assignment.

* Update lib/cache/cache_test.go

Co-authored-by: Jakub Nyckowski <jakub.nyckowski@goteleport.com>

* Remove debugging statements, tune legacy header conversion.

* Remove AccessListMembers reference, as it's no longer needed.

---------

Co-authored-by: Jakub Nyckowski <jakub.nyckowski@goteleport.com>
2023-08-23 17:43:16 +00:00
Lisa Kim 1fd9b9afad Add required title to access list resource (#30657) 2023-08-21 16:35:41 +00:00
Michael 9c55a33e01 Add Unified Resource watcher (#28296)
* Adds a UnifiedResource watcher to the auth server. This watcher
will watch all the types that are displayed in the web UI and store
them in-memory to allow us to search/filter/query and get multiple
kinds returned at the same time.
[RFD](https://github.com/gravitational/teleport/pull/28162)

* Add ListUnifiedResources gRPC and web endpoints (#29661)

Adds the `ListUnifiedResources` grpc endpoint that returns paginated unified resources and exposes it in the web apiserver

* Fix test
2023-08-14 21:13:46 +00:00
64d3e8c505 Add discovery for Kubernetes apps (#28988)
* Add discovery for Kubernetes apps

* Address review comments

* Init nil slice instead of empty one

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Improve comment wording.

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Optimize discovery clients initiation code

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Combine var usages

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Fix error message

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Handle the error

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Remove unneeded input

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Use once for kubernetes client getter

* Simplify clients structure for discovery

* Add umbrella field for discovery matchers

* Move port protocol detection into discovery

* Add automatic protocol detection to the Kuberentes fetcher

* Simplify kube apps discovery test

* Return concrete fetcher instead of interface

* Remove parallelization of a test.

* Fix race condition in the test

* Fix after rebase

* Address review comments

* Use var instead of empty slice

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Optimize switch

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Decapitalize error message

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Use var instead of empty slice

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Use t.Parallel()

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Remove unneeded test parameter

* Use t.Parallel()

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Use var instead of empty slice

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Fix tests

* Improve wording.

Co-authored-by: Tiago Silva <tiago.silva@goteleport.com>

* Address review comments

* Refactor discovery clients location

* Fix flaky tests

* Fix comment

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>

* Address review comments

* Fix tests after rebase

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
Co-authored-by: Tiago Silva <tiago.silva@goteleport.com>
2023-08-09 14:44:58 +00:00
Michael Wilson 54c7343c9b Add user login state to the cache. (#30139)
* Add user login state to the cache.

The user login state has been added to the cache. This will allow user login
state lookups to be quickly looked up on login.

* Add in user login state service to attach to cache.

* Use fallback for user login state.

* Defer after checking branch, address new logger.
2023-08-09 02:53:03 +00:00
Tiago Silva 1178971b3d Remove GetAppSessions and deprecated DatabaseServerSpecV3 fiels (#30141)
This PR removes `GetAppSessions` functions in favor of
`ListAppSessions`.

It also removed all the deprecated fields in the `DatabaseServerSpecV3`
message.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2023-08-08 16:59:46 +00:00
Mike Jensen 1022fe926c collections.go: Fix Memory Aliasing in getAll (#30127)
Resolved a memory aliasing issue flagged by gosec in the getAll function.  The issue being reuse of the loop variable's memory address.
This commit fixes the issue by creating a unique variable per loop iteration, avoiding the aliasing.
2023-08-07 15:14:23 +00:00
Brian Joerger 29ff71ef09 Implement headless watcher approval logic in the Electron App. (#29097) 2023-08-01 18:44:47 +00:00
Michael Wilson d9ea2061d7 Add the AccessList to the cache. (#29119)
* Add the AccessList to the cache.

The AccessList has been added into the cache. The AccessList resource
and its supporting resources had to be moved back into api for this so that
it can be properly referenced in api/client/events.go, which is necessary
for cache propagation.

* Address remaining lib/types references.

* Add in additional test to events_test.go.

* GCI.

* Add back in client wrapper so that the cache will work properly.

* Traits ToProto order is deterministic.

* Add in compile time access list client check.
2023-07-18 15:29:22 +00:00
Michael Wilson 983e0cc611 Support non-gogo objects for auth service events. (#29056)
* Support non-gogo objects for auth service events.

Auth service events will now support non-gogo objects. This was done by
generating the events and associated objects with regular go protobuf
instead of gogo and then correcting the code for the differences in
code generation.

* Correct lock copying in event protobuf.

* Temporarily ignore event.proto in buf breaking.

* Attempt to keep buf breaking from breaking.

* Remove comment.

* Rename gproto to googleproto.

* Rename api/client/proto import to authpb and googleproto to proto.

* Correct comment, add in test exercising proto.Equal.

* GCI.

* Events test actually does work.
2023-07-17 15:32:03 +00:00
Gabriel Corado a62b109b87 Move database validation to gRPC methods (#28619)
* refactor: move database validation to grpc

* test(local): update CRUD databases test
2023-07-04 13:39:17 +00:00
Brian Joerger f7bd643652 * Enable headless authentication event watch. (#28234)
* Add WatchPendingHeadlessAuthentications rpc.
2023-06-28 18:03:53 +00:00
Michael Wilson 4bc2c04e63 Add mapping between user groups and applications. (#27812)
* Add mapping between user groups and applications.

Within Okta, user groups can assign permission to many applications and
applications can belong to many user groups. This commit establishes that
mapping so that the Okta service can perform more user friendly access
requests by adding all applications from a user group to the access request
and additionally allowing application access requests to request associated
user groups as well.

* Adjust NewUserGroup to take a spec.
2023-06-16 17:52:31 +00:00
Edoardo Spadolini 94aea6f188 Pass context through UpsertAuthServer (#27867)
* Pass context through UpsertAuthServer

* Pass context in (*ProcessStorage)GetState
2023-06-15 14:52:21 +00:00
Edoardo Spadolini 604ad19791 Delete proxy heartbeats on graceful shutdown (#27686)
* Pass the context through DeleteProxy

* Delete proxy heartbeats on graceful shutdown

* Pass context through UpsertProxy

* Tweak logging

* Move heartbeat deletion to proxy.shutdown
2023-06-12 18:18:57 +00:00
Michael Wilson 892883fbcd Simplify Okta assignment statuses. (#25166)
* Simplify Okta assignment statuses.

The Okta assignment statuses have been simplfieid so that there's only a
status on the Okta assignment object itself and the number of states is
reduced.

* Fix tests, remove unused code.

* Add in Duration for update statuses to prevent changing status too soon.

* Make sure LastTransition is UTC.

* Remove actions in favor of targets, make cleanup time non-nullable.
2023-04-26 13:30:10 +00:00
Andrey Bulgakov 5b2998a455 Generic read guards (#24425) 2023-04-15 20:52:16 +00:00
Andrey Bulgakov ad80fa3e17 Partial cache healthiness (#24080)
* Partial cache healthiness

* IsSupersetOf -> Contains

* NewWatchStatus fixes

* make map[kindSubKind]types.WatchKind with capacity

* fixed TestRootNetwork?

* post-rebase fix

* fixes regarding docs/comments

* const noSubKind = ""

* preallocate slices for validKinds

* DisablePartialHealth

* test fixes

* fixed struct logging field name

* use custom identity in TestEventsPermissionsPartialSuccess

* fixed TestNodeCAFiltering

* don't look at versions in events APIs

* RFD state: implemented
2023-04-15 20:07:43 +00:00
Michael Wilson 3906b36c0e Allow the Okta role to read the cluster name. (#24538)
The Okta role is now able to read the cluster name.
2023-04-13 15:59:51 +00:00
Marco André Dinis c0e5e1a1ef Integration: add service to server and client (#24133)
* Integration: add service to server and client

* Add cache for Integration to Proxy

* Add RO for Integration resource for Proxy role
2023-04-12 11:34:21 +00:00
Michael Wilson f958facdac Add CA, Role, Lock AuthPreference RO persmissions to RoleOkta. (#24089)
* Add CA, Role, Lock AuthPreference RO persmissions to RoleOkta.

RoleOkta now has read only access for CertAuthority, Role, Lock, and
ClusterAuthPreference objects so that it can utilize an authorizer when
redirecting apps.

* Remove lock from Okta cache, remove tasks*.go.
2023-04-11 15:44:56 +00:00
ef8da1724e Security fixes 03/23 (#23864)
* Prevent tunneling if the os login doesn't exist

A user.Lookup was added to srv.RunForward to prevent dialing
and forwarding any data if the os login is not found. The check
alone only terminates the direct-tcpip ssh channel and not the
underlying ssh connection.

In order for the parent process to determine if the ssh connection
should be terminated it needs to know why the child exited. That was
not possible by looking at the exit code and any data written to
standard error of the child process was forwarded to standard error
on the parent; which was used to simply log the error and move on.
To pass more detailed errors to the parent, the child process spawned
by srv.RunForward now json marshals the trace.Error to standard
error which is then decoded by the parent process. If the parent
detects the error was due to a missing user it terminates the ssh
connection.

tsh ssh -N was also modified to terminate if the command context
of tsh OR the ssh connection to the node is closes. Prior, it
only terminated if the user cancelled the process by blocking on
ctx.Done(). While this was necessary to end session if the os
login does not exit, it also forces tsh to exit if the node
goes offline.

Note: This does not include any propagation of error messages to the user,
so there won't be any indication from tsh about why the connection was closed.
The session also will not be terminated until the first attempt to forward data and
NOT when the session is created due to the way -N is implemented.

Fixes #217

* Prevent unauthorized access to kube clusters by upserting kube_servers

This PR changes the behavior of the kubernetes_service when validating access
to kubernetes clusters. Previously, the kubernetes_service would use the first
kubernetes cluster it found in the Auth server backend to validate access. This was
problematic because if the first kubernetes cluster was upserted with a
the same name as a kubernetes cluster the user was trying to access but
with different labels, the user would be able to access the cluster even
though they shouldn't be able to.

This PR changes the behavior of the kubernetes_service to use the
in memory kubernetes cluster representation used for heartbeats
instead of relying on the information received from the auth server. This would
block the user from accessing the cluster if the cluster was upserted
with a different set of labels since the kubernetes_service would not
have the updated labels in memory and would deny access.

Fixes #469

---------

Co-authored-by: Tim Ross <tim.ross@goteleport.com>
Co-authored-by: Tiago Silva <tiago.silva@goteleport.com>
2023-03-31 21:55:13 +00:00
Michael Wilson c5d54c411c Allow Okta service reverse tunnel access. (#23702)
* Allow Okta service reverse tunnel access.

In order to allow the Okta service to be connectable via the reverse
tunnel, the following things were added.

* The cache has permissions to retrieve cluster configuration objects.
  While here, I removed access to the App objects, which was not necessary.
* The permissions have been updated to allow for AppServer access and
  ClusterNetworkingConfig access.
* The cache has been updated to cache app servers and cluster networking
  configuration resources. While here, access to App objects has been
  removed.
* The reverse tunnel now recognizes the Okta role.

* Add in ListResources to the Okta access point.

* Remove access to apps and to access requests.

* Add in Semaphore read/write permission.

* Include cache entry for app server. Remove read access for access request.
2023-03-30 16:10:57 +00:00
Michael Wilson d1708a3095 Refactor UserGroups local service to use generic service. (#23548)
* Refactor UserGroups local service to use generic service.

The UserGroups local service now uses the generic service. This came about
due to a bug in the pagination logic for the user group listing. This fixes
that issue and simplifies the user group service logic.

* Turn *Svc vars into *Cache vars to make things uniform.
2023-03-24 17:19:30 +00:00