Speaking with my operator hat on, I would want to know if there's a common pattern that my end users hit so that I can better educate them or provide tools (e.g. vaults) to help them manage the required complexity.
Cheers, Derek On Tue, Oct 11, 2022 at 10:06 AM Miklosovic, Stefan < stefan.mikloso...@netapp.com> wrote: > "but we should consider logging why it was rejected." > > Why? What is the use case? Why is it important for you to know what > somebody tried to create a role with password "aaaaaaaaaa" (it will not be > shown), just mentioning that they tried to create a password with a lot of > repeating characters? What is the added value here? > > I need to double check if warnings are logged as well. I'll get back to > you. > > > ________________________________________ > From: Derek Chen-Becker <de...@chen-becker.org> > Sent: Tuesday, October 11, 2022 17:47 > To: dev@cassandra.apache.org > Subject: Re: [Discuss] CEP-24 Password validation and generation > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is > safe. > > > > I know we log that the password change attempt was made, but we should > consider logging why it was rejected. As part of that, we may want to > consider how we format that message to make it easy for an auditing system > to parse. We should never log the actual password, or even a redacted > version; apologies if it sounded like I was suggesting that. > > Cheers, > > Derek > > On Tue, Oct 11, 2022 at 9:36 AM Miklosovic, Stefan < > stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>> wrote: > I dont follow, sorry. What logs do you mean? What would you like to see? > > The auditing framework we already do have in place will log that somebody > tried to create (or alter) a role with this and that password and it failed > (password would be redacted). If you use "with generated password", that > password will not be even shown in audit log. I am not completely sure if > the warning is logged too if password is not valid (I do think that only > CQL command itself is audit-logged). > > The configuration of validator is in cassandra.yaml. Folks can review that? > > I am sorry if I am missing something here, could you expand what you mean? > > To Josh: > > You are probably right but it is so easy to bypass that it is questionable > why it is actually there. All it takes is to do "alter role myself with > generated password" (literally), 5 times in a row and you can set the > original one back. One positive fact is that such password, even same as > the original one, would still have to be valid, but it just might be same > as it was. > > ________________________________________ > From: Derek Chen-Becker <de...@chen-becker.org<mailto: > de...@chen-becker.org>> > Sent: Tuesday, October 11, 2022 17:14 > To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org> > Subject: Re: [Discuss] CEP-24 Password validation and generation > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is > safe. > > > > On top of what Josh said, a corresponding requirement here would be > auditing. A password complexity and/or history policy is one piece of > security posture, but is itself insufficient to be considered "secure". > What kind of logs will this new policy checker emit that the folks > responsible for security for a given cluster can parse, process, and report > on? > > Cheers, > > Derek > > On Tue, Oct 11, 2022 at 9:07 AM Josh McKenzie <jmcken...@apache.org > <mailto:jmcken...@apache.org><mailto:jmcken...@apache.org<mailto: > jmcken...@apache.org>>> wrote: > if we do that, we should also restrict the frequency how often a user can > change the password. Lets think this through. If the depth of historical > verification is 5 passwords, a user just has to regenerate a password 5 > times in a row an he can use the same one > I may be misunderstanding, but this strikes me as in the "we can only do > so much to prevent people from doing stupid things" category. If someone's > so hell-bent on circumventing their company's attempts at security they're > probably much more at risk of running unidentified attachments or giving > out credentials over the phone rather than finding clever ways to work > around annoying password rotation rules on their db accounts right? > > On Mon, Oct 10, 2022, at 4:08 PM, Miklosovic, Stefan wrote: > Hi Brad, > > your link about not enforcing regular password expiration for users is > spot on. For these reasons I decided to not expand that CEP in that > direction. Sure, technically possible, but practically questionable. I > think that all these guides and recommendations should be looked at from > the perspective of the system they are meant to be implemented in. > Enforcing password to be changed in a database system is rather interesting > take. After I briefly took a look, I do not think there is a database on > the market which is enforcing this. On the other hand, for example, Neo4j > forces you to change the password on the first login as the default one is > "neo4j" for user "neo4j". This does make sense to implement for Cassandra > as well. I do consider password "cassandra" for role "cassandra" very > insecure and it is not forced by anybody to change it. However, it is quite > interesting problem how to achieve that. > > Also, the reason I want to leave out historical verification of passwords > in (at least the initial) implementation is that if we do that, we should > also restrict the frequency how often a user can change the password. Lets > think this through. If the depth of historical verification is 5 passwords, > a user just has to regenerate a password 5 times in a row an he can use the > same one. So implmenting this without restricting how often he can change > his password does not make sense. We can indeed explore this further but I > feel like the initial implementation should not deal with this for now. > > When it comes to section 5.1.1.2 of NIST document, as already mention at > the bottom of the CEP, we used Appendix A of this (1) to model what the > good password should be. Your link is way more descriptive though. > Particularly interesting points are these: > > - Passwords obtained from previous breach corpuses. > - Dictionary words. > - Repetitive or sequential characters (e.g. ‘aaaaaa’, ‘1234abcd’). > - Context-specific words, such as the name of the service, the username, > and derivatives thereof. > > I believe that points 1), 2) and 4) can be implemented easily as checking > the password against a dictionary. The library we want to use is able to > check the password against a dictionary. Dictionary check can be also > implemented as a separate ticket which would just expand the functionality > of DefaultPasswordValidator. I do not have a problem to include dictionary > check into the first iteration as well. > > Repetitive or sequential characters are already covered in the POC > implementation. > > The document you linked also contains this: > > Verifiers SHOULD offer guidance to the subscriber, such as a > password-strength meter [Meters], to assist the user in choosing a strong > memorized secret. This is particularly important following the rejection of > a memorized secret on the above list as it discourages trivial modification > of listed (and likely very weak) memorized secrets > > We are already doing this, quite intelligently, by telling a user what is > wrong with his password that it can not be used (e.g. that it does not > contain so and so number of specific characters). The "meter" is also there > - we have three levels - OK password, password with a warning and failed > password. We inform a user about the strength of his password retroactively > - we do not tell him what the password should be before he tries to set one > however I think that is acceptable when using Cassandra and cqlsh in > console environment. > > (1) https://pages.nist.gov/800-63-3/sp800-63b.html#appA > ________________________________________ > From: Brad <bscho...@gmail.com<mailto:bscho...@gmail.com><mailto: > bscho...@gmail.com<mailto:bscho...@gmail.com>>> > Sent: Monday, October 10, 2022 17:43 > To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto: > dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>> > Subject: Re: [Discuss] CEP-24 Password validation and generation > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is > safe. > > > > I would suggest reviewing the guidelines in sec in 5.1.1.2 of NIST Special > Publication 800-63B< > https://pages.nist.gov/800-63-3/sp800-63b.html#memsecretver> and the NCSC > Password policy: updating your approach - NCSC.GOV.UK<http://NCSC.GOV.UK>< > http://NCSC.GOV.UK>< > https://www.ncsc.gov.uk/collection/passwords/updating-your-approach#PasswordGuidance:UpdatingYourApproach-Don'tenforceregularpasswordexpiry > > > > Regards, > > Brad > > > On Mon, Sep 19, 2022 at 7:27 AM Miklosovic, Stefan < > stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto: > stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto: > stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto: > stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>> > wrote: > Hi list, > > together with my colleague Jackson Fleming we put together CEP-24 about > password validation and password generation in Cassandra. > > https://cwiki.apache.org/confluence/x/QoueDQ > > We are looking forward to discuss this CEP with you in depth. > > The outcome of this thread would be to sort out any issues / concerns you > have so we might eventually vote and implement that in upstream if our > contribution is found to be useful. > > There is a reference implementation provided we would like to build our > solution on top. > > Regards > > Stefan Miklosovic > > > > > -- > +---------------------------------------------------------------+ > | 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 | > +---------------------------------------------------------------+ > > > > -- > +---------------------------------------------------------------+ > | 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 | > +---------------------------------------------------------------+ > > -- +---------------------------------------------------------------+ | 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 | +---------------------------------------------------------------+