Do the clients already send the credentials? That is the first thing to address.
Setting up a cluster for authentication (and authorization) requires a restart with the properties turned on in cassandra.yaml. However, the actual keyspace (system_auth) and tables are not created until the last node is restarted with the parameters changed. So, as you are changing each node, what you get is individual nodes that are requiring a password, but have no system_auth keyspace to authenticate against. Thus, clients cannot connect to these nodes. With open source Cassandra you cannot implement authentication without at least a brief degradation of service (as nodes can’t authenticate) and an outage (while the keyspace and tables are created, users are created, and permissions are granted). The outage can be relatively brief, depending on cluster size, CL, speed to restart, etc. With DataStax Enterprise, there is a TransitionalAuthenticator (and Authorizer) that lets you implement security without a full outage. You basically switch to the Transitional classes so that system_auth gets created. You create all your security objects. Then you switch to PasswordAuthenticator and CassandraAuthorizer. It takes two rolling bounces to get it done, but no outage. I have done both of the above. The DataStax stuff is very helpful, when downtime is a concern. Perhaps you could write your own implementation of the various interfaces to do something like TransitionalAuthenticator, but we have seen that the security interfaces change, so you will probably break/rewrite in later versions. (For one-time use, maybe it is worth a shot?) For anyone setting up new clusters, just start with security turned on so that you don’t end up in the It’s-Production-Can’t-Stop quandary above. Sean Durity From: Vigneshwaran [mailto:vigneshwaran2...@gmail.com] Sent: Wednesday, April 13, 2016 3:36 AM To: user@cassandra.apache.org Subject: Set up authentication on a live production cluster Hi, I have setup a 16 node cluster (8 per DC; C* 2.2.4) up and running in our production setup. We use Datastax Java driver 2.1.8. I would like to set up Authentication and Authorization in the cluster without breaking the live clients. From the references I found by googling, I can setup credentials for a new cluster. But it is not clear to me what steps I should take for setting up credentials in an already running cluster without breaking existing clients. Can someone clarify me or link me to a reference I may have missed? I'd really appreciate it. Thank you, Vigneshwaran ________________________________ The information in this Internet Email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this Email by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is prohibited and may be unlawful. When addressed to our clients any opinions or advice contained in this Email are subject to the terms and conditions expressed in any applicable governing The Home Depot terms of business or client engagement letter. The Home Depot disclaims all responsibility and liability for the accuracy and content of this attachment and for any damages or losses arising from any inaccuracies, errors, viruses, e.g., worms, trojan horses, etc., or other items of a destructive nature, which may be contained in this attachment and shall not be liable for direct, indirect, consequential or special damages in connection with this e-mail message or its attachment.