Hi Dinesh, This certainly looks like a nice addition to the operator's tools for securing cluster access. Out of curiosity, is there anything in this work that would *preclude* a different authentication scheme for internode at some point in the future? Has there ever been discussion of pluggability similar to the client protocol? Also, am I correct in understanding that this would allow for multiple certificates for the same identity (e.g. distinct cert per node)? I certainly understand the decision to keep things simple and have all nodes share identity from the perspective of operational simplicity, but I also don't want to get in a situation where a single compromised node would require an invalidation and redeployment on all nodes in the cluster.
Cheers, Derek On Fri, Jun 2, 2023 at 12:57 PM Dinesh Joshi <djo...@apache.org> wrote: > > 1. Is there an expectation that this would be used alongside internode > and client TLS? Would the certificates be the same, different, or is that > an implementation detail for the specific deployment to determine? > > > I am not sure what you mean by this would be used alongside internode and > client TLS? The mutual TLS authentication allows the server to authenticate > the client's identity using a client TLS certificate. The authenticators > we're adding enable this functionality. There isn't an expectation that the > same certificates be used. In fact, clients should not use the same > certificates as the internode. > > > 1. For some reason I'm having trouble understanding the internode > authentication portion of this ticket (authenticating a client with a > certificate makes sense vs just authenticating the connection). Why is this > needed on top of the connection-level TLS we have now? > > > Current connection-level TLS only secures the TLS connection. It doesn't > authenticate the peer. This adds the ability to authenticate the peer in > addition to securing the TLS connection. > > > 1. When an operator or DBA is looking to add a new identity is that > just handled as part of the new CQL statement or is there some certificate > management required on the nodes? I assume it's just the CA that needs to > be placed on the nodes to establish trust in the certificate itself then > authz happening within C* after determining the certificate can be trusted, > but want to be certain. > > > Each deployment is different so certificate management isn't scope of the > database itself. However, the operator can rotate the certificates using an > external agent and Cassandra will pick them up through SSL hot reloading. > We don't just rely on a CA trusting the client certificate, we extract the > identity from the certificate (for example: SPIFFE) and ensure that it is > allowed to access the cluster. This means someone can't just obtain a > certificate signed by a CA that Cassandra cluster trusts and connect to it. > > > 1. As a minor nit, should we include static certificates in the test > data? I see they expire in 2033 which is a fair way off, but I wonder if it > would make sense to generate the certificates as part of the test setup. > > Thanks for the feedback! > -- +---------------------------------------------------------------+ | Derek Chen-Becker | | GPG Key available at https://keybase.io/dchenbecker and | | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | +---------------------------------------------------------------+