Commit Graph
90 Commits
Author SHA1 Message Date
rosstimothy e95f3d3ed5 Start using authclient.Client/ClientI/NewClient (#41539)
Consumes the new auth client created in #41460. The changes introduced
were performed with a series of gofmt rewrite rules.

```bash
$ find ./lib/auth -type f -name '*.go' -exec gofmt -w -l -r "ClientI -> authclient.ClientI" {} \;
$ find ./lib/auth -type f -name '*.go' -exec gofmt -w -l -r "Client -> authclient.Client" {} \;
$ find ./lib/auth -type f -name '*.go' -exec gofmt -w -l -r "NewClient -> authclient.NewClientI" {} \;
$ find . -type f -name '*.go' -exec gofmt -w -l -r "auth.ClientI -> authclient.ClientI" {} \;
$ find . -type f -name '*.go' -exec gofmt -w -l -r "auth.Client -> authclient.Client" {} \;
$ find . -type f -name '*.go' -exec gofmt -w -l -r "auth.NewClient -> authclient.NewClient" {} \;
```
2024-05-15 14:09:14 +00:00
Alex McGrath 65459e872e Remove support for disabling second factor authentication (#40956)
* dont allow disabling second factor

* update docs for 2fa change

* add environmental variable to work around disabled 2fa

* check if its cloud

* update todos

* add a test

* introduce insecure test mode

* fixes for tests
2024-05-10 11:57:34 +00:00
Brian Joerger 8c328a880b MFA for App Access - tsh proxy app and Teleport Connect (#40857)
* Add key.DBTLSCert and key.AppTLSCert helper methods.

* Add TSH_APP_LOCAL_PROXY user certs requester option.

* Break up app login into multiple methods.

* Generalize cert checker local proxy middleware and add an app cert implementation.

* Use AppCertChecker for tsh proxy app.

* Add test check for proxy mfa certs being kept off disk.

* Apply changes to Teleport Connect.

* Addressed bl-nero's comments.

* Address comments from ravicious.

* Add proxy app cert ttl test.

* Restore v15 fallback for tsh proxy app session creation; Minor naming refactors.

* Add cluster flag to app logout.

* Refactor teleterm test to cleanup session MFA requirement.

* Address comments.
2024-05-06 19:29:53 +00:00
Brian Joerger 12c7689df5 Refactor GenerateUserCerts to create App Sessions (#39970)
* Add CreateAppSessionFromReq.

* Deprecate passing route_to_app.session_id in cert requests.

* Automatically create app sessions for app cert requests.

* Deprecate client use of CreateAppSession for app cert requests.

* Fix affected tests.

* Use traits and roles from existing user certificate for app sessions.

* Fix app access integration tests.

* go mod tidy.

* Fix TestTCP.

* Fix TestALPNSNIProxyAppAccess.

* Revert "go mod tidy."

This reverts commit cc6caa2485.
2024-04-25 05:13:55 +00:00
Noah Stride 955f86ba3e Thread context.Context through auth.Register and add OTel Tracing (#40597)
* Wire context.Context into `auth/register.go`

* Thread `context.Context` through `auth.Register` and add tracing

* Unwrap error before recording it in the span
2024-04-17 17:19:07 +00:00
Bartosz Leper 06fce3f449 Keep track of whether the user has a real password set (#39576)
* Keep track of whether the user has a real password set

* lint

* Some comments

* Fix TestCreateResources

* Fix e/ link

* Review

* Review

* Review

* Use early return on error in DeletePassword

* Fix the broken teleterm test
2024-04-10 10:28:05 +00:00
Rafał Cieślak 584fd5def7 Use dbcmd.WithPrintFormat only for preview of teleterm gateway command (#39906)
* Use dbcmd.WithPrintFormat only for preview of teleterm gateway command

* Update comments for GatewayCLICommand message

* Mark check funcs as helpers, verify args length first
2024-03-29 15:35:52 +00:00
Grzegorz ZdunekandRafał Cieślak 6b791738f4 Use Daemon.ResolveClusterURI instead of Storage.ResolveCluster to set a cluster in the cache (#39732)
* Use `Daemon.ResolveClusterURI` instead of `Storage.ResolveCluster` to set a cluster in the cache

* Fix tests in `daemon_test.go`

* Add regression test

This test fails on master but not on this branch. It's largely based
on existing MFA tests that we have in integration/proxy/teleterm_test.go.

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2024-03-22 17:16:22 +00:00
Rafał Cieślak c7682b0004 Disable client cache in teleterm local proxy integration tests (#39417)
* Cast logged URIs to strings

* Remove unnecessary client.Close()

addToCache is called only if c.clients[clusterURI] returns nil.
Get calls getFromCache and returns early if there's a client in the cache
already.

* Disable client cache in teleterm local proxy integration tests
2024-03-15 19:37:37 +00:00
rosstimothy 20888bf130 Convert SetAuthPreferences usages to new Create/Update/Upsert API (#38895)
Migrates callers off the deprecated API and onto the new API so that
AuthPreferences can be protected via optimistic locking when appropriate.
2024-03-14 22:05:20 +00:00
Hugo ShakaandNoah Stride 1bdb045a12 Enable automatic upgrade server by default (#38937)
* Enable automatic upgrade server by default

This commit means the proxy now serves automatic upgrade channels by
default. The default channel is "default" and its version is the
teleport proxy binary version.

This commit also fixes a bug with the automatic update version server
returning `teleport.Version` instead of `"v"+teleport.Version` when the
version was too high. This was not a critical issue because agents are
supposed to tolerate versions not prefixed with 'v'.

* lint

* thread safety

* Update lib/automaticupgrades/channel.go

* Update lib/config/configuration.go

Co-authored-by: Noah Stride <noah.stride@goteleport.com>

* fix tests and lint

---------

Co-authored-by: Noah Stride <noah.stride@goteleport.com>
2024-03-05 23:28:40 +00:00
rosstimothy a3d65adb62 Deprecate (TeleportClient) ConnectToProxy (#38219)
This legacy connection mechanism uses SSH to connect to the Proxy
and tunnel the Auth connection. It was replaced by the
(TeleportClient) ConnectToCluster which uses gRPC to reduce latency
when connecting to the cluster.
2024-02-15 16:48:59 +00:00
rosstimothy b7318b5c7e Enable errorlint via golangci-lint (#37669)
Adds the new linter and configures it to prevent direct error
comparisions and type assertions in favor of errors.Is and errors.As.
All current violations caught by the linter have been updated
accordingly.
2024-02-02 15:59:24 +00:00
Anton Miniailoandrosstimothy a576cb2a91 Remove assigning by default first alphabetical kube cluster to a user. (#37242)
* Remove assigning by default first alphabetical kube cluster to a user.

* Fix tests.

* Address review comments

* Fix tests.

* Fix error message.

* Use default value.

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

* Fix error message.

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

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2024-01-29 22:47:34 +00:00
Rafał Cieślak 21f036548c lib/teleterm app access: Add middleware for handling expired certs (#36520)
* Add middleware for app gateways

* Accommodate for app gateways in integration tests

The previous version of tests depended on receiving helpers.TeleInstance
from higher up. It was then used to generate valid and expired user certs,
as well as to get client.TeleportClient.

proxy.Suite (Kube tests) and dbhelpers.DatabasePack (db tests) expose
helpers.TeleInstance so it wasn't a problem. However, appaccess.Pack,
which we're going to use for app access tests, does not expose it.

To work around that, we introduce two new fields to gatewayCertRenewalParams,
tc (which accepts client.TeleportClient) and generateAndSetupUserCreds.
These two fields get rid of the dependency on helpers.TeleInstance.

* Add integration tests for app gateways
2024-01-11 16:48:40 +00:00
Hugo Shaka 54ede1e11c Fix teleport.e integrations builds (#35996)
* Move automaticupgrades packages in `lib/automaticupgrades`

* Fix `kube-agent-udpater` Dockerfile
2023-12-27 14:39:42 +00:00
Rafał Cieślak 83e03670da Add support for MFA in kube proxies in Connect (#35772)
* Improve error handling in gateway/kube_test.go

* Make gatewaytest.mustGenCertSignedWithCA public

It will be needed to generate and then return cert without saving it to
a file.

* Move AddMetadataToRetryableError to where it's actually needed

Cluster.reissueDBCerts is called in two scenarios:

* During the request to create a db gateway: this request is made by
  the Electron app, so we need to add metadata to let the app know that
  this error can be resolved by relogin.
* When someone attempts to use the proxy but the user cert has expired:
  this happens outside of the Electron app request-response cycle and
  thus adding metadata is unnecessary.

* Make gatewaytest.MustGenCACert public, accept CA for MustGenAndSaveCert

This will make writing tests where we need to supply either Cert or KeyPath
and CertPath a little bit easier.

* Kube gateways: Store cert in memory instead of on disk

* Add ctx to testGatewayCertRenewal

If a gateway requires MFA, daemon.Service.CreateGateway can potentially
block forever. To work around this, we want the tests to pass a context
around so that we can set a timeout on the context in MFA tests.

* Convert test function args into structs

This will make it easier to pass webauthnLogin for tests that need MFA.

* Refactor handling of mock tshd events service addr

* Add tests for MFA

* Do not save kube key in local agent

Connect issues a new cert for every gateway anyway.

* Check kube certs after issue in teleterm gateways

This makes sure that Connect does the same checks as tsh.

* reissueDBCerts → reissueGatewayCerts

* Pass mfaPrompt from daemon to GatewayCreator

This also fixes a problem where the mfaPrompt passed from GatewayCreator
was not the expected one. daemon.Service.ResolveClusterURI attaches
MFAPromptConstructor on clusterClient. However, GatewayCreator does not
call daemon.Service.ResolveClusterURI, it calls
clusters.Storage.ResolveCluster which does not attach the proper prompt
constructor.

* Refactor GetPromptReasonSessionMFA into WithPromptReasonSessionMFA

* Verify that PromptMFA on tshdEventsService gets called during MFA ceremony

* reissueKubeCert: Get rid of unused mfaRequired var

* Use fake storage in gateway CRUD tests

Now that daemon.Service.CreateGateway needs a TeleportClient, we have
to use a fake storage that's able to provide it.

* Fix synchronization between webauthnLogin and PromptMFA

* Use sync/atomic for function call counts
2023-12-21 07:46:42 +00:00
Hugo ShakaandBernard Kim 3472a60e13 automatic upgrades: use default version channel everywhere (#35342)
* Use default upgrade channel

This commit:
- initializes default upgrade channels based on the server features
- makes all integrations use the upgrade channels instead of hitting
  hardcoded s3 bucket
- makes the version channel return its own version if the target
  version is too high
- makes the NoVersion handler properly: returned as an error. This way
  soneone relying on the version getter doesn't have to check
- moves the version kube-agent-updater lib in main teleport libs
- add tests for noVersion channels

* Update lib/web/join_tokens.go

Co-authored-by: Bernard Kim <bernard@goteleport.com>

* address marco's feedback

* address marco's feedback pt.2

---------

Co-authored-by: Bernard Kim <bernard@goteleport.com>
2023-12-18 19:57:32 +00:00
Hugo Shaka 856bb39ea9 Add a version server in the proxy + use it in agent chart (#35150)
This PR adds an embedded [version server](https://goteleport.com/docs/architecture/agent-update-management/#version-server-and-source-of-truth) in the proxy to address: https://github.com/gravitational/cloud/issues/6773

The version server can be configured through `teleport.yaml`:

```yaml
proxy_service:
  enabled: "yes"
  automatic_upgrades_channels:
    stable/cloud:
      forward_url: https://updates.releases.teleport.dev/v1/stable/cloud
    preview/cloud:
      static_version: v12.5.4
```

The forwarded call results are cached for a minute.
2023-12-12 01:03:45 +00:00
rosstimothy 1515dc0114 Remove CheckAndSetDefaults from types.Resource (#35561) 2023-12-08 18:05:38 +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
Edoardo Spadolini 93be07558e Deflake TestIntegrations/Discovery again (#34953)
* Fix integration/helpers.WaitForClusters

* fixes to all remote cluster integration tests

* remove leftover debug message

* use random load balancer
2023-11-27 15:26:09 +00:00
Anton MiniailoandNic Klaassen a4be12fbcf Reorganize service config test fields (#34208)
* Reorganize process config test fields

* Move PollingPeriod back from Testing field

* Fix comment text

Co-authored-by: Nic Klaassen <nic@goteleport.com>

---------

Co-authored-by: Nic Klaassen <nic@goteleport.com>
2023-11-16 05:29:07 +00:00
Anton Miniailo c979952058 Fix PROXY protocol handling of dedicated kube listener with TLS routing (#34317)
* Fix PROXY protocol handling of dedicated kube listener with TLS routing

* Improve test by checking both addresses in multiplexed mode
2023-11-15 20:36:23 +00:00
Andrew Burke 42822dab68 Deflake HTTP_PROXY tests (#33614)
This change rewrites a few HTTP_PROXY tests to be less flaky.
2023-11-08 17:01:05 +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
Anton Miniailo 8a1be0cfd5 Improve UX for headless kube proxy by giving user more time when reissuing expired certificates (#33728)
* Improve UX for headless kube proxy by giving user more time when reissuing expired certs.

* Add support for '--set-context-name' to 'tsh proxy kube'
2023-10-23 20:56:35 +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
STeve (Xin) Huang 103dd6e7b5 Fix an issue tsh fails to connect Proxy behind TLS-terminated loadbalancer in separate port mode (#33374) 2023-10-12 18:33:15 +00:00
Anton MiniailoandTiago Silva a26b6d88bf Fix Proxy Kube listener behavior regarding PROXY protocol usage (#32893)
* Fix Proxy Kube listener behavior regarding PROXY protocol usage

We always provided Proxy's PROXYProtocolMode to the listnening kube server,
but its listener could be already behind alpn multiplexed listener,
which already consumed PROXY protocol.

* Use clusterNetworkConfig

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

* Improve wording.

* Add option for testing proxy kube multiplexer

* Modify option for setting IgnoreSelfConnections on kube's multiplexer

* Fix spelling

---------

Co-authored-by: Tiago Silva <tiago.silva@goteleport.com>
2023-10-08 23:16:04 +00:00
Rafał Cieślak 847a1b1167 Implement waiting for Connect My Computer node to join cluster (#30905)
* Add daemon.Service.ResolveClusterURI

* Accept agents dir through command line flag

tshd needs to know this out of band, so that when the Electron app tells
it to watch for host UUID file for a specific cluster, the Electron app
can send just the profile name of the cluster instead of an arbitrary path
on the computer.

* Implement WaitForConnectMyComputerNodeJoin in tsh daemon

* wait: Use addEventListener instead of onabort

* Make TshAbortController emit abort event only once

This aligns it with a regular AbortController, which also emits the event
only once.

* Refactor how types are imported in tshd fixtures

* Implement WaitForConnectMyComputerNodeJoin in Electron app

* createAbortController: Add signal.aborted, use emitter.once

* Improve wait function based on Deno implementation

https://github.com/denoland/deno_std/blob/72d6e6641e3cd39ae69fba89a78feab354018ef0/async/delay.ts#L39

* Add a comment about the events package
2023-09-21 11:43:10 +00:00
Noah StrideandFireDrunk c7cc451667 [Buddy 30860] Added --insecure flag to tbot (#31093)
* Added --insecure flag to tbot; Added test; Added test-setup

* Removed old file

* Review comments

* Updated tests; Rework CAPins & CAPath verification; Split functions

* Cleanup old debug lines

* Cleaned up tests; Remove unnecessary InsecureSkipVerify;

* Add back InsecureSkipVerify to fix Authentication

* renamed DefaultBotConfigOpts parameter; remove some stale debug code; restored wrongfully delted InsecureSkipVerify;

* remove stale newline

* Improved warnings

* Updated tbot usage example

* Fix failing test; Cleanup Makefile target

* Removed unused config option from OnboardingConfig; Fixed import order

* Rename test; Rework if statement; Fix newline

* Updated shell script to comply with shellcheck; added example yaml to gitignore

* Remove example file

* Tidier comments for reg code

* behavior

* Remove unused var from Makefile test-go-unit-tbot

* Further simplify makefile

---------

Co-authored-by: FireDrunk <thijs.cramer@gmail.com>
2023-09-11 08:16:18 +00:00
STeve (Xin) Huang d7a7a7e9eb Attempt to refactor gateway CLI command (#31035) 2023-08-30 19:19:51 +00:00
STeve (Xin) Huang b6f43ed6d7 Teleport Connect kube gateway to save kubeconfigs in kube dir (#29952)
* Teleport Connect kube gateway to use a temporary dir for kubeconfig

* pass kubeconfigs dir

* getKube before creating gateway

* use name predicate
2023-08-09 13:40:59 +00:00
Tiago Silva 1aa6acde91 Remove deprecated code from Teleport codebase (#30120)
This PR removes from the Teleport codebase the following deprecated
code:
- Kubernetes Secret storage compatibility layer: This piece of code was
  introduced in Teleport 11 to help users migrating from on-disk
  credentials storage to Kubernetes secret storage. Since then, all
  users should already migrated to Kube secret storage and it's no
  longer needed.
- Expected `no kubernetes_users/kubernetes_groups` error message:
  The error message changed in Teleport 13 and was left for compatiblity
  reasons since Auth server supported `kubernetes_services` running
  `v12.x.x`.
- References to `kube.` SNI prefix for Kube access

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2023-08-07 20:50:35 +00:00
Tiago Silva 731599aa04 kube: Implement full namespace jail (#29859)
This PR implements a feature where it's possible to restrict access to
namespace scoped `CustomResources`.

To be able to deserialize unknown Kubernetes objects, we keep a
`serializer.CodecFactory` per cluster where we register not only the default
types - such as `Pods`, `Statefulsets`... -, but also all the
`CustomResourceDefinitions` that are namespaced.

With the list of RBAC supported resources and the serializer, Kube
access identifies if we support Kubernetes per-Resource RBAC for that
type - the match happens based on resource `kind` and `apiGroup` -
and enforces the RBAC rules.

Namespace controls access to `CustomResources`. When a user as an allow
rule for a namespace - similar to the rule bellow -, he has access to
all resources within that namespace including the custom resources.

```yaml
kubernetes_resources:
- kind: namespace
  name: "someNamespace"
  verbs: ['*']
```

The list of `CustomResources` is constantly updated and monitored in
intervals of `5m`. If a new CRD is created between two iteration cycles,
Teleport will only enforce RBAC after the resource and codecs are
updated.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2023-08-07 10:42:26 +00:00
Brian Joerger 69f24f59cd Fix call count race condition; Fix grpc server stop race condition; Make timeout less aggressive. (#29880) 2023-08-01 21:46:54 +00:00
STeve (Xin) HuangandRafał Cieślak b94a710d3e Connect Kube gateway part 4: frontend (#29376)
* Connect Kube gateway part 4: frontend

* add help msg to terminal

* try to fix eslint

* ClusterLogin: Handle empty targetUser in gateway

* make fix-license

* add check to test gateway.Kube.CLICommand

* code review comments

* add deprecation comments

* sendNotification: Use targetUri as a fallback

* Add deprecated commont to createTshKubeDocument

* Move updating doc status inside useAsync

* review comments

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2023-07-28 12:28:03 +00:00
STeve (Xin) Huang 2fad3badb7 Connect Kube gateway part 3: daemon create kube gateway (#29214)
* Connect Kube gateway part 3: daemon create kube gateway

* address code review comments
2023-07-20 16:07:32 +00:00
Rafał Cieślak fc49acb722 Add role setup for Connect My Computer in tshd (#28891)
* Ignore specific teleterm proto file rather than whole package

* clusters.Storage: Avoid unnecessary casting of URI back to string

* Storage.fromProfile: Move loading profile status to separate function

* Return client.TeleportClient together with clusters.Cluster

This is a stopgap to make clusters.Cluster a regular struct with no extra
behavior and a much smaller interface.

At the moment, almost all RPCs go through layers like these:

gRPC handler → daemon.Service → clusters.Storage → clusters.Cluster →
→ TeleportClient

As a result, clusters.Cluster has a gigantic interface that's hard to test.

Instead, we want to make it hold basic information about the cluster.
The real work will be done by collaborator structs which take clusters.Cluster
and TeleportClient as args. This way we can mock them out more easily in tests.

See the issue linked in the comment of clusters.Storage.GetByResourceURI
for more details.

* Make AddMetadataToRetryableError public

Since we're moving away from doing everything in clusters.Cluster, we'll
need to use this function from within the daemon package.

* Add IsRoot and IsLeaf methods to uri.ResourceURI

These methods will be used to return early if someone tries to set up
roles for a leaf cluster. Connect My Computer works with root clusters only.

* Add handler for creating Connect My Computer role

* Add test for calling GenerateUserCerts with bogus request ID

* Fix checking logins of existing role

* Remove commented out argument to ReissueUserCerts

* Add a stopgap comment to Storage.GetByURI

* Remove invalid doc links

* Ensure owner node label has expected value if role already exists

* Add unit test which checks RoleSetup.Run idempotency

* Add godoc for Resolver

* Simplify watcher equality check, add a comment

* Expand the comment for DropAccessRequests

* Fix position of Connect My Computer popover

* Integrate role setup with setup document

* Add temporary action to additional actions

This will be removed once the parent PR is approved. I just wanted to give
reviewers a shortcut to triggering the endpoint from the actual app.

* Add return type to createRole

* Add useRetryWithRelogin

* Wrap role setup in retryWithRelogin

* Remove useRetryWithRelogin in favor of retryWithRelogin & useCallback

* Remove CMC role setup from AdditionalActions

* Prettier fix

* Fix eslint
2023-07-20 11:42:22 +00:00
Brian Joerger 2099ccc746 Teleport Connect headless watcher (#28844)
* Implement headless watcher backend for Teleport Connect.

* Add headless watcher to tshd daemon service.

* Add SendPendingHeadlessAuthentication rpc to tshd events service.

* Add UpdateHeadlessAuthenticationState rpc to the daemon service.

* Address comments.
2023-07-19 02:56:24 +00:00
STeve (Xin) Huang 336518e0b5 Connect Kube gateway part 2: command provider (#28920)
* Connect Kube gateway part 2: command provider

* gateway.Database and gateway.Kube interface

* remove cmd.ProviderManager and fix integration test

* revert cluster.RootClusterName change for now as profile may not have key
2023-07-17 13:11:30 +00:00
Brian Joerger 5c9501235e Refactor Gateway Cert Reissuer and tshd events client (#28782)
* - Move tshd events client into the daemon service.

- Replace gatway cert reissuer with a more reusable retryWithRelogin
method.

* Resolve comments.
2023-07-11 20:50:16 +00:00
STeve (Xin) Huang a86283e261 Connect Kube gateway part 1: lib/teleterm/gateway (#28312)
* Connect Kube gateway part 1: lib/teleterm/gateway

* fix lint

* move IsDB/IsKube to resource URI

* address review comments

* config dir

* use ProfileDir instead of ConfigDir

* remove NewKubeForwardProxyWithListener
2023-07-10 12:58:23 +00:00
Tiago Silva e06fc88e98 Extend Teleport RBAC to support Kubernetes Verbs (#27096)
* Extend Teleport RBAC to suport Kubernetes Verbs

This PR extends Teleport per-Resource RBAC to support Kubernetes verbs
restriction. With this change it's possible to restrict certain actions
allowed by the underlying `kubernetes_users` and `kubernetes_resources`.

Supported verbs:
- `get`
- `create`
- `update`
- `patch`
- `delete`
- `list`
- `watch`
- `deletecollection`

Fixes #27095

* address timr's comments

* assign wildcard to verbs for role <7

* address marco's reviews
2023-07-06 15:39:11 +00:00
rosstimothy 20559218ad Fix tsh windows builds (#28357)
#24864 added a dependency of lib/web into tsh which broke windows
tsh builds because lib/web transiently depends on lib/srv which
has linux specific code. This shuffles around a few things so
that lib/web is no longer importing lib/srv at all by:

- Indirectly using the srv.SessionController to apply session
control for web ssh sessions

- Moving the common reversetunnel interfaces into
reversetunnelclient since lib/reversetunnel imports
lib/srv/forward which imports lib/srv.

- Directly converting mysql client errors in the connection
tester instead of calling a common function.
2023-06-30 17:12:12 +00:00
Gavin Frazar 2fbed44f97 fix TestALPNProxyHTTPProxyBasicAuthDial flakiness (#26650)
* stop the node before resetting http proxy auth credentials,
  then start the node again which succeeds immediately,
  so that the test doesn't time out after 10 seconds waiting
  for the node to join due to random backoff/jitter.
2023-05-22 17:59:40 +00:00
STeve (Xin) Huang 89d17b5b91 TLS Routing behind ALB: tsh kube join (#26168)
* TLS Routing behind ALB: `tsh kube join`

* fix lint
2023-05-15 15:11:02 +00:00
STeve (Xin) Huang ac303343a0 TLS Routing behind ALB: access request Kube Pod search (#26099) 2023-05-12 13:10:20 +00:00
STeve (Xin) Huang b006a4aa71 TLS Routing behind ALB Connect support for SSH and Database access. (#25495)
* TLS Routing behind ALB Connect support for SSH and Database access.

* update/add comments
2023-05-09 13:11:12 +00:00