Hi,

I think what Gaurav means is what we know at DataStax as transitional
authenticator, which temporarily allows for partially enabled
authentication - when the system allows the clients to authenticate but
does not enforce it.

All in all, that should be included in CEP-31 - also CEP-31 aims to let the
administrators enable/disable and reconfigure authentication without a
restart so we could discuss whether such transitional mode would be needed
at all in that case.

Thanks,
- - -- --- ----- -------- -------------
Jacek Lewandowski


wt., 13 lut 2024 o 07:04 Jeff Jirsa <jji...@gmail.com> napisał(a):

> Auth is one of those things that needs to be a bit more concrete
>
> In the scenario you describe, you already have an option to deploy the
> auth in piece partially during the rollout (pause halfway through) in the
> cluster and look for asymmetric connections, and the option to drop in a
> new Authenticator jar in the class path that does the flexible auth you
> describe
>
> I fear that the extra flexibility this allows for 1% of operations exposes
> people to long term problems
>
> Have you considered just implementing the feature flag you describe using
> the existing plugin infrastructure ?
>
> On Feb 12, 2024, at 9:47 PM, Gaurav Agarwal <gaurav.iit...@gmail.com>
> wrote:
>
> 
> Dear Dinesh and Abe,
>
> Thank you for reviewing the document on enabling Cassandra authentication.
> I apologize that I didn't initially include the following failure scenarios
> where this feature could be particularly beneficial (I've included them
> now):
>
> *Below are the failure scenarios:*
>
>    - Incorrect credentials: If a client accidentally uses the wrong
>    username/password combination during the rollout, While restarting the
>    server to enable authentication, it will refuse connections with incorrect
>    credentials. This can temporarily interrupt the service until correct
>    credentials are sent.
>    - Missed service auth updates: In a large-scale system, a service "X"
>    might miss the credential update during rollout. After some server nodes
>    restart, service "X" might finally realize it needs correct credentials,
>    but it's too late. Nodes are already expecting authorized requests, and
>    this mismatch causes "X" to stop working on auth enabled and restarted
>    nodes.
>    - Infrequent traffic:  Suppose one of the services only interacts with
>    the server once a week. Suppose it starts sending requests with incorrect
>    credentials after authentication is enabled. Since the entire cluster is
>    now running on authentication, the service's outdated credentials cause it
>    to be denied access, resulting in a service-wide outage.
>
>
> The overall aim of the proposed feature flag would allow clients to
> connect momentarily without authentication during the rollout, mitigating
> these risks and ensuring a smoother transition.
>
> Thanks in advance for your continued review of the proposal.
>
>
>
> On Mon, Feb 12, 2024 at 2:24 PM Abe Ratnofsky <a...@aber.io> wrote:
>
>> Hey Guarav,
>>
>> Thanks for your proposal.
>>
>> > disruptive, full-cluster restart, posing significant risks in live
>> environments
>>
>> For configuration that isn't hot-reloadable, like providing a new
>> IAuthenticator implementation, a rolling restart is required. But rolling
>> restarts are zero-downtime and safe in production, as long as you pace them
>> accordingly.
>>
>> In general, changing authenticators is a risky thing because it requires
>> coordination with clients. To mitigate this risk and support clients while
>> they transition between authenticators, I like the approach taken by
>> MutualTlsWithPasswordFallbackAuthenticator:
>>
>> https://github.com/apache/cassandra/blob/bec6bfde1f3b6a782f123f9f9ff18072a97e379f/src/java/org/apache/cassandra/auth/MutualTlsWithPasswordFallbackAuthenticator.java#L34
>>
>> If client certificates are available, then use those, otherwise use the
>> existing PasswordAuthenticator that clients are already using. The existing
>> IAuthenticator interface supports this transitional behavior well.
>>
>> Your proposal to include a new configuration for auth_enforcement_flag
>> doesn't clearly cover how to transition from one authenticator to another.
>> It says:
>>
>> > Soft: Operates in a monitoring mode without enforcing authentication
>>
>> Most users use authentication today, so auth_enforcement_flag=Soft would
>> allow unauthenticated clients to connect to the database.
>>
>> --
>> Abe
>>
>> On Feb 12, 2024, at 2:44 PM, Gaurav Agarwal <gaurav.iit...@gmail.com>
>> wrote:
>>
>> Dear Cassandra Community,
>>
>> I'm excited to share a proposal for a new feature that I believe would
>> significantly enhance the platform's security and operational flexibility: *a
>> flexible authentication mechanism implemented through a feature flag *.
>>
>> Currently, enforcing authentication in Cassandra requires a disruptive,
>> full-cluster restart, posing significant risks in live environments. My
>> proposal, the *auth_enforcement_flag*, addresses this challenge by
>> offering three modes:
>>
>> *Hard:* Enforces strict authentication with detailed logging.
>> *Soft:* Monitors connection attempts (valid and invalid) without
>> enforcing authentication.
>> *None:* Maintains the current Cassandra behavior.
>>
>> This flag enables:
>> *Minimized downtime: *Seamless authentication rollout without service
>> interruptions.
>> *Enhanced security:* Detailed logs for improved threat detection and
>> troubleshooting.
>> *Gradual adoption:* Phased implementation with real-world feedback
>> integration.
>>
>> I believe this feature provides substantial benefits for both users and
>> administrators. Please see the detailed proposal here: Introducing
>> flexible authentication mechanism
>> <https://docs.google.com/document/d/1w649JAJdhVNQwQ9btXaaUopXlGjia6Sfgv281U9U7HY>
>>
>> I warmly invite the community to review this proposal and share your
>> valuable feedback. I'm eager to discuss its potential impact and
>> collaborate on making Cassandra even better.
>>
>> Thank you for your time and consideration.
>>
>> Sincerely,
>> Gaurav Agarwal
>> Software Engineer at Uber
>>
>>
>>

Reply via email to