Commit Graph
71 Commits
Author SHA1 Message Date
3021392482 Add correct principal for agentless nodes on leaf clusters (#52803)
* Add correct principal for agentless nodes on leaf clusters

* Add host.cluster principle to initial principle list

* Add test to ensure principal is added correctly for agentless nodes

* Update lib/proxy/router.go

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

* Deduplicate principals before dialing

* Update lib/proxy/router_test.go

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

* Add comment explaining principal for leaf cluster nodes

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2025-03-14 17:17:56 +00:00
Alan Parra 911df3e313 Use loadBalancingConfig instead of loadBalancingPolicy (#51428) 2025-01-24 13:58:13 +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 ef859498bc Vendor gravitational/trace/trail in api (#51032)
* Vendor gravitational/trace/trail in api

Pulling in the trail package directly in api will allow the trace
module to shed the grpc-go dependency. This needs to land prior
to https://github.com/gravitational/trace/pull/112 being included
in a new version of trace.

There should be no noticable change in the api depdency tree since
it already depends on grpc-go. Some additional items from the
trace/internal package were also vendored within trail as needed.
Additionally, some of the public api of trail that was not being
consumed has been made private.

* fix: appease linters
2025-01-14 21:04:01 +00:00
rosstimothy 17edb10e43 Permit routing to agentless nodes with non-UUID metadata.name (#50915)
We suggest that a UUID is used for agentless nodes metadata.name
field, but we do not enforce it. This causes several edge cases
and slightly weird UX in places that expect the name to be a UUID.
Most notably, this presents dialing problems for the web ui as
described in https://github.com/gravitational/teleport/issues/50914.
To allowing dialing to function in all cases for these servers,
routing has been updated to permit matches on metadata.name, however,
the match is given a lower score then a match on a UUID. This should
permit dialing, though, it may still result in ambiguity.

Closes #50914.
2025-01-09 20:35:14 +00:00
rosstimothy c61461b4fd Improve client tools host resolution (#50175)
Host resolution performed because labels, fuzzy search, or predicate
expressions were supplied to commands that establish connections to
a single host has historically been performed client side in tsh.
While that works in most cases, it can prevent correctly
resolving hosts in some situations, i.e. when there are ambiguous
hosts and tsh is unaware that the cluster routing strategy is set
to ROUTE_TO_MOST_RECENT.

To improve the experience, a new ResolveSSHTarget was added to
Auth to allow host resolution to be performed server side. The
resolution works in a similar manner to, and was inspired by
GetSSHTargets. In the event that the new RPC is not implemented,
because the client is newer than Auth, tsh has also been updated
to pull the cluster networking config and address any host
ambiguity if allowed.

As a result tsh scp and tsh proxy ssh should be much more
tolerant to, and still permit access in situations where
ambiguous hosts are present for some amount of time. Prior to
this the only way to connect in these situations was to find
the UUID of the correct target instance and try again after
seeing an ambiguous host error.
2024-12-20 15:57:26 +00:00
rosstimothy 04d8ca10ad Remove unused logrus.Entry from proxy.Router (#50309) 2024-12-17 17:08:39 +00:00
Edoardo Spadolini ae023820b7 Disable peer/quic.TestBasicFunctionality for now (#50106) 2024-12-12 13:10:01 +00:00
Edoardo Spadolini bcbfa8192e Get rid of math/rand in favor of math/rand/v2 (#49294)
* Get rid of math/rand in favor of math/rand/v2

* Update retryutils to use rand.N

* Update e ref
2024-11-21 12:57:32 +00:00
Edoardo Spadolini 021d2a0a3f Fix lib/proxy/peer/quic for 32-bit builds (#49044) 2024-11-15 15:27:53 +00:00
Edoardo Spadolini bb5e64b44f QUIC proxy peering (#47587)
* Docs, utilities and protobuf definitions

* Server implementation

* Client implementation

* Tests

* Log the correct handshake error

* Use constants for stream and application error codes

* Avoid stuttering in const names

* Improve godocs and explanations

* Address test review comments
2024-11-14 18:40:37 +00:00
Edoardo Spadolini 0f3d691a79 Periodically check connectivity between peer proxies (#48838)
* Add ping RPC to grpc proxy peering

* Periodically check connectivity between peer proxies

* Replace deprecated jitter functions
2024-11-13 17:46:14 +00:00
Edoardo SpadoliniandAlan Parra 5c2bbfd6b7 Preparation for the QUIC proxy peering implementation (#48836)
* Move the QUIC proxy peering envvar check to lib/config

* Move lib/proxy/clusterdial to lib/peer/dial

* Move peer.clientConn to lib/proxy/peer/internal

* Require QUIC peering label to be set to "yes"

* Move peer TLS verification funcs to lib/proxy/peer/internal

* Move QUICServer to lib/proxy/peer/quic

* Avoid stuttering in lib/proxy/peer/quic

* Remove useless quic.ServerConfig.CipherSuites param

* Fix log style in proxy.peer.quic

* Move duplicatePeerMsg into the function scope

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

---------

Co-authored-by: Alan Parra <alan.parra@goteleport.com>
2024-11-13 16:06:01 +00:00
Zac Bergquist c7765fa7f1 Fix incorrect usages of "it's" (#48252) 2024-10-31 23:35:30 +00:00
rosstimothy 24e8b68f3a Generalize resource watchers (#47561)
Consolidate resource watchers into a single watcher that leverages
generics. While most of the resource watchers were similar, some
resources have some one off functionality. These watchers have not
been touched, however, all that could be refactored to use the
generic watcher easily were.
2024-10-28 18:49:57 +00:00
Nic Klaassen 0a0d4137db eliminate rsa.GenerateKey and lib/auth/native (#47768) 2024-10-21 20:55:22 +00:00
Edoardo Spadolini 3e75921c8a Convert lib/proxy/peer to slog (#47649)
* Convert lib/proxy/peer to slog

* .

* style compliance with RFD 0154
2024-10-17 12:55:00 +00:00
rosstimothy 0f02047d2e Convert resource watchers to use slog (#47560)
The logrus logger was left in place for now and will be removed
once teleport.e has been converted.
2024-10-15 15:42:25 +00:00
Nic Klaassen 235b348aad update key algorithm for agentless dials (#47241)
* update key algorithm for agentless

* fix tests
2024-10-08 19:44:15 +00:00
Edoardo Spadolini 9cd659e1aa Scaffolding for QUIC proxy peering (#47216)
* Simplify peer server TLS

* Make the peer clientConn generic

* Mock implementation of QUIC proxy peering

* Convert the peer server to slog

* QUICServer docs

* go mod tidy
2024-10-07 15:24:32 +00:00
Nic Klaassen c15825c751 use configured algorithms for dynamic SSH host certs (#46329)
* dynamic SSH host certs use configurable algorithms

* lazily PrecomputeKeys everywhere

* slightly speed up TestTSHConfigConnectWithOpenSSHClient
2024-09-11 19:21:50 +00:00
Edoardo Spadolini 7cb9cbad5a Derive dynamic cryptographic configurations from *service.Connector (#43937)
* Derive dynamic cryptographic configurations from *service.Connector

* Clean up unused code

* Added missing godocs

* fix TextProxyGRPCServers
2024-07-25 07:33:01 +00:00
Forrest c653a844f1 add ability to disable unqualified hostname lookups (#42952) 2024-06-20 20:20:16 +00:00
rosstimothy 7fe7a6b2a0 Replace dependencies on lib/auth with lib/authclient (#41623)
* Remove authclient.Client/ClientI/NewClient aliases in lib/auth

* Remove WebSessionReq aliases in lib/auth

* Remove GithubAuthResponse aliases in lib/auth

* Remove GithubAuthRequest aliases in lib/auth

* Remove KubeCSR alias in lib/auth

* Remove KubeCSRResponse alias in lib/auth

* Remove OIDCAuthResponse alias in lib/auth

* Remove OIDCAuthRequest alias in lib/auth

* Remove ValidateOIDCAuthCallbackReq alias in lib/auth

* Remove OIDCAuthRawResponse alias in lib/auth

* Remove CreateUserTokenRequest alias in lib/auth

* Remove SAMLAuthResponse alias in lib/auth

* Remove SAMLAuthRequest alias in lib/auth

* Remove ValidateSAMLResponseReq alias in lib/auth

* Remove SAMLAuthRawResponse alias in lib/auth

* Remove ValidateTrustedClusterRequest alias in lib/auth

* Remove ValidateTrustedClusterRequestRaw alias in lib/auth

* Remove ValidateTrustedClusterResponse alias in lib/auth

* Remove ValidateTrustedClusterResponseRaw alias in lib/auth

* Remove AuthenticateUserRequest alias in lib/auth

* Remove ForwardedClientMetadata alias in lib/auth

* Remove PassCreds alias in lib/auth

* Remove OTPCreds alias in lib/auth

* Remove SessionCreds alias in lib/auth

* Remove AuthenticateSSHRequest alias in lib/auth

* Remove SSHLoginResponse alias in lib/auth

* Remove TrustedCerts alias in lib/auth

* Remove AuthoritiesToTrustedCerts alias in lib/auth

* Move auth.HostFQDN to authclient

* Move auth.WithClusterCAs, auth.DefaultClientCertPool and auth.ClientCertPool to authclient

* Switch alpn proxy to use authclient.CAGetter instead of auth.ReadProxyAccessPoint

* Use a smaller scoped interfaces in lib/proxy/peer to remove lib/auth dependency

* Move auth.TryCreateAppSessionForClientCertV15 to authclient

* Move auth.ErrNoMFADevices to authclient

* Move access point interfaces to authclient. Aliases left behind to prevent breaking builds

* remove lib/auth dependency from lib/reversetunnelclient

* fix lints

* fix license

* Bump e ref to include gravitational/teleport.e#4174

* Use authclient.Client in new tctl diag commands

* Stop using auth.UserTokenType aliases
2024-05-16 17:34:58 +00:00
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
Noah Stride 0bd99702a1 Switch existing error reporting for tracing to use new helper (#40662)
* Switch existing trace error reporting to use `apitracing.EndSpan`

* Add deferred trace error reports to tbot

* Optimize for @espadolini limited horizontal editor length
2024-04-19 14:45:39 +00:00
Forrest 82281e1191 route based on match quality score (#40559) 2024-04-18 23:02:26 +00:00
Nic Klaassenandrosstimothy 680ac535ce fix: return OpaqueAccessDenied for NotFound remote cluster errors (#40571)
* fix: return OpaqueAccessDenied for NotFound errors

This commit modifies OpaqueAccessDenied to return an identical generic
NotFound error whether the input error is NotFound or AccessDenied.
The commit also updates all call sites of OpaqueAccessDenied to use it in
the paths where there is any error fetching the resource as well as when
access is denied.

It doesn't do much good to return AccessDenied errors as NotFound, if
they don't match the NotFound error you would get if the resource really
didn't exist.
It's trivial to tell the errors apart and discover the existence of a
resource you shouldn't be allowed to access.
The commit attempts to mitigate that issue and properly hide the
existence of resources the user should not be allowed to list.

* remove changes unrelated to remote clusters

* improve doc comment

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

* make sure gRPC errors match

* fix integration test

---------

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2024-04-18 19:01:01 +00:00
Edoardo Spadolini e96f103954 Fix some gRPC-tunneled connections (#40632)
* Fix some gRPC-tunneled connections

* Fix tests checking the return value of dial()
2024-04-18 16:11:00 +00:00
rosstimothy 1aec5414f1 Replace constants from trace with equivalents defined in teleport (#39307)
* Remove logging from circuit breaker

The logging is never output, and if it was would be very verbose.
Instead of dropping the level down to trace the logger is removed
entirely.

* Add constants from trace library

The logging functionality in trace is being removed in an upcoming
release. To prepare the logging component keys are copied from trace
into teleport.

* Convert trace.ComponentFields to teleport.ComponentFields

* Replace trace.Component with teleport.ComponentKey

* Replace trace logging constants
2024-03-14 13:04:29 +00:00
Edoardo Spadolini 6629d9a5df Remove MaxConcurrentStreams in proxy peering (#39218) 2024-03-12 02:38:39 +00:00
Noah StrideandEdoardo Spadolini c11bddc5f2 Refactor Presence service to add ListRemoteClusters, context.Context and returning updated/created RemoteClusters (#38694)
* Wire context/returning through local svc and add ListRemoteCluster

* Propagate changes through to cache

* Propagate changes up

* Remove marshal options from GetRemoteCluster

* Fix tests in lib/services/local

* Fix tests

* Add test for PresenceService_ListRemoteClusters

* Add removal TODO

* Add retry to UpdateRemoteCluster

* Fix more tests

* Fix linting

* Remove unused Create and DeleteAll RPCs

* Fix test

* Add GetAndUpdateRemoteCluster

* Add test for GetAndUpdateRemoteCluster

* Update lib/services/local/presence.go

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

* Update lib/services/local/presence.go

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

* Update lib/services/local/presence.go

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

* Rename GetAndUpdate to Patch

* Exit early if we know conditional update will fail

* prevent modifying revision

* Update tests

* Add `clear()`

* Fix test/lint failures

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
2024-03-05 15:56:00 +00:00
rosstimothy d7b814010e Add ClusterNetworkingConfig support to cluster configuration RPC service (#38590)
* Remove marshal options from GetClusterNetworkingConfig

* Add ClusterNetworkingConfig support to cluster configuration RPC service

Extends the clusterconfigv1.Service to implement RPCs for interacting
with ClusterNetworkingConfig. The various GetClusterNetworkingConfig
interfaces were also all updated to remove the marshal options since
they were never used and served no purpose.
2024-02-27 22:29:53 +00:00
rosstimothy ab9fe0e735 Increment connect_to_node_attempts_total during dial attempts (#36633)
During refactoring performed in #18370 the counter was moved but
never used outside of registration. This restores incrementing the
counter for dial attempts and improves error reporting in traces
in the router.
2024-01-16 14:11:33 +00:00
Alex McGrath 4437c66cf6 Remove TELEPORT_UNSTABLE_UNLISTED_AGENT_DIALING option (#36517)
* remove `TELEPORT_UNSTABLE_UNLISTED_AGENT_DIALING` option

* remove TestSSHLoadAllCAs test

* update test plan
2024-01-10 17:56:09 +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
Mike Jensen 05adc2d422 Limit GRPC Active streams (#33936)
Originally there was a default limit of 100 max concurrent streams, however in 2017 the GRPC team removed this default: https://github.com/grpc/grpc-go/pull/1624

With the recent HTTP/2 Rapid Reset DoS, it is now being encouraged to re-introduce a limit.  The fix requires this value to be configured in fact: https://github.com/grpc/grpc-go/pull/6703
2023-10-27 15:26:07 +00:00
fd73320933 Require SSH prefix in router.DialHost connections (#33000)
* Require SSH prefix in proxySubsys connections

* Move prefix assertion into router.DialHost()

* Wrap conn separately

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

* Allow multiple writes to satisfy prefix requirement

* Add comment about concurrent calls

* Advance pointer even when err != nil

* Minimize code for finding smaller entity

* Use pointer to advance

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

* Test in parallel

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

* Wrap the error.

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

* Wrap the error.

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

* More specific error assertions

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2023-10-18 20:43:46 +00:00
rosstimothy 24ebac905b Track user connections across clusters (#32688)
Ensure that `proxy_ssh_sessions_total` is incremented in both the
root and the leaf cluster if a session to a node in the leaf cluster
is established through the root cluster. This now also prevents
leaf clusters from terminating during a graceful shutdown if there
is an active connection that was created from the root.

Fixes #32605.
2023-10-04 15:35:11 +00:00
Alex McGrathandForrest Marshall e0086909cc Dont allow directly dialing to servers not in inventory (#30323)
* Dont allow directly dialing to servers not in inventory

add direct dial escape hatch

* Fix failing unit test

* Fix TestProxySSH

* Fix TestTraitsPropagation

* resolve comment

* fix non-multiplexed trusted cluster setup in tsh test suite

* Fix TestProxySSH

* wait on nodes

* Skip the flaky check for TestSSHLoadAllCAs

---------

Co-authored-by: Forrest Marshall <forrest@goteleport.com>
2023-08-29 11:52:55 +00:00
Brian Joerger a33d8caa70 Remove gRPC error interceptor aliases; update e ref. (#31011) 2023-08-25 02:43:02 +00:00
Brian Joerger cf6473feb9 Add gRPC error interceptors to API client (#30578)
* Move gRPC error intercetpors to api/utils/grpc/interceptors.

* Use error interceptors in api client and mock server.

* Apply suggestions from CR.

* Unwrap FromGRPC errors in middleware.

* Use gRPC auth service in tests instead of external example service.

* It's gRPC!!!

* Fix unit test.

* Add error interceptor to proxy client.

* Fix merge conflict.
2023-08-24 23:27:06 +00:00
Marco André Dinis 859898635f Use Amazon EICE to connect into EC2 instances (#30632)
* Use Amazon EICE to connect into EC2 instances

This PR adds a new method to SSH into EC2 instances.
It uses the Amazon EC2 Instance Connect Endpoint to do so.

You can read more about the capabilities/limitations of this feature
here
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html

From the Teleport point of view, this uses the AWS OIDC Integration to
call the AWS APIs.
This connection mode is similar to the Agentless mode, where Teleport
connects to the OpenSSH daemon on the target server.
Except, that with this mode there's no required set up on the target
machine (no CAs are being used).

An overview of the flow when the user tries to SSH into a node:
- an SSH Public Key is sent to the target EC2 Instance
- a connection is made to the EC2 Instance Connect Endpoint using
  websockets, which in turn pipes the connection to the Private IP of
  the EC2 Instance

* review pt1

* pass CA for tests

* add godocs to OpenTunnelEC2

* fetch proxy public address jit

* add docs and move key generation to native package

* remove tcp socket
2023-08-24 16:38:51 +00:00
Forrest 4e66a6fc67 support case-insensitive routing option (#29320)
* support case-insensitive routing option

* update docs
2023-08-17 00:48:19 +00:00
Anton Miniailo 419b88eb91 Remove returning Teleport version on dialing a host (#29799)
It was required for compatibilty reasons - v13 proxy could connect to v12 agents,
which didn't support signed PROXY headers. But we don't need it in v14.
2023-08-03 02:40:44 +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
Zac Bergquist 29e5a0c473 Make tctl build for Windows (#25447)
* Add a no-op syslog impl for Windows

* Break tctl's dependency on lib/srv

tctl's auth client depends on the lib/reversetunnel package in order
to dial the auth server via reverse tunnel. This package in turn
depends on lib/srv/forward and lib/srv, which is a bunch of
Linux-specific code for Teleport services (re-exec, etc).

By extracting the client side code for dialing via reverse tunnels
into its own package, we can now build tctl for Windows with the
following incantation:

    CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build -o tctl.exe ./tool/tctl
2023-05-24 20:44:18 +00:00
Andrew LeFevre 68feffbf82 fix connecting to agentless leaf nodes (#25206)
* fix connecting to agentless leaf nodes

Pass user and role information to Auth server signing OpenSSH cert
so avoid user/role lookup errors if the target node is on a leaf
cluster. Also use role and trait information from the current
connection rather than the backend to support role impersonation.

* make protobuf changes backwards-compatible
2023-05-02 17:39:47 +00:00
rosstimothy a5898a2a99 Convert tsh ssh to use the proxy transport service instead of ssh (#23228)
* Convert tsh ssh to use the proxy transport service instead of ssh

In an effort to reduce latency establishing sessions `tsh ssh` is
migrating away from connecting to the Proxy via SSH in favor of
using gRPC. The SSH handshakes with the Proxy increase latency in
situations where the distance between geolocations of the client
and Proxy are large. TLS handshakes used by the gRPC service have
proven to reduce latency by ~20% in the same scenario.

A new `lib/client.ClusterClient` has been introduced that should
be used instead of `lib/client.ProxyClient` to connect to a Teleport
cluster. Most of the functionality within the `ClusterClient` was
a direct copy from the `ProxyClient`.

The `lib/client.TeleportClient` now has a `ConnectToCluster` method
which will connect to both the Proxy and Auth service via the
`api/client.ProxyClient` which first attempts to use gRPC and reverts
back to SSH to preserve backwards compatability. The `ClusterClient`
should be passed around and reused instead of following the
established pattern of `tc.ConnectToProxy` followed by a
`proxy.ConnectToCluster` to get an `auth.ClientI`.

Additionally some of the `agentless` package was refactored to reduce
dependencies and allow it to work with connections to the Proxy that
originated via gRPC instead of SSH.

Changes to the integration tests are mostly to accomodate IP Pinning
and ensure that it works for both connections established via SSH
and gPRC.

This is the final PR needed to complete #19812.

* fix typos and unify span attributes

* pass node name to ConnectToNode

* simplify jump host resetting
2023-04-04 21:31:39 +00:00
rosstimothy 7573204fef Validate proxy peer identity (#23392)
Closes #23230

Proxy peer clients now validate that any connections established to
a peer have the expected UUID. This prevents clients from connecting
to incorrect peers if the `peer_public_addr` is shared by multiple
proxies, or is a load balancer.

In the event that a connection is established to an incorrect peer
the connection is closed and a error is written to the logs. The
gRPC connection should be attempted multiple times and eventually
land on the correct peer. However there may be some degradation
of service until the peer connections are all properly established.
2023-03-23 13:12:59 +00:00