Commit Graph
366 Commits
Author SHA1 Message Date
STeve (Xin) Huang 8728071434 vnet 2026-07-06 15:20:19 -04:00
Travis LaDuke 0394d3e4a5 UI interaction events protos (#66372)
* Add ui interaction event protos

* make grpc

* Add userEventService method

* Fix signature

* Fix username field

it would have been logging the hash of ""
2026-05-28 18:36:15 +00:00
STeve (Xin) Huang c2307ccd04 Merge branch 'master' of github.com:gravitational/teleport into STeve/vnet_process_app_https_tunnel (#66451) 2026-05-27 14:44:32 +00:00
Grzegorz Zdunek f06d535d8d Connect: Do not leak last terminal input in logs (#67049)
* Do not leak `lastInput` in logs

* Security hardening: use `execFile` instead of `exec`
2026-05-27 08:28:14 +00:00
Chris Thach c46a8f5f14 Migrate MFA service from v1 to v2 (#66820)
* Migrate from mfa v1 to v2.

Signed-off-by: Chris Thach <[email protected]>

* Set deprecated proto option and update migration comment.

Signed-off-by: Chris Thach <[email protected]>

* Reduce nolint directives.

Signed-off-by: Chris Thach <[email protected]>

* Tag Ryan for the Desktop TODO.

---------

Signed-off-by: Chris Thach <[email protected]>
2026-05-22 18:49:20 +00:00
70257f28dc Add HiDPI display support for desktop sessions (#64160)
* Reduce WASM log level from TRACE to WARN in development

* Add HiDPI display support for desktop sessions

* rustfmt

* Update Monitor.tsx

Co-authored-by: Dan Share <[email protected]>

* Update codec.ts

Co-authored-by: rhammonds-teleport <[email protected]>

* UI updates

* Remove unused import

* pnpm format

* Fix popover not repositioning when window is resized

* Watch for DPR changes

* Add settings UI to connect

* Fix types

* Remove monitor icon

---------

Co-authored-by: Dan Share <[email protected]>
Co-authored-by: rhammonds-teleport <[email protected]>
2026-05-20 12:55:27 +00:00
Chris Thach c12fcaabc6 Add mfa v2 and webauthn v2 protos and gen Go bindings. (#66643)
Signed-off-by: Chris Thach <[email protected]>
2026-05-14 13:01:44 +00:00
rhammonds-teleportandPrzemko Robakowski a1067af54b Desktop Access: Fix Shared Directory Truncate Error (#66307)
* Change 'EndOfFile' property to int64 from uint32

* Plumb the new int64 'EndOfFile' field through the rest of the backend and client

* Switch 'size' field of truncate requests to uint64 instead of int64

* Update everything downstream of the new uint64 'size' field

* Update lib/srv/desktop/tdp/protocol/tdpb/translate.go

Co-authored-by: Przemko Robakowski <[email protected]>

---------

Co-authored-by: Przemko Robakowski <[email protected]>
2026-05-11 17:18:42 +00:00
Chris Thach f266f57714 Add VNet RPC to perform the session-bound MFA ceremony for in-band. (#66226)
Signed-off-by: Chris Thach <[email protected]>
2026-05-06 23:46:50 +00:00
Nibras Ohin 168ce07554 feat: Added basic setup for database access support via vnet (#65298)
* feat: added vnet support for database

* feat: handling some edge cases with db key

* minor improvements and tests

* feat: improve database certificate reissuance and enhance error handling in notifications

* splitting out teleport connect changes to separate pr

* refactor for DRY

* feat: added enforcement to get db-user from wire protocol for supported group of dbs

* added tests

* feat: added vnet filter logic to filter on vnet dns hash from status

* chore: removed db username as not supporting it now

* chore: added protocol validation

* chore: updating on pr comments

* chore: streamline fqdn resoluiont for db and better logging on db name conflict

* chore: simplify db resolution logic by handling multiple matches
2026-05-05 17:41:27 +00:00
Przemko RobakowskiandZac Bergquist 0065833422 Proto changes for Linux Desktop (#65692)
* Add LinuxDesktop gRPC and backend

* Add LinuxDesktop resource to unified resources

* Remove CloneResource

* Review comments

* Fix logins

* Review comment

* Add ClonableResourceWithLabels

* Fix missing CloneResource

* Update lib/auth/linuxdesktop/linuxdesktopv1/service.go

Co-authored-by: Zac Bergquist <[email protected]>

* Proto changes for Linux Desktop

* Fix role

* Update lib/auth/auth_with_roles.go

Co-authored-by: Zac Bergquist <[email protected]>

* Update lib/web/ui/server.go

Co-authored-by: Zac Bergquist <[email protected]>

* Fix compilation

* Review comments

* Review comments

* e

* skip gogoproto

* e

* fix test

---------

Co-authored-by: Zac Bergquist <[email protected]>
2026-04-29 07:20:46 +00:00
Tiago Silva 723043621d sessionsearch[22]: add SearchMode enum to session search protos (#66205)
Adds a `SearchMode` enum to session search protos, allowing clients to choose the search mode that best fits their keywords.

Some searches perform better with embeddings only, while others work better with strict keyword matching. This change lets clients opt into their preferred search method, while keeping hybrid search as the default.

Signed-off-by: Tiago Silva <[email protected]>
2026-04-27 14:30:35 +00:00
Tiago Silva d28831f04f prevent unauthorized uploads via encrypted recordings service (#66081)
Teleport Auth server allows clients that do not present a certificate to access parts of its API. This deliberate bypass exists to support joining methods or password logins where a user or server does not have a certificate yet but has a secret that can be exchanged for a certificate.

In order to keep the system compatible and reduce the permutations required, Teleport assigned these unauthenticated connections a role called `Nop`. This role has no permissions and the only reason why it exists is so we can still build a context and checker.

This role was historically embedded in a structure called `BuiltinRole`. This struct implements the `Identity` interface and by its documentation is used by teleport services that belong to this particular cluster.

Some of the Auth server handlers are restricted to server identities and the check consists in something like:

```go
	authCtx, err := s.authorizer.Authorize(ctx)
	if err != nil {
		return nil, trace.Wrap(err)
	}

	if b, ok := authCtx.Identity.(authz.BuiltinRole); !ok || !b.IsServer() {
		return nil, trace.AccessDenied("only server identities can verify validated MFA challenges")
	}

```

As seen above, part of the verification consists in type asserting the `authCtx.Identity` to confirm it belongs to a local server and then we check if the role belongs to an actual server.

In our codebase, we have a function called `IsLocalOrRemoteService` with the following body:

```go
// IsLocalOrRemoteService checks if the identity is either a local or remote service.
func IsLocalOrRemoteService(authContext Context) bool {
	switch authContext.UnmappedIdentity.(type) {
	case BuiltinRole, RemoteBuiltinRole:
		return true
	default:
		return false
	}
}
```

Given that unauthenticated users were wrapped in `BuiltinRole`, this function would return true for them. This caused the encrypted recordings service to authorize unauthenticated clients to access the upload handlers. This was the only access check applied, so the bug allowed any client to upload and replace files in the backend storage.

This change fixes that by enforcing proper RBAC checks in the encrypted recordings `CreateUpload`, `UploadPart` and `CompleteUpload` handlers. It also forbids `RemoteBuiltinRole` (remote/leaf cluster identity) from uploading files to root clusters.

This change also moves RoleNop out of the `SystemRole` type and into a new distinct type, `UnauthenticatedRole`, so the compiler prevents it from being used anywhere a real authenticated system role is expected. As a defence-in-depth measure, the middleware now rejects any TLS certificate that claims the Nop role in its Groups or SystemRoles fields.

This PR fixes a separate issue on top of the existing one where certificate rotation of encrypted sessions was available to unauthenticated users.

The protection introduced was `authCtx.AuthorizeAdminAction()`, which verifies if someone has completed the MFA challenge (if required). That was the intended idea, but given how Teleport handles unauthenticated users, they were marked with AdminActionAuthNotRequired, which bypassed MFA checks. Because of that, any client - authenticated or unauthenticated - with the ability to complete the MFA challenge (or if MFA was not required) could rotate the encryption keys for session recordings.

This doesn't significantly affect Teleport since the private keys are never exposed externally and previous keys always remain in the backend object, allowing old recordings to still be decrypted. The main concern is if the keys were rotated so many times that the backend item size exceeds the 400KB limit on DynamoDB. While this would cause the rotation to fail beforehand, it would also prevent any further rotations from succeeding.

This PR introduces proper RBAC for modifying types.KindRecordingEncryption and ensures that unauthenticated users are always assigned AdminActionAuthNotRequired.

Fixes https://github.com/gravitational/teleport-private/issues/2430
Fixes https://github.com/gravitational/teleport-private/issues/2429

Signed-off-by: Tiago Silva <[email protected]>
2026-04-27 09:40:39 +00:00
Erik Margetis 1450ade43b initial draft (#64972) 2026-04-22 23:40:37 +00:00
Kenneth 92d8f4f68d Remove device enrollment limits (#64226)
- Deprecate DevicesUsage field
- Remove DevicesUsage proto field
2026-04-22 21:44:19 +00:00
Tiago Silva 396ebf22f6 sessionsearch[13]: Add telemetry for session summary searches with filters (#65772)
* sessionsearch[13]: Add telemetry for session summary searches with filters

This adds session summary search events to Prehog and extends the
aggregated user activity report to capture both total search query
counts and how many of those queries were submitted with filters. It
also wires the new fields through anonymization, aggregation, generated
protobufs, and the related tests.

Signed-off-by: Tiago Silva <[email protected]>

* handle review feedback

---------

Signed-off-by: Tiago Silva <[email protected]>
2026-04-20 21:02:48 +00:00
rhammonds-teleport d563443346 Desktop Access: Support Shared Directory Removal (Backend only) (#65101)
* Add support for removing shared directories to Windows Desktop Service (TDPB only)

* Advertise support for shared directory removal

* Gracefully handle unknown device errors when removing RDPDR devices, but log a warning as this is probably caused by a bug.
2026-04-14 18:45:00 +00:00
Tiago Silva 60a7e68e07 sessionsearch[9]: add session search proto definitions for Auth and Access Graph (#64711)
Adds two proto files that together define the session summary search
feature.

  proto/accessgraph/v1/session_search.proto — internal, Auth->Access Graph
    Used exclusively by the Auth server. Defines SessionRecordingService
    with two RPCs:
      - SearchSessionSummaries: a bidirectional streaming RPC the Auth
        server uses to paginate through session summaries stored in the
        Access Graph. The Auth server sends search_params on the first
        message, receives batches of SessionSummary results each
        terminated by a PageComplete, and sends FetchMore to advance pages.
        Each SessionSummary includes session_end_event — the raw audit
        event the Auth server evaluates against the requesting user's RBAC
        permissions before deciding whether to forward the result to client.
      - StoreSessionSummary: used by the summarizer pipeline to persist
        session summaries and their vector embeddings to the Access Graph.

  api/proto/teleport/sessionsearch/v1/session_search.proto — public, Client->Auth
    Used by Teleport clients (tsh, web UI handler, etc.). Defines
    SessionSearchService.SearchSessionSummaries as a unary-request /
    server-streaming RPC. The Auth server implements this service: it
    receives the client's filter criteria, fans out to the Access Graph
    via the internal bidi stream above (handling all pagination
    internally), filters each result using session_end_event, and streams
    only the permitted SessionSummary results back. Clients see a single
    continuous stream with no pagination mechanics exposed to them.

Signed-off-by: Tiago Silva <[email protected]>
2026-04-13 13:27:12 +00:00
Tiago Silva f906ba7b01 sessionsearch[3]: wire summarizer resources into the cache layer (#64560)
Adds cache support for all summarizer resources (InferenceModel,
InferenceSecret, InferencePolicy, and RetrievalModel) by implementing
event parsers, cache collections, and read-through methods.

Part of https://github.com/gravitational/teleport.e/pull/8046

Signed-off-by: Tiago Silva <[email protected]>
2026-04-13 11:59:46 +00:00
Cam Hutchison 8a32b4d971 usagereporter: Add Identity Security streaming/aggregating events (#63753)
* proto/prehog: Sync from cloud repo for access graph usage

Sync the `prehog.v1` proto package sfrom the cloud
repo to bring in the changes for access graph usage events.

* proto/accessgraph: Extend EventsStreamV2 response for usage events

Extend the EventsStreamV2 response to allow usage events to be sent back
to teleport.

The usage events that can be sent back are currently all defined in the
`prehog.v1alpha` protobuf package. As this does not have a `go_package`
statement, we need to add a `M` flag to the buf config for generating
the Go code. There is no canonical package for the generated code as the
protos live and are generated in two repos (cloud and teleport).

* proto: Regenerate proto/grpc code for access graph usage events

Regenerate the generated proto code to include the changes for access
graph usage events. This includes the following packages:
- `prehog.v1` (Go and Typescript)
- `accessgraph.v1alpha` (Go)

The contents of this commit were auto-generated with:

    make grpc/host

* usagereporter: Add anonymizer for identity security events

Add types compatible with `Anonymizer` for the two identity security
events:
* `prehogv1a.IdentitySecurityGraphSizeEvent`
* `prehogv1a.IdentitySecurityAuditLogsIngestedEvent`

These events are directly transformed as they contain no anonymizable
data.

* usage: Aggregate access graph queries per user

Extend `aggregating.Reporter` to aggregate the number of access graph
queries per user so we can generate monthly user active reports of
access graph usage for self-hosted Teleport customers.

* aggregating: Rename some identitySecurity -> sessionSummary

Rename some variables and functions in the aggregating reporter to more
tightly scope the naming, using "sessionSummary" instead of
"identitySecurity". Another report is to be added named
"identitySecurity" as an aggregation of more general data about the
product.

The existing report defined in the proto -
`IdentitySecuritySummariesGeneratedReport` has been retained as that is
a larger change to make across repositories and with "Summaries" in the
name, is scoped enough to differentiate it from the upcoming report.

* aggregating: Aggregate identity security events into new report

Aggregate the `IdentitySecurityGraphSizeEvent` and
`IdentitySecurityAuditLogsIngestedEvent` events into the
`IdentitySecurityReport` aggregated report.

Aggregation for the graph size events is simply taking the last size of
each provider, as these are essentially guages reporting the size at a
point in time. Aggregation for the audit log events are an accumulation
by provider giving a total count over the report window.
2026-04-10 03:46:59 +00:00
Lisa Kim c097aca42b Emit UI access list related usage events (#63954)
* Define new access list UI related events

* Web: add access list related events

* Fix lint and review

* Address CR

* Address CR

- Added condition to check integrate is always defined for integrate event
- Added nil checks
2026-04-02 17:21:51 +00:00
Dan Share a9fbf8b910 [Browser MFA] Add Browser MFA to challenge request flow (#63936) 2026-03-26 12:24:12 +00:00
Nibras Ohin e69e793d5d fix: optimizing api call and allow searching db users with no-wildcards (#64449)
* fix: optimizing api call and allow searching db users with no-wildcards for db users

* chore: addressing pr comments on renaming var and updating comments

* chore: updated based on pr comments to add more tests

* chore: refactor connct button dropdown state rendering

* chore: using t.context() directly in the test

* chore: cleaner refactor of ActionButtons logic

* chore: updated unifiedresoruces test to re-use the existing mock auth client

* chore: removing fallback as not needed for connect

* chore: remove unused api

* chore: reworked test and updated no wildcard logic

* chore: remove unused GetAllowedDatabaseUsers method

* fix: put back test that verifies correct logins are returned for a leaf cluster with access request

* fix: updated parameterpicket to account for allowOnlySuggestions when filtering
2026-03-19 20:39:00 +00:00
Grzegorz Zdunek 030e483626 Connect: gracefully handle VNet service and app version mismatch (#64438)
* Add `VERSION_MISMATCH` status to `WindowsServiceStatus`

* Show error in UI

* Verify service compatibility with client

* Fix outdated comment

* Remove unnecessary stories

* Move `VerifyServiceInstalledAndMatchesClient` to separate file
2026-03-19 07:45:58 +00:00
charlestp 4c18fb78a2 Instrumentation of Discovery usage events for the new IAC flow (#64322) 2026-03-13 19:04:58 +00:00
Grzegorz Zdunek 90eabf6ee7 Connect: support MOTD (#64310)
* Add `message_of_the_day` to `AuthSettings`, remove unused `has_message_of_the_day`

* Support passing `whiteSpace` to `Text`

* Show MOTD before login

* Add tests and stories

* Remove `minHeight={0}`

* Move `MessageOfTheDay` to `ClusterLogin`

* Minor code style fix
2026-03-12 09:27:35 +00:00
Nic Klaassen 2a23ceb829 feat: add scoped roles field to access list types (#63919) 2026-03-10 23:29:33 +00:00
Maxim 01381a4c02 types: Add types for SSH Node Resource Constraints (#64287) 2026-03-06 21:13:43 +00:00
Nibras Ohin b8343ec963 feat: added support for db roles for auto user provisioning for teleport connect (#63818)
* feat: added support for db roles for auto user provisioning for teleport connect

* chore: added unit tests for the auto provisioned user support changes

* chore: added storybook tests

* chore: reflecting on pr comments

* fix: fixed loosing db roles on cert re-issue

* chore: add oneOf support for db roles in proto

* chore: udpated to do user transform in backend

* chore: updated to group auto provisioning fields together

* chore: updating to preset db user in search bar for auto user provisioning

* chore: making autoUserProvisioning type required to prevent future misses of setting it

* chore: updated to reflect on pr comments

* chore: updating to minimize new interface declaration
2026-03-06 15:20:11 +00:00
Dan Share 7c6057cce2 [Browser MFA] Add proto for Browser MFA feature (#64048) 2026-03-06 07:02:44 +00:00
Tiago Silva 0ad811bcbd add summaries_generated count to SessionSummariesGeneratedRecord (#64278)
Adds a new `summaries_generated` field to the `SessionSummariesGeneratedRecord`
proto message to track the number of session summaries generated per session
type and resource combination, in addition to the existing token counts.

Updates the reporter to increment this counter for each processed
summary event.

Signed-off-by: Tiago Silva <[email protected]>
2026-03-04 21:27:47 +00:00
Cam Hutchison 6c454945ff proto/prehog: Sync with source of truth in cloud repo (#63752)
* proto/prehog: Sync with source of truth in cloud repo

Sync the prehog proto files from the cloud repo as they are the source
of truth. These have diverged a little, largely in non-functional ways.
The CTA enum was missing `CTA_USAGE_REPORT`, now added. The rest is just
comments and some ordering.

This makes it easier to keep in sync in future as the files can just be
copied without needing to manually move changes across.

* proto/prehog: Regenerate Go/TS proto code

Regenerate the Go / Typescript code from the prehog proto from the
resync changes. Performed with:

    make grpc/host
2026-03-04 04:54:43 +00:00
Dan Share 36120b30cc [Browser MFA] Add protobuf and config (#63831)
Improve comments

grpc, lint, test fix

Update tf docs

Update tf integration

Fix login test

Address comments

Fix test

Move ValidateBrowserMFAChallenge rpc to MFA service

Fix service test

Address comments

Don't materialise browser authentication

Remove browser auth materialisation in test

Convert validate browser mfa to complete browser mfa
2026-03-02 08:47:56 +00:00
Alan Parra 1b96139023 chore: Bump golangci-lint to v2.10.1 (#63939)
* Fix "builder.WriteString(fmt.Sprintf(...))" calls

* chore: Bump golangci-lint to v2.10.1

* Bump e/

* Fix a few more WriteString/Sprintf occurrences
2026-02-19 13:04:57 +00:00
Maxim 375ca9f296 [Connect] Update types for ResourceConstraints support (#63492)
* types: Update protos for Teleterm support of ResourceConstraints

* fixup: Resolve test/story type errors from proto field changes
2026-02-06 17:47:09 +00:00
Grzegorz Zdunek 34c079541e Connect: read automatic updates configuration from Windows registry (#63281)
* Replace `GetDownloadBaseUrl` RPC with `GetConfig`

* Implement reading ToolsVersion and CdnBaseUrl from system registry

* Read values from `getConfig()` instead of `getDownloadBaseUrl` and `process.env`

* Use UAC updater when app is configured with env vars

* Fix typos

* Handle tools version being 'off'

* Safely read values from `GetConfigResponse`

* Fix ordering in proto

* Non-official -> Unofficial

* Add TODO about docs

* Use switch-case instead of if-else

* Bring back if-else
2026-02-05 10:06:22 +00:00
Grzegorz Zdunek 336379e17f Connect: switch Windows installer to dual mode (#62910)
* Switch installer to dual-mode

* Customize NSIS updater to disallow attempts to update per-machine installations if update is triggered from per-user instance

* Make `assertTshInProgramFiles` more strict

Reading Program Files path should be done using Windows API instead of env var that can be overridden.

* Add RPC to check if VNet service is installed

* Show warning and disable auto-start if there is no VNet service

* `GetWindowsSystemService` -> `CheckPreRunRequirements`

* `CheckPreRunRequirements` -> `CheckInstallTimeRequirements`

* Customize `forAll` option with VNet message

* Check for per-machine installation in system registry

* Fix vars with PreRun in the name

* Link to source file from the electron-builder repo, add commit hash

* Read per-machine location from Go instead of via PowerShell

* `IsPerMachineInstallResponse` -> `GetInstallationMetadataResponse`

* Define `GetInstallationMetadata` handler in separate file

* Fix tests failing on "updates not wrapped into act"
2026-02-05 09:22:49 +00:00
Dustin Specker d1ca8ddee0 Add workload cluster service (#62865)
* feat(lib/services): add WorkloadCluster interfaces

* feat(lib/auth): add WorkloadCluster service

* feat(api/client): support WorkloadClusters

* feat(lib/services): add local workload cluster

* feat(lib/services): add workload cluster to preset editor role

* gen: run make dump-preset-roles

* feat(lib/services): support parsing workload cluster events

* feat(lib/auth): start non-cloud workload cluster service

* feat(lib/auth): initialize local workloadcluster service

* feat(web/packages): add WorkloadCluster
2026-01-28 16:35:22 +00:00
Tiago Silva 067be631a5 Add usage reporting for AI-generated session summaries (#63179)
This change adds tracking for AI-generated session summaries so we can monitor feature usage and token costs.

Two new events are introduced:

- `SessionSummaryAccessEvent` tracks when users view AI summaries and which session types and resources are accessed.
- `SessionSummaryCreateEvent` tracks when summaries are generated, including input and output token counts for cost and capacity planning.

Events are aggregated in 15-minute windows by session type (SSH, Kubernetes, database, desktop) and resource name.

User access data is added to `UserActivityReport` via a new `SessionSummariesAccessedRecord`. AI generation metrics are reported in a new `IdentitySecuritySummariesGeneratedReport`, which tracks token usage per resource.

All resource names are anonymized with HMAC-SHA-256 before submission.

Signed-off-by: Tiago Silva <[email protected]>
2026-01-28 12:48:57 +00:00
Nick Marais 7b3fe4ce26 feat: GHA + K8s guide improvements (#62778)
* Add IaC info alert to welcome step

* Add conditional info alert to "allow any branch" input

* Rename "done" button (to "finish")

* Add repo restriction help text

* Ensure "refs/heads/" prefix for branch input

* Add code panel to Welcome step

* Add `inProgress` mode to CodePanel

* Shift CodePanel left on finish step

* De-emphasise final button and make prior steps clearer

* Explain how to apply terraform template

* Improve manual label entry

* Update labels field label

* Enforce wildcard label

* Update label values format (OR)

* Explain workflows on "main branch"

* Clarify prerequisites

* Improve groups and users entry

* Copy tweak on Configure Access step

* Add groups and users validation

* Add kubernetes cluster selector

* Fix Terraform template tests

* Move cluster select to Setup Workflow step

* Tweak copy warning wording

* With emphasis not clarity

* Replace "setup" with "set up"

* Make cluster selector async searchable

* Fix lint issue

* Fix lint issue (again)
2026-01-27 13:11:15 +00:00
af83bdc83a Implement TDPB Support for Proxy (#62591)
* saving progress

* Proxy working with legacy web client

* a bit of cleanup and refactoring. Removed unecessary 'WriteTo' implementations on TDP/TDPB messages.

* Refactoring and code cleanup around tdpb message handling and translation

* Get translation set up

* A bit more cleanup

* Update TDP MFA util to utilize new MFA service protos

* Remove MFA messages from translation interceptors. They're not needed since MFA is handled before we start proxying the connection.

* Add 'PingerFunc' adapter to latency monitor

* More cleanup and refactoring around TDP setup and translation.

* Added tests for desktop proxy with each permutation of client/server dialects.

* Remove redundant and/or dead code.

* More refactoring

* Advertise TDPB as a subprotocol when handling websocket upgrade requests

* Fixes from integration testing

* Update usage of LatencyStats after renaming some fields

* Add a few more TDPB unit tests

* Remove comment

* Add a couple tests for 'handshakeData'

* Light cleanup

* * Remove unnecessary warning logs from MFA flow
* Add test case for TDPB MFA flow
* Remove obsolete 'tdpMFACodec'

* Update Go TDPB implementation after protobuf 'oneof' refactor.

* more cleanup

* Proxy alpn and username fixes

* The great refactor

* refactor aftermath

* Add explicit strict/permissive TDPB Decode implementations and fix test case that validates permissive decoding

* Missed recording_export during refactor

* not yet

* Fix a few refactor typos

* Cleanup TDP/TDPB proxy handler by refactoring disparate TDP/TDPB client handling.

* last bit of cleanup

* Clean up tdp/tdpb translation

* Remove commented out code

* Attempt to reduce some noise by refactoring package aliases.

* update comment

* fix lint errors

* more lint fixes

* last lint fixes

* Fix race in test setup

* Add license headers to new files

* Apply suggestions from code review

Co-authored-by: Zac Bergquist <[email protected]>

* Rename wsAdapter and re-implement it's 'ReadMessage' method with a re-usable buffer

* Move TDP/TDPB MFA ceremony implementations to tdp/tdpb/legacy packages.

* Improved godocs in tdpb package

* Address the lighter PR feedback.

* Drop tdp/legacy import aliasing

* fix unnecessary conversion

* Fix license

* Apply suggestions from code review

Co-authored-by: Przemko Robakowski <[email protected]>
Co-authored-by: Zac Bergquist <[email protected]>

* Fix ping/pong matching

* * Rename 'isMFAResponse' to 'asMFAResponse'
* Fix surrounding comments

* fix comment

* Do not send empty error messages to client

* Fix some TDPB/TDP translation layer oversights

* Fix incorrect protobuf representation of MouseWheel's 'delta'. Should be int32, not uint32.

* Fix quoting in error string

---------

Co-authored-by: Zac Bergquist <[email protected]>
Co-authored-by: Przemko Robakowski <[email protected]>
2026-01-26 15:00:24 +00:00
Hugo Shaka 22c4407c5d Allow editor preset to read autoupdate agent reports (#62947)
* Allow editor preset to read autoupdate agent reports

* update preset role dumps
2026-01-19 21:13:42 +00:00
dependabot[bot]andAlan Parra ec59f57287 chore(deps): bump github.com/sigstore/cosign/v3 from 3.0.3 to 3.0.4 (#62801)
* chore(deps): bump github.com/sigstore/cosign/v3 from 3.0.3 to 3.0.4

Bumps [github.com/sigstore/cosign/v3](https://github.com/sigstore/cosign) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/sigstore/cosign/releases)
- [Changelog](https://github.com/sigstore/cosign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sigstore/cosign/compare/v3.0.3...v3.0.4)

---
updated-dependencies:
- dependency-name: github.com/sigstore/cosign/v3
  dependency-version: 3.0.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* Tidy all modules

* fix: Bump google.golang.org/api to v0.259.0. Tidy.

* Address API deprecations

* Run `make grpc`

* Run `make grpc` again

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alan Parra <[email protected]>
2026-01-14 16:34:57 +00:00
Grzegorz ZdunekandRafał Cieślak f0714decaf Fix launching AWS IC from Connect (#62796)
* Add `sub_kind` and `permission_sets` to `App` message

* Allow launching AWS IAM IC

* Add AWS domain to allowlist

* Fix makeApp helper

* Add story

* Validate path and host parts, add test

* Support US gov partition addresses

* Update proto message

* Use more realistic publicAddr in test

---------

Co-authored-by: Rafał Cieślak <[email protected]>
2026-01-14 14:57:48 +00:00
Tiago Silva c3c1425908 Add support for multiple Host CAs in AccessGraph registration (#62611)
Updates the RegisterRequest proto to support multiple Host CA certificates
by introducing a new host_ca_pems repeated field while maintaining backwards
compatibility by deprecating the existing host_ca_pem field. This enables
proper authentication during Host CA rotation and HSM scenarios where
multiple certificates may be active simultaneously.

Signed-off-by: Tiago Silva <[email protected]>
2026-01-06 17:30:05 +00:00
a46f16d3ce TDPB Message Definitions (#62100)
* Add protobuf definitions for tdpb

* * Re-add separate announce/acknowledge shared directory messages
* Add missing 'bytes_written' field to 'SharedDirectoryResponse'
* Use new MFA service protos in MFA messages which will bring in fewer dependencies

* Add typescript generation of TDPB protos

* Refactor legacy/types.proto by pulling 'Metadata' and various MFA device messages definitions into their own files. This eliminates the new MFA service's dependency on legacy/types.proto and drastically reduces the transitive dependencies of tdpb.proto.

* Apply suggestions from code review

Co-authored-by: Zac Bergquist <[email protected]>
Co-authored-by: Dan Share <[email protected]>

* Add '_ms' suffix to latency stats message.

* Update/add license headers

* Refresh protos and regenerate terraform docs

* Remove use of custom type option and 'MessageType' enums in favor of an 'Envelope' message utilizing oneof.
Follow the same approach for SharedDirectory request and response messages.

---------

Co-authored-by: Zac Bergquist <[email protected]>
Co-authored-by: Dan Share <[email protected]>
2025-12-31 16:59:49 +00:00
Nick Marais a4ac509bc5 feat: Add user event tracking to GHA+K8s guide (#62192)
* Initial refactor existing guide (ssh)

* Add provider and state reducer

* Welcome step

* Connect GitHub step

* Configure access step

* Finish step

* Add guide to integrations

* Add completion confirmation

* Add .tf file formatting in TextEditor

* Support updating TextEditor content

* Fetch and generate templates

* Add CodePanel component

* Add code panel to GitHub step

* Add code panel to access step

* Add code panel to finish step

* Add Kubernetes labels select component

* Add labels to state

* Add labels selector to access step

* Add welcome step to tracking usage events

* Add `useTracking`

* Track start and stop events

* Track steps events

* Track section events

* Track field events

* Track link events

* Track code copy events

* Extend tests

* Update stories

* Simplify react context usage

* Rename `captureSuccess` to `userEventCaptureSuccess`

* Rename file `tracking-tester.ts` to `trackingTester.ts`

* fix: Allow `:` in label values

* Reference frontend label matching logic in backend

* Allow `:` in label names and values

* Use Set one-liner

* Remove unnecessary else

* Fix test

* Allow spaces in label values
2025-12-16 17:56:53 +00:00
rosstimothy a6a6284c88 Scopes: validate scope when dialing (#61859)
The scope of the certificate presented by agents to the reversetunnel
server is now tracked and stored with the remoteConn. Dial requests,
both local and via peers, are now populated with the scope the user
is logged into which the reversetunnel server uses to enforce that
dials for hosts are only honored if the target scope matches.
2025-12-13 00:12:57 +00:00
Dan Upton 3d54918ea2 Add usage events for the MWI GitHub Actions <> Kubernetes Wizard (#61919)
* Add integration type for GitHub Actions + Kubernetes wizard

* Add step definitions for GitHub Actions + Kubernetes wizard

* Add `tp.ui.integrationEnroll.sectionOpen` event type

* Add `tp.ui.integrationEnroll.fieldComplete` event type

* Add `tp.ui.integrationEnroll.codeCopy` event type

* Add `tp.ui.integrationEnroll.linkClick` event type

* Remove unnecessary GitHub enterprise URL field

* Run prettier
2025-12-08 12:07:25 +00:00
Gabriel Coradoandrosstimothy d247df02c0 Add app auth config backend service (#61688)
* feat: add app auth config backend service

* refactor: code review suggetions

* refactor: remove app auth config resource subkind usage

* fix(cache): add missing event and test definition

* Apply suggestions from code review

Co-authored-by: rosstimothy <[email protected]>

* refactor: code review suggestions

* test(inventory): add missing app auth config service

---------

Co-authored-by: rosstimothy <[email protected]>
2025-12-03 23:09:01 +00:00