Commit Graph
301 Commits
Author SHA1 Message Date
rosstimothy d002d1e43a Require that FnCache keys are comparable (#53565)
Adds an additional type constraint go FnCacheGet and FnCacheGetWithTTL
to enforce that all keys are comparable. This should allow the
removal of various compile time hashability checks that are in
place for existing keys of custom types.
2025-03-29 14:40:32 +00:00
Noah StrideandMarco Dinis 0586278cde Migrate GetClusterName to gRPC (#53164)
* Adjust GetClusterName method signature to include context.Context

* Start hacking on gRPC GetClusterName impl

* Fix test mocks to match signature

* Fix integration tests

* Fix integrations tests

* Missing ctx

* New GetClusterName RPC implementatin

* Add fallback cluster name

* Correct godoc comment

* Remove unused method

* Remove unused import

* Fix E2E test

* Fix tests

* Fix deferred context cancel in test conflicting with parallel subtests

* Fix import

* Fix imports

* Update lib/auth/auth_with_roles.go

Co-authored-by: Marco Dinis <marco.dinis@goteleport.com>

---------

Co-authored-by: Marco Dinis <marco.dinis@goteleport.com>
2025-03-20 10:07:02 +00:00
Noah Stride f0f3e5c2a6 Remove deprecated ReverseTunnel functions (#53084)
* Remove deprecated ReverseTunnel functions

* Add notimplemented handler
2025-03-19 14:42:00 +00:00
Noah Stride cbf3f2b6de Remove unused SetClusterName HTTP RPC (#53146)
* Remove unused SetClusterName HTTP RPC

* Fix tests

* Fix spacing

* Fix suite test
2025-03-19 10:02:08 +00:00
Bernard Kim bd8933ef51 access_monitoring_rule: Support spec.automatic_approval field (#52274)
* Support automatic_approval in AMR spec

* Support filter by automatic_approval_name

* Update AMR validation

* Update terraform schema

* Fix import

* Add additional test case

* Improve amr spec godocs

* make -C integrations/terraform docs
2025-02-27 19:04:24 +00:00
rosstimothy 967053bb94 Use b.Loop in benchmark tests (#52520)
Prefer using b.Loop instead of b.N style benchmarks now that we are
using Go 1.24.

See https://pkg.go.dev/testing#B.Loop for more details.
2025-02-26 19:08:05 +00:00
Marco Dinis 4fc9727324 WebAPI: Add state as filter for UserTasks listing endpoint (#52191)
* WebAPI: Add state as filter for UserTasks listing endpoint

* fix pagination bug

* Add filters param to ListUserTasks
2025-02-20 09:24:06 +00:00
rosstimothy efaec73e21 Remove the auth namespaces REST API (#50999)
Eliminates the namespace CRUD API as part of
https://github.com/gravitational/teleport/issues/49509.

The most notable change introduce here is with flushCache in the
auth helpers. It was ironically using namespaces because they
were deprecated, however, it has since been updated to use a role
instead. The helpers.go file was also updated not to rely on testify
in attempt to prevent it from being included in production builds.

Updates https://github.com/gravitational/teleport/issues/6394.
2025-01-15 14:21:23 +00:00
STeve (Xin) Huang f0abbce0fd GitHub proxy part 6: proxing Git using SSH transport (#49980)
* GitHub proxy part 6: proxing Git using SSH transport

* better command parsing and update suite

* refactor

* revert unnecearrty files

* address review comments

* ut fix

* revert localsite_test.go

* change special suffix to teleport-github-org for routing

* fix routing ut

* minor typo edit

* fix ut after sshca change

* add UT to sshutils

* minor review comments

* fix api ut because of special suffix change

* GitServerReadOnlyClient

* downgrade error to warning

* run go mod tidy. not sure why it's needed

* rename mock.go to mock_test.go
2025-01-14 21:48:04 +00:00
rosstimothy 08d60edb86 Remove unused NewIdentityServiceV2 (#50991)
Includes https://github.com/gravitational/teleport.e/pull/5832
which removed the last invocations of the V2 function.
2025-01-14 09:15:57 +00:00
rosstimothy 824137470d Convert lib/cache to use slog (#50318) 2024-12-17 21:55:58 +00:00
c6e46e3262 Workload ID: Add WorkloadIdentity local service and cache config (#49942)
* Add WorkloadIdentity store and cache

* Update lib/services/local/workload_identity.go

Co-authored-by: Edward Dowling <EdwardDowling@users.noreply.github.com>

* Update lib/services/local/workload_identity.go

Co-authored-by: Edward Dowling <EdwardDowling@users.noreply.github.com>

* Update lib/cache/resource_workload_identity.go

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

---------

Co-authored-by: Edward Dowling <EdwardDowling@users.noreply.github.com>
Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
2024-12-10 09:22:09 +00:00
STeve (Xin) Huang c4d0dc4f00 GitHub proxy part 2.5: git_server cache (#49564)
* GitHub proxy part 2.5: git_server cache

* revert event

* fix getAll

* review comments
2024-12-05 03:18:50 +00:00
STeve (Xin) Huang 903fee053f GitHub Proxy part 3: gen github user cert and export CA (#49396)
* GitHub Proxy part 3: gen github user cert and export CA

* address pr comment

* minor refactor

* use cache

* fix build and cache
2024-12-03 18:17:21 +00:00
STeve (Xin) Huang b5a6c679fe GitHub Proxy part 3.5: caching PluginStaticCredentials (#49472)
* GitHub Proxy part 3.5: caching PluginStaticCredentials

* fix lint
2024-12-03 15:32:00 +00:00
Trent Clarke 088580668a Expose Account Assignmnets via cache (#49567)
Extends cache to allow consumers to fetch a specific Identity Center account
assignment, rather than just listing them.
2024-12-02 02:11:46 +00:00
Edoardo Spadolini a92e49fc74 Use thread-local RNGs for jitters (#48860)
* Use math/rand/v2's thread-local RNG for jitters

* Replace NewJitter() with DefaultJitter

* Replace NewFullJitter() with FullJitter

* Replace NewHalfJitter() with HalfJitter

* Replace NewSeventhJitter() with SeventhJitter

* Inline jitters in lib/utils/diagnostics/latency

* Replace var jitters in lib/utils with proxy functions

* Replace utils.HalfJitter with retryutils.HalfJitter

* Replace utils.FullJitter with retryutils.FullJitter

* Replace utils.SeventhJitter with retryutils.SeventhJitter

* Replace sharded jitters with thread-local ones

* Remove NewSeventhJitter reference in integrations
2024-11-13 16:35:09 +00:00
Sakshyam Shah 3757080c6d feat: identity center and provisioning service gRPC client with deleteAllxxx methods (#48714)
* feat: identity center and provisioning service gRPC client with deleteAllxxx methods

* DeleteAllPermissionSets

* run make fix-imports
2024-11-12 16:57:47 +00:00
Trent Clarke 81e4152cb5 Exposes Identity Center Account Assignment listing on Cache interface (#48655) 2024-11-10 23:20:33 +00:00
Alex McGrathandMaxim Dietz fa97b8f90d feat: Allow including Access Lists as nested members and owners (#38738)
- Recursively check for accesslist membership

- Allow adding/removing/listing included access lists in acl commands

- Add a recursive test

- Use dynamic access lists structure from RFD

- Resolve proto changes

- Exclude 'list' members from Access List memberCount

- Calc Access List member count with members of type 'list' excluded,
  return seperately to front end

- Update examples/integrations

- Update crd docs

- Update tf docs

- Perform calculation of inherited roles/traits to AccessList service in
  order to utilize cache and minimize number of requests.

- Grant Okta integration RO for Access Lists

- Update AccessListMember-* events

- Include count for inherited grants

- Include MembershipKind of affected member(s)

- Emit inherited grants / members' MembershipKind for AccessListMember-*
  events

- Update notified owners for Access Requests

- Ensure dynamic owners are notified for Access Requests

- Ensure dynamic owners are notified via Slack integration

- Optionally pass an AbortSignal to `fetchAccessLists` in Web UI

- Replace usages of `services.IsAccessListOwner/IsAccessListMember` with
  equivelant funcs from `Hierarchy`

- Remove final references to AccessListMembershipChecker

- Don't allow ACL deletion when member/owner in other lists

- Guard Access List deletion behind membership/ownership checks for List

- Expose Hierarchy func to recursively get all members

- Tidy UserLoginStateGenerator logic involving ACL Membership/Ownership

Co-authored-by: Maxim Dietz <maxim.dietz@goteleport.com>
2024-11-01 22:07:36 +00:00
Trent Clarke 57daeced9d Expose Provisioning States via Cache interface (#48115) 2024-10-30 09:42:21 +00:00
Przemko RobakowskiandZac Bergquist dddd9ea5a2 Fix update and list for DynamicWindowsDesktops (#48046)
* proto

* Fix update for DynamicWindowsDesktops

* fix test server

* fix test

* fix test

* fix test

* Update api/proto/teleport/dynamicwindows/v1/dynamicwindows_service.proto

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* update proto

* fix tests

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2024-10-29 22:18:27 +00:00
Hugo Shaka 1807dfdf52 Implement immediate schedule support for automatic updates (#47920)
* Implement immediate schedule support

* expose edition, fips, and ensure ping endpoint answers

* fix after rebase

* fix cache tests
2024-10-29 15:11:29 +00:00
Trent Clarke 54c9060e75 Adds caching support for Identity Center resources (#47880)
* Adds caching support for Identity Center resources

Adds support for caching (and watching) some IdentityCenter resource types.

Specifically:
 - identitycenterv1.Account
 - identitycenterv1.AccountAsssignment
 - identitycenterv1.PrincipalAssignment

Also breaks the cache's `genericcollection` out into its own file as an attempt
to reduce clutter in the main collections source file.

* Update identitycenter_events.go

* Update identitycenter_events.go

* Speed up tests
2024-10-28 12:20:14 +00:00
Hugo Shaka fbbcb5fe39 Add AutoUpdateAgentRollout service and cache (#47833) 2024-10-24 12:08:07 +00:00
Przemko Robakowskiandrosstimothy ee09328cc4 Cache and watcher support for DynamicWindowsDesktop (#46989)
* Add DynamicWindowsDesktop to proto

* Add resource matchers to Windows desktop service config

* Implement API and backend for DynamicWindowsDesktop

* Cache and watcher support for DynamicWindowsDesktop

* Fix imports

* fix test

* move rpc to separate server

* rework api and grpc more towards 153-style

* e

* remove dynamic windows from paginated resource

* add tests

* add tests

* Update api/proto/teleport/legacy/types/types.proto

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

* lint

* gci

* cleanup

* cleanup

* use generic service

* cleanup

* cleanup

* cleanup

* cleanup

* cleanup

* gci

* rework cache

* rework cache

* add admin action checks

* move service

* add service test

* gci

* review comments

* review comments

* review comments

* update interfaces

* gci

* review comments

* review comments

* fix loggers

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2024-10-22 21:22:03 +00:00
Vadym Popov 10fb784495 Client AutoUpdate proto structure changes (#47532)
* Update client autoupdate proto structure

* Replace with reserved

* Fix unit tests

* Add more info in proto

* Rename proto to be aligned RFD namings

* Replace enum type for ToolsMode to string
2024-10-17 14:36:06 +00:00
Trent Clarke 859f098434 Storage service for SCIM state state (#47377)
* SCIM state record storage service

* Address review feedback

* Add page size option to listings

* reduce boilerplate

* It's not a misspelling, it's a perfectly valid regional variant.

* Address review feedback
2024-10-16 00:34:38 +00:00
Marco Dinis 5477077da8 UserTasks: List by Integration service method (#47327)
This PR adds a new method that allows users to list UserTasks by
Integration.
Given this is our main use case when showing the UserTasks in the UI
(we'll be always showing UserTasks for a given integration), we created
a dedicated method in the gRPC.
We'll probably add more filters but they will always include the
integration (at least for the uses cases we have currently).
2024-10-09 08:46:06 +00:00
Marco Dinis 4d1f1b98c8 User Tasks: add discover-ec2 task type (#47062)
* User Tasks: add `discover-ec2` task type

This PR adds more business logic into the User Tasks, in particular into
the `discover-ec2` task type.

One of the key features of the DiscoverEC2 User Tasks is that we must
have a single task per:
- integration
- region
- account id
- issue type

This allows user to have a detailed view of the issues their are facing
but still grouping EC2 instances.

To do this, we had to move the region and account id up one level.
Previously they were at the instance level, and it would require
iterating over them to actually create the group (uniq key) we want.

This also adds well known errors as issue types to ensure we validate
them.

A later PR will come where we actually start creating/updating
DiscoverEC2 User Tasks from the DiscoveryService.

* use strings.Compare

* improve docs and fix typos
2024-10-04 11:05:27 +00:00
Noah Stride 8a8534260a Migrate ReverseTunnel Resource APIs from HTTP to gRPC (#46761)
* Start hacking on migrating reversetunnel

* Migrate ReverseTunnel HTTP API to gRPC

* Wire Cache into Presence GRPC service

* Add TestPresenceService_ListReverseTunnels

* Add UpsertReverseTunnelV2 store method which returns upserted resource

* Make API client return reversetunnel on upsert

* Add TestListReverseTunnels

* Add TestDeleteReverseTunnel

* Add TestUpsertReverseTunnel

* Missing err check

* Remove presenceService from gRPCServer struct

* Add deprecations on GetReverseTunnels
2024-10-02 08:44:01 +00:00
Vadym Popov 4ec82ced6b Fix interface check for clusterNameExecutor (#46818) 2024-09-21 07:01:34 +00:00
Yassine Bounekhla 73df51c767 add periodic cleanup for notifications (#40941) 2024-09-20 10:56:41 +00:00
Marco Dinis 77d28b2b34 User Tasks: services and clients implementation (#46131)
This PR adds the implementation for the User Tasks:
- services (backend+cache)
- clients (API + tctl)
- light validation to set up the path for later PRs
2024-09-19 09:56:41 +00:00
Vadym Popov f4fc673e45 Add AutoUpdate Client/Cache implementation (#46661)
* Add AutoUpdate Client/Cache implementation

* CR changes

* Add permission for proxy to access resources

* Rename all occurrences auto update to camelcase

* Remove auto update client wrapper

* Drop AutoUpdateServiceClient helper
Rename comments for consistency
2024-09-19 02:44:02 +00:00
Andrew Burke 70c8679a59 Apply static host users to nodes (#46365)
This change adds functionality to create host users on a node from
matching static host user resources.
2024-09-11 17:48:48 +00:00
Andrew Burke 564c245eca Add StaticHostUserV2 (#46038)
This change adds the v2 static host user resource.
2024-09-04 21:16:11 +00:00
rosstimothy 5f5add661d Add backend.NewKey function (#45611)
Refactoring in preparation for creating a concrete backend.Key
type instead of using []byte for keys. The backend.Key function
still exists and was not deprecated because it is still consumed
in e. It will be removed when the e ref is updated after e uses
backend.NewKey.
2024-08-21 18:48:45 +00:00
Andrew Burke ca7e49b953 Add static host user cache (#45573)
This change adds cache support for static host users.
2024-08-19 18:48:18 +00:00
Forrestandrosstimothy 54ff173098 improve max nodes benchmark (#45545)
* improve max nodes benchmark

* Update Makefile

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

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2024-08-19 13:38:26 +00:00
Noah Stride 797fc69ab5 Add backend Service and Cache support for SPIFFE Federation resource (#45054)
* Start adding `lib/services` content for SPIFFEFederation type

* Add SPIFFEFederation resource to cache

* Wire SPIFFEFederation into cache

* Fix NewTestAuthServer

* Start writing tests

* Add more test cases to validation

* Add tests to cache for SPIFFEFederation

* More test coverage

* Add test for DeleteSPIFFEFederations

* Finish off tests for SPIFFEFederation resource

* go mod tidy

* Go mod tidy

* Appease linter

* Avoid forcing kind/version in MarshalSPIFFEFederation

* more linter appeasal
2024-08-12 12:25:59 +00:00
Forrest ef06b4117d reduce flake during backend interruptions & slow auth cache init (#44601) 2024-07-26 16:03:06 +00:00
Tiago Silva 53e34892c0 [sec_scan][12] add cache and events support for AccessGraphSettings (#44016)
* [sec_scan][12] add cache and events support for `AccessGraphSettings`

This PR adds the cache and events support for the new resource `AccessGraphSettings`.

This PR is part of https://github.com/gravitational/access-graph/issues/637.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>

* add tests

---------

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2024-07-17 18:53:58 +00:00
rosstimothy b151260398 Move trusted cluster storage out of presence (#43771)
This groups the trusted cluster and cert authority storage into
the same service. While on its own this doesn't change much, it
unlocks the ability to fix racy behavior described in
https://github.com/gravitational/teleport/issues/36400.
2024-07-03 15:19:39 +00:00
Krzysztof Skrzętnickiandrosstimothy a094350a9b Cache support for database objects (#41692)
* Cache support for database objects

* Update tests

* lint fix

* Restore public API functions

* Implement `databaseObjectExecutor.deleteAll()` through now-exported `local.DatabaseObjectService`

* Drop removed field

* Update lib/services/local/databaseobject.go

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

* Fix lint

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2024-05-27 11:36:58 +00:00
94332f34e9 Add initial condition parser for access monitoring rules (#40659)
* Add initial condition parser for access monitoring rules

* Update integrations/access/accessrequest/app.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Check previously unchecked error and minor refactor of AMR

* Simplify check for applicable access monitoring rules

* Refactor access monitoring rules plugin integration

* Fix formating and move lock aquisition

* Add methods for listing access monitoring rules with a filter

* Add contains_any predicate expression func

* Add in is_empty func to predicate expression

* Lock AMR cache in plugins while getting initial rules

* Add in check for access monitoring rule version

* Update integrations/access/accessrequest/app.go

Co-authored-by: Roman Tkachenko <roman@goteleport.com>

* Update integrations/access/accessrequest/app.go

Co-authored-by: Roman Tkachenko <roman@goteleport.com>

* Move lock so it doesnt persist over api calls

* Remove unused constant and add more context to logs

* Appease linter

* Update access monitoring rules tests to pass rule validation

* Add in missing access monitoring rules list with filter code

* Appease linter

* Add back validation code for AMRs

* Fix test plugin role and rename listaccessmonitoringrulewithfilter

* Fix local test for AMR crud operations

* Fix end range for listing rules

* Fix unwrapping of resource153 event for monitoring rules

* Refactor AMR cache init into helper function in plugin app

* Add seperate response type for listAccessMonitoringRulesWithfilter

* Add context to log for plugins failing to fetch recipients

* Grab access monitoring rules cache under lock all at once

* Add clarification for which fields are optional in listAMRfilter req

* Update integrations/access/accessrequest/app.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Update integrations/access/accessrequest/app.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Add forEach to common recipient set

* Move type check to after AMR event op switch

* Move turn some default parser spec methods to funcs

* Make some predicate func usable as methods as well

* Add len func to common recipient sets

* Add integration test for access monitoring rule and slack plugin

* Fix error types and messages when handling AMRs

* Use generic list resource with filter for AMR

* Add test for generic listResourceWithFilter

* Update listResourceWithFilter to use revision instead of id

* Update generic tests to use revision instead of id

* Fix linting

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
Co-authored-by: Roman Tkachenko <roman@goteleport.com>
2024-05-24 18:45:13 +00:00
Forrest 171758f6e8 remote Metadata.ID and Lease.ID fields (#41732) 2024-05-23 15:08:46 +00:00
Zac Bergquist d1785ff148 Remove handling of old proxies (#41348) 2024-05-21 18:46:37 +00:00
Yassine Bounekhla f2c8833cea implement listing notifications for a user with matching (#39942) 2024-05-15 19:26:58 +00:00
Marek Smoliński 1aea9b48e8 Add fallback to cache.GetAccessList call (#41258) 2024-05-08 16:58:04 +00:00